2020年9月19日 星期六

世界第一簡單機器學習

 世界第一簡單機器學習

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)


沒有留言:

張貼留言