本文介紹了機器學習中基本的優化算法—梯度降低算法和隨機梯度降低算法,以及實際應用到線性迴歸、Logistic迴歸、矩陣分解推薦算法等ML中。算法
X :全部樣本的特徵向量組成的矩陣
x(i) 是第i個樣本的包含的全部特徵組成的向量x(i)=(x(i)1,x(i)2...,x(i)n)
y(i))第i個樣本的label,每一個樣本只有一個label,y(i)是標量(一個數值)
hθ(x(i)) :擬合函數,機器學習中能夠用多種類型的擬合函數
θ 是函數變量,是多個變量的向量 θ=[θ1,θ2,...]
|hθ(xi)−y(i)| :擬合絕對偏差
求解的目標是使得全部樣本點(m個)平均偏差最小,即:markdown
其中 機器學習
爲了求解θ=[θ1,θ2,...]的值,能夠先對其賦一組初值,而後改變θ的值,使得J(θ)最小。函數J(θ)在其負梯度方向降低最快,因此只要使得每一個參數θ按函數負梯度方向改變,則J(θ)能最快找到最小值。即
函數
以多變量線性迴歸爲例:
擬合函數以下: post
∂∂θjJ(θ)求解過程仍是很簡單的(複合函數鏈式法則)。(hθ(x(i))−y(i))2對θj求導獲得2(hθ(x(i))−y(i)),hθ(x)=θ0+θ1x1+θ2x2+...+θnxn=θTx對θj求導獲得xj。所以迭代更新公式爲:
學習
代價函數:
以Sigmoid函數(Logistic函數)爲例說明: 優化
y=1時,hθ(x)範圍爲(0.5,1],越接近0.5,代價越高:
一樣由上圖能夠看到:−loghθ(x(i))能夠很好衡量某一個樣本的代價。atom
迭代更新公式:
求導過程蠻複雜的,直接給出結果吧: spa
能夠參考我轉載的另外一篇文章:
http://blog.csdn.net/qq_34531825/article/details/52330907.net
stochastic gradient descent
從梯度上升算法公式能夠看出,每次更新迴歸係數θ時都須要遍歷整個數據集。該方法在處理100個左右的數據集尚可,可是若是有數十億的樣本和成千萬的特徵,這種方法的計算複雜度就過高了。一種改進的方法是一次僅用一個樣本點來更新迴歸係數。因爲能夠在新樣本到來時,對分類器進行增量更新,所以是一個「在線學習」算法,而梯度降低算法一次處理全部的數據被稱爲「批處理」。更新公式以下:
(1)Stanford機器學習—第三講. 邏輯迴歸和過擬合問題的解決 logistic Regression & Regularization
http://blog.csdn.net/abcjennifer/article/details/7716281?locationNum=2
(2)機器學習入門:線性迴歸及梯度降低
http://blog.csdn.net/xiazdong/article/details/7950084
(3)梯度降低深刻淺出
http://binhua.info/machinelearning/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BA