【轉】機器學習--- 分類演算法詳解
感覺狼廠有些把機器學習和資料探勘神話了,機器學習、資料探勘的能力其實是有邊界的。機器學習、資料探勘永遠是給大公司的業務錦上添花的東西,它可以幫助公司賺更多的錢,卻不能幫助公司在與其他公司的競爭中取得領先優勢,所以小公司招聘資料探勘/機器學習不是為了裝逼就是在自尋死路。可是相比JAVA和C++語言開發來說,機器學習/資料探勘確實是新一些老人佔的坑少一些,而且可以經常接觸一些新的東西。還是趕緊再次抓住機會集中的再總結一下吧,不能再拖拖拉拉了。
其實資料探勘的主要任務是分類、聚類、關聯分析、預測、時序模式和偏差分析。本文先系統的介紹一下機器學習中的分類演算法,主要目錄如下:
常用分類演算法
Bayes
貝葉斯分類法是基於貝葉斯定定理的統計學分類方法。它通過預測一個給定的元組屬於一個特定類的概率,來進行分類。樸素貝葉斯分類法假定一個屬性值在給定類的影響獨立於其他屬性的 —— 類條件獨立性。
樸素貝葉斯的優缺點
- 優點
- 所需估計的引數少,對於缺失資料不敏感。
- 缺點
- 假設屬性之間相互獨立,這往往並不成立。(喜歡吃番茄、雞蛋,卻不喜歡吃番茄炒蛋)。
- 需要知道先驗概率。
- 分類決策錯誤率。
樸素貝葉斯的公式
- 樸素貝葉斯求解:
P(C|F1,...,Fn)=p(C)p(F1,...,Fn|C)p(F1,...,Fn)=p(C)∏i=1np(Fi|C)
Decision Tree
決策樹是一種簡單但廣泛使用的分類器,它通過訓練資料構建決策樹,對未知的資料進行分類。決策樹的每個內部節點表示在一個屬性上的測試,每個分枝代表該測試的一個輸出,而每個樹葉結點存放著一個類標號。
在決策樹演算法中,ID3基於資訊增益作為屬性選擇的度量,C4.5基於資訊增益比作為屬性選擇的度量,CART基於基尼指數作為屬性選擇的度量。
決策樹程式碼
- 1
決策樹的優缺點
- 優點
- 不需要任何領域知識或引數假設。
- 適合高維資料。
- 簡單易於理解。
- 短時間內處理大量資料,得到可行且效果較好的結果。
- 缺點
- 對於各類別樣本數量不一致資料,資訊增益偏向於那些具有更多數值的特徵。
- 易於過擬合。
- 忽略屬性之間的相關性。
- 不支援線上學習
決策樹公式
- 熵:
Entropy(S)=−∑pilogpi - 資訊增益:
Entropy(S,A)=Entropy(S)−∑v∈V(A)|Sv||S|Entropy(Sv) - 分裂資訊:
SplitInfoR=−∑j=1k|Dj||D|log2|Dj||D| - 增益比率:
GainRatio(R)=Gain(R)SplitInfoR(D) - 基尼指數:
Gini(S)=1−∑imp2i
SVM
支援向量機把分類問題轉化為尋找分類平面的問題,並通過最大化分類邊界點距離分類平面的距離來實現分類。
支援向量機的優缺點
- 優點
- 可以解決小樣本下機器學習的問題。
- 提高泛化效能。
- 可以解決高維、非線性問題。超高維文字分類仍受歡迎。
- 避免神經網路結構選擇和區域性極小的問題。
- 缺點
- 缺失資料敏感。
- 記憶體消耗大,難以解釋。
- 執行和調差略煩人。
支援向量機的公式
轉自研究者July: SVM的求解,先匯出12||w||2的問題轉化為求w,b的最優化問題,即凸二次規劃問題,妙。
從上圖我們可以看出,這條紅色的線(超平面)把紅色的點和藍色的點分開了。超平面一邊的點對應的y全部是-1,而另外一邊全部是1。
接著我們可以令分類函式:f(x)=ωTx+b。顯然x是超平面上的點時,f(x)=0。那麼我們不妨要求所有滿足f(x)<0的點,其對應的y等於-1,而f(x)>0則對應的y=1的資料點。(我盜用了很多圖。。。)
回憶之前的目標函式:
很顯然這是一個凸優化的問題,更具體的,它是一個二次優化問題—目標函式是二次的,約束條件是線性的。這個問題可以用任何現成的QP(Quadratic Programming)優化包解決。但是因為這個問題的特殊性,我們還可以通過Lagrange Duality變換到對偶變數的優化問題,找到一種更加行之有效的方法求解。首先我們給每一個約束條件加上一個Lagrange mutiplier,我們可以將它們融合到目標函式中去。 L(ω,b,a)=12||ω||2−∑ni=1α(yi(wTxi+b)−1)的一個下界。在滿足KKT條件時,二者相等,我們可以通過求解第二個問題來求解第一個問題。
先讓L關於ω和b最小化,我們分別把L對w和b求偏導:
∂L∂ω=0⟹ω=∑i=1nαiyixi
∂L∂b=0⟹∑i=1nαiyi=0
再帶回L得到:
L(ω,b,a)=12∑i,j=1nαiαjyiyjxTixj−∑i,j=1nαiαjyiyjxTixj−b∑i=1nαiyi+∑i=1nαi=∑i=1nαi−12∑i,j=1nαiαjyiyjxTixj
此時我們得到關於dual variable α的優化問題:
maxα∑ni=1αi−12∑ni,j=1αiαjyiyjxTixjs.t.,αi≥0,i=1,...,n∑ni=1αiyi=0
這個問題存在高效的演算法,不過求解過程就不在這裡介紹了。對於一個數據點進行分類時,我們是把x帶入到f(x)=wTx+b,這裡的形式的有趣之處在於,對於新點x的檢測,只需要計算它與訓練資料點的內積即可。
為什麼非支援向量的α必須等於0。悲劇的非支援向量就被無聲的秒殺了。。。
KNN
K近鄰的優缺點
- 優點
- 暫無
- 缺點
- 計算量太大
- 對於樣本分類不均衡的問題,會產生誤判。
K近鄰的公式
Logistic Regression
邏輯迴歸的優缺點
- 優點
- 速度快。
- 簡單易於理解,直接看到各個特徵的權重。
- 能容易地更新模型吸收新的資料。
- 如果想要一個概率框架,動態調整分類閥值。
- 缺點
- 特徵處理複雜。需要歸一化和較多的特徵工程。
邏輯迴歸的公式
如果是連續的,那麼就是多重線性迴歸;如果是二項分佈,就是Logistic迴歸;如果是Poission分佈,就是Poisson迴歸;如果是負二項分佈,那麼就是負二項分佈。
迴歸問題常見步驟是:尋找h函式;構造J函式;想辦法使得J函式最小並求得迴歸引數。邏輯迴歸的h函式為:
- 1
- 2
- 3
hθ(x)=g(θTx)=11+e−θTx
其中hθ(x)的值表示結果取1的概率。
那麼對於輸入x的分類結果對於類別1和類別0的概率分別為:
P(y=1|x;θ)=hθ(x)
P(y=0|x;θ)=1−hθ(x)
那麼對於構造損失函式J,它們基於最大似然估計推到得到的:
∑ni=1Cost(hθ(xi),yi)=−1m[∑ni=1yiloghθ(xi)+(1−yi)log(1−hθ(xi))]
最小化上式,與最大化下式子類似:
P(y|x;θ)=(hθ(x)