如何口述機器學習中的模型原理

有時碰到跟別人聊起模型的熟悉時,不免要闡述下模型的原理,但一般口頭交流都比較難,因為腦海裡面都是一些公式,似乎從功利角度有必要把模型原理用文字表達一遍,所以自己整理了下機器學習的部分,有遺漏或者不對的地方也請多多指教~

線性回歸

首先我們會定一個函數假定y和x的關係,如y=wx+b。但實際y的值肯定會和實際有偏差,所以就有殘差項。如殘差項e的求和=y-(wx+b)的求和。然後把公式化開,分別對w和b求偏導數,就可以得出w和b的值。

如何是對於矩陣,原理是一樣的,不會設計矩陣的轉置和矩陣的求導,最後參數為delta=X的轉置乘以X,這兩個乘起來再求他們的逆,最後再乘X的轉置和Y

邏輯回歸

首先引進sigmoid函數,形如1+e的負x次方分之一(這個大家都知道這個公式是什麼),我們這裡稱sigmoid為h(x)然後對於每個樣本,對於給定X和參數delta後,其對於y的後驗概率為h(x)的y次方乘以(1-h(x))的1-y次方,這個分別對應y是0和1的情況。所以擴展到所有樣本的話就把各樣本的概率連乘起來,這裡就像極大似然求解那樣,連乘後再作對數處理,而一作對數處理,連乘就變成log相加求和了。對這個新得到的函數用梯度下降就能夠不斷更新參數delta了。

k-mean

1、從D中隨機取k個元素,作為k個簇的各自的中心。

2、分別計算剩下的元素到k個簇中心的距離,將這些元素分別劃歸到距離最短的簇。

3、根據聚類結果,重新計算k個簇各自的中心,計算方法是取簇中所有元素各自維度的算術平均數。

4、將D中全部元素按照新的中心重新聚類。

5、重複第4步,直到聚類結果不再變化。

決策樹

首先從根節點開始,計算所有變數的信息增益,主要有ID3和C4.5這兩個演算法。然後選擇信息增益最大的作為結點的特徵,確定了具體節點變數後,就要計算在變數裡面具體哪個位置做切割,一般是在不同的切割點下的組別計算熵或者信息增益進行比較,選擇最佳切割點。對子節點遞歸地調用以上方法,構建決策樹;直到所有特徵的信息增益均很小或者沒有特徵可選時為止。

隨機森林

可以抽象理解為很多顆決策樹放在一起,然後各自產生的結果投票產生最終的結果,就是bagging的框架。但在細節上,就是每顆樹通過有放回的方法抽取一定的數據量和一定的變數屬性再去做分裂。

GBDT

首先先說GB這邊,就是Gradient

Boost,在梯度上進行boost。每一次的計算是為了減少上一次的殘差(residual),而為了消除殘差,我們可以在 殘差減少的梯度(Gradient)方向 上建立一個新的模型。所以說,在Gradient Boost中,每個新的模型的遍歷是為了使得之前模型的殘差往梯度方向減少。與傳統Boost對正確、錯誤的樣本進行加權有著很大的區別。從公式上,就是下一個函數等於上一個函數+擬合了殘差的函數(實際上這個殘差函數會乘以一個乘數,是讓目標函數最小化,這個乘數怎麼來不作展開)。

而DT就是cart樹,結合GB後做法上,比如說是3分類問題,每輪訓練實際上就是訓練3顆樹,如(0,1,0)就是對應(X,0)(X,1) (X,0),作為樣本得到3個預測值,進而可以得到殘差(殘差為=0-f(x)),然後下一輪迭代就可以輸入(x,f(x))。在每次迭代中計算目標函數(由樹權重函數和結構函數組成),選擇最優解。

XGboost

在GBDT的基礎上,xgboost不僅有cart分類器,還有線性分類器。

xgboost的目標函數優化用到二階泰勒展開,還有一階和二階導數,而且代價函數裡面加了正則項。列抽樣(column subsampling)。xgboost借鑒了隨機森林的做法,支持列抽樣,不僅能降低過擬合,還能減少計算,這也是xgboost異於傳統gbdt的一個特性。

SVM

想得到一個超平面如wx+b=0,如果對於y=正負1的話,margin距離為w的絕對值分之2,所以我們要最大化它就是最小化w的絕對值,一般寫為二分之一w平方。其約束條件為y(wx+b)-1>=0。

這個其實是一個規劃問題,SVM裡面引入拉格朗日乘子式進行轉化。式子就可以變成二分之一w平方減去本來拉格朗日乘子乘以約束條件(y(wx+b)-1),就可以轉化為最大最小對偶問題(maxmin)。對轉化後的公式分別對w和b求偏導數。解出來的東西再代回去原式就變成一個單求拉格朗日乘子最大化的問題,裡面含alpha-i,alpha-j,yi,yj,xi,xj。來到這步,線性可分的話可以直接求解,不可分的可以引入核函數,將xi,xj映射到高緯。至於怎麼求解,SVM裡面用了SMO演算法,做法上就是通過選擇兩個alpha,其他的固定起來,因為之前朗格朗日式中求出一個約束條件,是alpha*y的求和=0。所以固定n-2的乘子,不斷試剩下2個的可能性,直至目標函數收斂。


推薦閱讀:

Kaggle Titanic 生存預測(Top1.4%)完整代碼分享
Python 數據分析(四):數據的處理
機器學習(周志華)第一、二章
Community Preserving Network Embedding閱讀報告
推薦相關梳理

TAG:機器學習 | 數據挖掘 | 面試 |