由於第一次實驗的實驗報告不在這台機器,先寫這一算法吧。
SGDLR(the Stochastic Gradient Descent for Logistic Regression),要講解這一算法,首先要把名字拆為幾塊。
1 隨機 2 梯度下降 3邏輯回歸
先貼一篇文章:http://blog.csdn.net/zouxy09/article/details/20319673
這篇文章中解釋的還不錯。
其實這一算法,通俗來講是這樣子的:
1、手中肯定有很多帶有label標記的數據,這是訓練集。
2、我們期望能夠建立一個帶參數的式子,來計算某種情況出現的概率,以便於后面預測測試集的類別的時候,計算它在每一類的概率,取概率大的為自己的類。
3、由於sigmoid函數的優勢:連續,光滑,嚴格單調,關於(0,0.5)中心對稱,形如下圖,
公式①
利用下面這個式子變換得到:
所以我們只需要計算出參數的值,就可以用公式①計算概率。
4、所有在訓練集中出現的樣本,已經真實存在了,所以它們帶入計算出的概率應該是最大的,理想情況為1。根據這一特征來計算參數值。
5、式子並不是一個線性可解的,需要使用極大似然,這一算法不再贅述請自行谷歌。但是后來發現求參數的偏導數的時候,導數為0線性不可解,這時候就要用到梯度下降的算法。
6、所謂梯度下降的算法,事實上是從一個起點,一步步的試探,來回震盪,直到找到一個最低點。迭代公式如下:(這里的lamda是步長,自己設定,參數的初值也是自己設定)
普通的梯度下降需要每次都用所有樣本加和,然后迭代到收斂。
7、那么隨機梯度下降就是在普通的情況下,每次只迭代一個樣本(注意:這個樣本必須是隨機抽的,如果有偏向,最后的結果會很難看),直到收斂。
8、利用以上的迭代公式可以得到參數的值。
9、如果存在多個分類,那么可以訓練多個分類器,一類一個,每一個訓練樣本都只屬於下面兩類:“是這類”和“不是這類”。訓練的時候也是訓練N套參數。
對於一個測試樣本,帶入每一個分類器計算一遍概率,以概率最大的分類有效。
該算法依舊可以使用十次交叉驗證檢驗效果。