《機器學習實戰》中Logistic迴歸幾個算法的解析

《機器學習實戰》第五章《Logistic迴歸》中講到了梯度上升法,隨機梯度上升法和改進的隨機梯度上升法,下面把這幾個算法思想總結一下。

首先,梯度上升法比較簡單,根據梯度上升的迭代公式計算出了迴歸係數。

書中並沒有採取最小二乘法之類的規則來作爲迭代終止的條件,而是直接指定maxCycles最大循環次數來作爲迭代終止條件。

  1. 假設迴歸係數初始值爲全1,與數據矩陣做乘法並帶入sigmoid函數得到介於0~1之間的估計值,這個估計值並不是一個數值,而是一個列向量

  2. 估計值與實際值相減求誤差

  3. 將誤差帶入迴歸係數迭代公式更新迴歸係數

  4. 用新的迴歸係數重複第1步的操作直至達到預設迭代次數


這個算法存在兩個待改進的地方:一是前面提到的終止條件;二是每次迴歸係數與數據矩陣做乘法計算量比較大,不適用於大數據量場景


針對第二個不足,書中又給出了隨機梯度上升算法,與梯度上升法思想類似,只是每次不再做迴歸係數與數據矩陣的乘法,而是順序提取數據矩陣中的一行與迴歸係數做向量乘法得到一個數值,而不是矩陣來更新迴歸係數,從而減小了計算量。

那麼問題來了,這樣做在整個數據集上迭代次數少了,擬合效果不好。自然想到要增加迭代次數,通過觀察效果發現存在兩個問題,一是迴歸係數需要更多的次數才能趨於穩定值,二是遇到非線性可分的數據集會存在迭代係數來回波動的現象。


針對這些問題,書中又提出了改進的隨機梯度上升算法,從仿真結果來看收斂速度確實得到了改善,但缺乏嚴格的數學證明。改進主要在2個地方,一是改變了每次迭代的步長;二是隨機而非順序抽取數據矩陣的一行來迭代迴歸系統,這樣就保障了小計算量,又避免了非線性數據樣本點引起的振盪。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章