世界第一簡單機器學習
2019年4月
第1章 怎麼做迴歸?
- 正規化的方法分為兩種,Ridge迴歸盡可能減少大數值的係數,和Lasso迴歸增加數值趨近零的係數。
第2章 怎麼進行識別?
- 模型的輸出為權重w的函數,所以當w改變,誤差的值也會不同。遇到這樣的問題,我們可用梯度下降法(Gradient Descent)來求解。
- 由所有的訓練資料D計算梯度的方法,稱為批量梯度下降法(Batch Gradient Descent);將D分割成適當的大小,以此為單位計算梯度的方法稱為小批量梯度下降法(Mini-batch Gradient Descen);由D隨機選出一個資料,僅以此資料計算梯度的方法,稱為隨機梯度下降法(Stochastic Gradient Descent)。
- ID3是演算法是建立決策樹的最基本步驟。
- 亂度Entropy和資訊量
- 將原資料的亂度減去分割後的資料亂度,得到詢問可獲得的資訊量,該量成為資訊增益量Gain。
- 關於資料集算度的計算方法,除了上述的亂度(Entropy)之外,還有一種方法是以下面的式子計算吉尼係數(Gini Cofficient)。
Gini(D)=1-Pyes^2-Pno^2
- 奧卡姆剃刀(Occam's Razor),目的是「選擇符合資料且最單純的假說」。
- 決策樹會過於適應訓練資料容易發生過度學習(Overfitting)。
第3章 評估結果
- 要掌握機器學習未知資料時的性能。其中,最簡單的方法是,將手邊的資料分割成訓練用和評估用。稱為分割學習法,機器在學習時先不使用評估資料,等到要計算準確率時才使用。這樣一來就能模擬遇到未知資料的情況。
- 會影響訓練結果的超參數(Hyperparameter),比如線性迴歸中正則化須的權重數、決策樹訓練的樹木深度等等。調查配置訓練的超參數是否妥當,這個過程就稱為檢驗。若在檢驗作業中使用評估資料的話,評估用資料就不能算是未知資料了。
- 所以,使用分割學習法來評估性能時,一開始應該將資料分成訓練用、檢驗用、評估用三部分
- 對資料進行分割,資料的分割份數稱為折數(fold),通常會採用10折交叉驗證。
- 評估用資料元素數為1的分割法,另外稱為留一法(Leave-one-out)。
- 準確率是在評估資料中,正確辨識類別的資料比例。為了簡化說明,舉例二分類識別問題的評估法。這是有沒有罹患某種疾病、是不是垃圾信件等問題。符合預設條件的訓練資料為正例(positive)、不符合的資料為負例(negative)。
- 混淆矩陣(Confusion Matrix)
- 只有準確度是不夠的:未罹患疾病的人數遠比罹患疾病的人數還多的情況,也就是資料中的負例比正例多很多的意思。比如1000人中僅1人罹患疾病的極端情況,使用全部判定為負的分類器,這樣準確率會是0.999。為了能夠區分這樣的情況,我們需要以其他指標來評估機器學習的結果。
- 根據上表,準確度Accuracy= TP+TN / TP+FN+FP+TN (正解數除以全部資料數就是準確率)。
- 精確度Precision,這是分類器判定為正時,可以多麼相信該結果的指標。
Presision = TP / TP+FP (正確判定為正的數量除以分類器判定為positive的數量就是精確度)。
舉例:被判定罹患某種疾病且該診斷為正的正確比例。
- 召回率Recall=TP / TP+FN (正確判定為正的數量除以所有正例的數量就是召回率)。
例:對象資料中的所有病患中,有多少人被正確診斷罹患疾病。
- 精確度和召回率往往是此消彼長的關係,一邊數值高,另一邊數值就低。
舉例來說,罹患某疾病的症狀很明顯時,分類器才判定為正的精確率會高,不過這樣了話會忽略掉輕微症狀,造成召回率變低。相反地,優先提高召回率,稍微有一些症狀就判定為正,使用這樣的分類器,會導致雖然漏掉病患的情況減少,但可能造成很多沒有生病的人需要接受精密檢查。
- 於是,我們會用下面的式子定義綜合判斷精確率和召回率的指標F值。
F-measure = 2 X Precision x Recall / Precision + Recall
- 若是三種類別的情況,混淆矩陣會變成3x3。由混淆矩陣求出各類別的性能,平均後的數值為巨觀平均(Macro Average);由類別計算TP、FP、FN、TN相加後,除以資料數的數值為微觀平均(Micro Average)。
第4章 深度學習
- 卷積神經網路(Convolutional Neural Network)
- 前饋式神經網路(Feedforward Neural Network)
- softmax函數
- 反向傳播法(Backpropagation)
- 自動編碼器(Autoencoder)
- rectified liner函數,使用此函數的單元稱為ReLU(Rectified Linear Unit)。
- 使用Keras資料庫,Keras封裝了常用的TensorFlow深度學習庫,能夠做到更高階的敘述,可用簡潔的程式碼編寫深度學習的典型問題。
第5章 整體學習Ensemble Learning
裝袋法Bagging
隨機森林Random Forest
- 裝袋法、隨機森林是藉由改變使用的資料集,或者改變分類器的構成條件,做成不同的分類器。與此相對,不斷加入專門減少錯誤的分類器,形成反應不同的分類器集合,稱為提升法。
提升法Bossting
- AdaBoost(Adaptive Boosting):以變更權重的資料集訓練下一個的分類器,依序形成不同的分類器。後面做成的分類器會優先識別上一個分類器錯誤判斷的資料,具有與上一個分類器不同且能夠彌補弱點的效果。
- 另外一種方式是使用損失函數。以提升法結果作成的複合分類器,可用來定義損失函數。其中,追分的分類器會選擇損失函數值減少最多的。這種方式的提升法稱為梯度提升Gradient Boosting。
- 機器學習工具Weka內建diabets.arff資料。
第6章 非監督式學習
6.1.1 集群分析
6.1.2 階層式集群分析(Hierarchical Clustering)
- 群集間的相似度可用下面的方法定義:單一連結(Single Linkage)、完全連結法(Complete Linkage)、中心法(Centroid Method)、Ward法
- k-means法、EM演算法
EM演算法基本步驟跟k-means法相同,一開始先用亂數決定隨機的平均向量和共變異數矩陣(Covariance Matrix),這相當於在特定空間中隨意的場所放置隨意的常態分佈。
6.2 矩陣分解
- 假定用戶與商品之間存在幾項潛在因素。潛在因素是指,在分組用戶、商品時類似視點的條件,像是「女性」、「居住地」、「喜歡甜食」等等。但是,這些是在沒有監督的情況下從資料中選出,所以未必每個都能如此解釋。
- 交替最小平方法(Alternating Least Squares)。
- 非負矩陣分解(NMF)
- 分解機模型(Factorization Machine)
6.3 分割式集群分析(Partitional Clustering)
沒有留言:
張貼留言