第一章還是較基礎,首先提到的就是 梯度下降法
(1)theta_j := theta_j - apha * J’/theta_j’
J 是最小二乘法得到的 預測值和真實值之間的差異,越小越好,故(1)式中為減號
J’ /theta_j’ 一般會化成較簡略的形勢,比如最小二乘法的會化簡為 (h(theta) - y) * theta_j,羅輯回歸一般能化簡為相同格式,不過符號相反,為 (y - h(theta)) * theta_j,不過邏輯回歸是使用最大似然算法,求的是最大值,故theta_j := theta_j + apha * J’/theta_j’,最后的格式可以完全一樣。
這就是梯度下降法,初始化固定一組 theta,選定迭代步長apha, ?即可迭代,下一個點產生時是沿著梯度直線方向
當然會有一些矩陣法,直接通過矩陣運算得到
theta = (X ^T X) ^?1X^ T y
牛頓法,,,
θ := θ ? f(θ) / f ′ (θ)
不過這個是求最小值的,邏輯回歸的問題需要再度求導,即
θ := θ ? ? ′ (θ) /? ′′(θ)
最后得到的簡略式為
θ := θ ? H ^?1?θ?(θ).
H 為hessian矩陣
Hij = ? 2 ?(θ) / ?θi?θj
問題,如果用牛頓法求最小二乘法的收斂,直接使用 θ := θ ? f(θ) / f ′ (θ) := ?θ ? J(θ) / J ′ (θ)即可?
牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之后,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。
根據wiki上的解釋,從幾何上說,牛頓法就是用一個二次曲面去擬合你當前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當前的局部曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。
wiki上給的圖很形象,我就直接轉過來了:
紅色的牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑。
三次收斂的逼近的每一步需要解三次方程,涉及的計算量比二次的大很多,相比收斂速度的提升不劃算。
牛頓法用曲面達到局部最優:我的理解是牛頓法求的是當前點的導數,然后對導數再求導,意義就是看這個導數的變化率。
應該都是可以解決問題的,暫且不表,已經關注一篇知乎文章
多分類求解
1…k 個分類 ? ;每個分類對應一組參數 theta_i; ?記住下面的公式即可
仍然使用最大似然函數 求的l(theta)
好吧,知道怎么做了吧, 牛頓法,梯度下降法都扔過來吧,hessian矩陣的牛頓;;;;嗷嗷 這個就是傳說中的 soft max