【機器學習懶人包】從數據分析到模型整合,各種好用的演算法全都整理給你啦! | TechOrange 科技報橘
Search
Close this search box.

【機器學習懶人包】從數據分析到模型整合,各種好用的演算法全都整理給你啦!

【為什麼我們要挑選這篇文章】機器學習是人工智慧背後的基礎技術,透過機器學習,電腦可以自動分析數據並進行預測,優化系統的性能。現在有哪些常見的機器學習演算法?各有什麼優缺點?下文列出工程師常用的機器學習演算法,熟悉它們,將提升你的 coding 高度。(責任編輯:郭家宏)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 [email protected]

說到分類演算法,相信學過機器學習的人都能講出一兩個。

可是,你能夠如數家珍地說出所有常用的分類演算法,以及他們的特徵、優缺點嗎?例如,你可以快速地回答下面的問題嗎:

KNN 演算法的優缺點是什麼?
Naive Bayes 演算法的基本假設是什麼?
entropy loss 是如何定義的?
分類演算法調參常用的圖像又有哪些?

答不出來?別怕!一起來透過這篇文章,回顧一下機器學習分類演算法吧(本文適合已有機器學習分類演算法基礎的朋友)。

機器學習:電腦利用數據自主學習並優化性能

機器學習是一種能從數據中學習的電腦程式科學以及藝術,就像下面這句話:

機器學習是使電腦無需顯式程式碼就能學習的研究領域。
——阿瑟.塞繆爾,1959 年

不過還有一個更好的定義:

如果一個程式在使用既有的經驗(E)執行某類任務(T)的過程中被認為是「具備學習能力的」,那麼它一定需要展現出:利用現有的經驗(E),不斷改善其完成既定任務(T)的性能(P)的特性。
——Tom Mitchell, 1997

例如,你的垃圾郵件過濾器是一個機器學習程式,透過學習用戶標記好的垃圾郵件和常規非垃圾郵件,它可以學會標記垃圾郵件。系統用於學習的範例稱為訓練集。在此案例中,任務(T)是標記新郵件是否為垃圾郵件,經驗(E)是訓練數據,性能度量(P) 需要定義。例如,你可以定義正確分類的電子郵件的比例為 P。這種特殊的性能度量稱為準確度,這是一種有監督的學習方法,常被用於分類任務。

機器學習入門指南

監督學習:演算法從標記的數據中學習

在監督學習中,演算法從標記的數據中學習。在理解數據之後,該演算法透過將模式與未標記的新數據關聯,來確定應該給新數據賦哪種標籤。

監督學習可以分為兩類:分類和迴歸。

分類問題預測數據所屬的類別,例子包括垃圾郵件檢測、客戶流失預測、情感分析、犬種檢測等;迴歸問題則根據先前觀察到的數據預測數值,例子包括房價預測、股價預測、身高體重預測等。

機器學習新手的十大演算法之旅

分類:透過自變數判定應變數類別

分類是一種基於一個或多個自變數,判定應變數所屬類別的技術。

邏輯迴歸

邏輯迴歸類似於線性迴歸,適用於應變數不是一個數字的情況(例如,一個「是/否」的回應)。它雖然被稱為迴歸,但卻是基於根據迴歸的分類,將應變數分為兩類。

如上所述,邏輯迴歸用於預測二分類的輸出。例如,如果信用卡公司建構一個模型來決定是否通過客戶的信用卡申請,它將預測客戶的信用卡是否會「違約」。

首先對變數之間的關係進行線性迴歸以構建模型,分類的閾值假設為 0.5。

然後將 Logistic 函數應用於迴歸分析,得到兩類(是或否)的機率。

該函數給出了事件發生和不發生機率的對數。最後,根據這兩類中較高的機率對變數進行分類。

K-近鄰演算法(K-NN)

K-NN 演算法是一種最簡單的分類演算法,透過識別被分成若干類的數據點,以預測新樣本點的分類。K-NN 是一種非參數的演算法,是「懶惰學習」的著名代表,它根據相似性(如,距離函數)對新數據進行分類。

K-NN 能很好地處理少量輸入變數(p)的情況,但當輸入量非常大時就會出現問題。

支持向量機(SVM)

支持向量機既可用於迴歸也可用於分類。它基於定義決策邊界的決策平面。決策平面(超平面)可將一組屬於不同類的對象分開。

在支持向量的幫助下,SVM 透過尋找超平面進行分類,並使兩個類之間的邊界距離最大化。

SVM 中,超平面的學習是透過將問題轉化為使用一些某種線性代數轉換問題來完成的。(上圖的例子是一個線性核,它在每個變數之間具有線性可分性)。

對於高維數據,使用可使用其他核函數,但高維數據不容易進行分類。具體方法將在下一節中闡述。

核支持向量機

核支持向量機將核函數引入到 SVM 演算法中,並將其轉換為所需的形式,將數據映射到可分的高維空間。

核函數的類型包括:

前文討論的就是線性 SVM。
多項式核中需要指定多項式的次數。它允許在輸入空間中使用曲線進行分割。
徑向基核(radial basis function, RBF)可用於非線性可分變數。使用平方歐幾里德距離,參數的典型值會導致過度擬合。sklearn 中默認使用 RBF。
類似於與邏輯迴歸,sigmoid 核用於二分類問題。

徑向基核(RBF:Radial Basis Function )

RBF 核支持向量機的決策區域實際上也是一個線性決策區域。RBF 核支持向量機的實際作用,是建立特徵的非線性組合,將樣本映射到高維特徵空間,再利用線性決策邊界分離類。

因此,可以得出經驗是:對線性問題使用線性支持向量機,對非線性問題使用非線性核函數,如 RBF 核函數。

樸素貝氏(樸素貝葉斯)

樸素貝氏分類器建立在貝氏定理的基礎上,基於特徵之間互相獨立的假設(假定類中存在一個與任何其他特徵無關的特徵)。即使這些特徵相互依賴,或者依賴於其他特徵的存在,樸素貝氏演算法都認為這些特徵都是獨立的。這樣的假設過於理想,樸素貝氏因此而得名。

在樸素貝氏的基礎上,高斯樸素貝氏根據二項(正態)分佈對數據進行分類。

P(class|data) 表示給定特徵(屬性)後數據屬於某類(目標)的後驗機率。給定數據,其屬於各類的機率大小就是我們要計算的值。
P(class)表示某類的先驗機率。
P(data|class)表示似然,是指定類別時特徵出現的機率。
P(data)表示特徵或邊際似然的先驗機率。

步驟:

1、計算先驗機率
P(class) = 類中數據點的數量/觀測值的總數量
P(yellow) = 10/17
P(green) = 7/17

2、計算邊際似然
P(data) = 與觀測值相似的數據點的數量/觀測值的總數量
P(?) = 4/17
該值用於檢查各個機率。

3、計算似然
P(data/class) = 類中與觀測值相似的數量/類中點的總數量
P(?/yellow) = 1/7
P(?/green) = 3/10

4、計算各類的後驗機率

5、分類

某一點歸於後驗機率高的類別,因為從上可知其屬於綠色類的機率是 75%。

多項式、伯努利樸素貝氏是計算機率的其他模型。樸素貝氏模型易於建構,不需要複雜的參數疊代估計,這使得它對非常大的數據集特別有用。

決策樹分類

決策樹以樹狀結構建構分類或迴歸模型。它透過將數據集不斷分拆成更小的子集,來使決策樹不斷生長,最終長成具有決策節點(包括根節點和內部節點)和葉節點的樹。最初的決策樹演算法,採用了 Iterative Dichotomiser 3(ID3)演算法來確定分裂節點的順序。

資訊熵和資訊增益用於被用來建構決策樹。

資訊熵是衡量元素的無序狀態的程度的指標,即衡量資訊的不純度。

直觀上,資訊熵表示一個事件的確定性程度。資訊熵衡量樣本的同一性,如果樣本全部屬於同一類,則資訊熵為 0;如果樣本等分成不同的類別,則資訊熵為 1。

資訊增益測量獨立屬性間資訊熵的變化。它試圖估計每個屬性本身包含的資訊,構造決策樹就是要找到具有最高資訊增益的屬性(即純度最高的分支)。

其中 Gain(T,X) 是特徵 X 的資訊增益。Entropy(T) 是整個集合的資訊熵,第二項 Entropy(T,X) 是特徵 X 的資訊熵。

採用資訊熵進行節點選擇時,透過對該節點各個屬性資訊增益進行排序,選擇具有最高資訊增益的屬性作為劃分節點,過濾掉其他屬性。

決策樹模型存在的一個問題是容易過度擬合。因為在其決策樹建構過程中,試圖透過生成一棵完整的樹來擬合訓練集,卻降低了測試集的準確性。

通過剪枝技術可以減少決策樹的過度擬合問題。

整合演算法:單獨訓練模型並整合,提升預測結果

整合演算法是一個模組。從技術上說,整合演算法是單獨訓練幾個監督模型,並將訓練好的模型以不同的方式進行融合,從而達到最終的得預測結果。整合後的模型比其中任何一個單獨的模型都有更高的預測能力。

隨機森林分類器

隨機森林分類器是一種基於裝袋(bagging)的整合演算法,即自舉助聚合法(bootstrap aggregation)。整合演算法結合了多個相同或不同類型的演算法,來對對象進行分類(例如,SVM 的整合,基於樸素貝氏的整合或基於決策樹的整合)。

整合的基本思想,是演算法的組合提升了最終的結果。

深度太大的決策樹容易受度過擬合的影響。但是隨機森林通過在隨機子集上建構決策樹防止過度擬合,主要原因是它會對所有樹的結果進行投票,結果是所有樹的分類結果的投票,從而消除了單棵樹的偏差。

隨機森林在決策樹增長的同時為模型增加了額外的隨機性。它在分割節點時,不是搜尋全部樣本最重要的特徵,而是在隨機特徵子集中搜尋最佳特徵。這種方式使得決策樹具有多樣性,從而能夠得到更好的模型。

梯度提升分類器

梯度提升分類器是一種提升整合演算法。提升(boosting)演算法是為了減少偏差,而對弱分類器進行的一種整合方法。與裝袋(bagging)方法建構預測結果池不同,提升演算法是一種分類器的串列方法,它把每個輸出作為下一個分類器的輸入。通常,在裝袋演算法中,每棵樹在原始數據集的子集上並行訓練,並用所有樹預測結果的均值作為模型最終的預測結果;梯度提升模型,採用串列方式而非並行模式獲得預測結果。每棵決策樹預測前一棵決策樹的誤差,因而使誤差獲得提升。

梯度提升樹的工作流程:

1. 使用淺層決策樹初始化預測結果。
2. 計算殘差值(實際預測值)。
3. 建構另一棵淺層決策樹,將上一棵樹的殘差作為輸入進行預測。
4. 用新預測值和學習率的乘積作為最新預測結果,更新原有預測結果。
5. 重複步驟 2-4,進行一定次數的疊代(疊代的次數即為構建的決策樹的個數)。

分類器的性能判斷

混淆矩陣

混淆矩陣是一張表,這張表透過對比已知分類結果的測試數據的預測值,和真值表來描述衡量分類器的性能。在二分類的情況下,混淆矩陣是展示預測值和真實值四種不同結果組合的表。

多分類問題的混淆矩陣可以幫助你確認錯誤模式。

對於二元分類器:

假正例、假負例

假正例和假負例用來衡量模型預測的分類效果。假正例是指模型錯誤地將負例預測為正例。假負例是指模型錯誤地將正例預測為負例。主對角線的值越大(主對角線為真正例和真負例),模型就越好;副對角線給出模型的最差預測結果。

假正例:

下面給出一個假正例的例子。比如:模型將一封郵件分類為垃圾郵件(正例),但這封郵件實際並不是垃圾郵件。這就像一個警示,錯誤如果能被修正就更好,但是與假負例相比,它並不是一個嚴重的問題。

作者註:個人觀點,這個例子舉的不太好,對垃圾郵件來說,相比於錯誤地將垃圾郵件分類為正常郵件(假負例),將正常郵件錯誤地分類為垃圾郵件(假正例)是更嚴重的問題。

假正例(型 I 錯誤)——原假設正確而拒絶原假設。

假負例:

假負例的一個例子。例如,該模型預測一封郵件不是垃圾郵件(負例),但實際上這封郵件是垃圾郵件。這就像一個危險的信號,錯誤應該被及早糾正,因為它比假正例更嚴重。

假負例(型 II 錯誤)——原假設錯誤而接受原假設

上圖能夠清楚地說明上述指標。左圖男士的測試結果是假正例,因為男性不能懷孕;右圖女士是假負例,因為很明顯她懷孕了。

從混淆矩陣,我們能計算出準確率、精度、召回率和 F-1 值。

準確率

準確率是模型預測正確的部分。

準確率的公式為:

當數據集不平衡,也就是正樣本和負樣本的數量存在顯著差異時,單獨依靠準確率不能評價模型的性能。精度和召回率是衡量不平衡數據集的更好的指標。

精度

精度是指在所有預測為正例的分類中,預測正確的程度為正例的效果。

精度越高越好。

召回率

召回率是指在所有預測為正例(被正確預測為真的和沒被正確預測但為真的)的分類樣本中,召回率是指預測正確的程度。它也被稱為敏感度或真正率(TPR)。

召回率越高越好。

F-1 值

通常實用的做法是將精度和召回率合成一個指標 F-1 值更好用,特別是當你需要一種簡單的方法來衡量兩個分類器性能時。F-1 值是精度和召回率的調和平均值。

普通的通常均值將所有的值平等對待,而調和平均值給予較低的值更高的權重,從而能夠更多地懲罰極端值。所以,如果精度和召回率都很高,則分類器將得到很高的 F-1 值。

接受者操作曲線(ROC)和曲線下的面積(AUC)

ROC 曲線是衡量分類器性能的一個很重要指標,它代表模型準確預測的程度。ROC 曲線透過繪製真正率和假正率的關係,來衡量分類器的敏感度。如果分類器性能優越,則真正率將增加,曲線下的面積會接近於 1,如果分類器類似於隨機猜測,真正率將隨假正率線性增加。AUC 值越大,模型效果越好。

累積精度曲線

CAP 代表一個模型沿 y 軸為真正率的累積百分比,與沿 x 軸的該分類樣本累積百分比。CAP 不同於接受者操作曲線(ROC,繪製的是真正率與假正率的關係)。與 ROC 曲線相比,CAP 曲線很少使用。

以預測客戶是否會購買產品的模型為例,如果隨機選擇客戶,他有 50% 的機率會購買產品。客戶購買產品的累積數量會線性地增長到對應客戶總量的最大值,這個曲線稱為 CAP 隨機曲線,為上圖中的藍色線。而一個完美的預測,準確地確定預測了哪些客戶會購買產品,這樣,在所有樣本中只需選擇最少的客戶就能達到最大購買量。這在 CAP 曲線上產生了一條開始陡峭一旦達到最大值就會維持在 1 的折線,稱為 CAP 的完美曲線,也被稱為理想曲線,為上圖中灰色的線。

最後,一個真實的模型應該能儘可能最大化地正確預測,接近於理想模型曲線。

原文報導傳送門

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為〈来!一起捋一捋机器学习分类算法〉。首圖來源:Flickr CC Licensed)

更多演算法相關資訊

面對即將失效的摩爾定律,科學家用「稀疏學習演算法」打破深度學習的算力極限!
【打開演算法的黑箱子】用「臉部辨識」演算法指認罪犯,會出現什麼大問題?
1992 年的一種演算法,是微信用來審查敏感圖片的關鍵技術!