邏輯迴歸基礎和SVM基礎

LR:

  • Logistic Regression Model是一種有監督學習方法,主要用於二元分類,也可以進行多元分類。其本質上是一種符合伯努利分佈的線性迴歸模型(Linear Regression Model),不同之處就在於邏輯迴歸是將連續域的輸出通過邏輯函數映射爲離散域。

  • 邏輯函數爲sigmoid函數,線性輸出作爲邏輯函數的輸入,映射爲[0,1]的離散域。

  • 當z趨於-∞時,結果趨於0;當z趨於+∞時,結果趨於1。所以只要得出z的值,就可以做分類了。

    該上概率論的菜了,主菜是似然估計。求z,等同於求參數θ。
    極大似然估計法是在總體分佈類型已知的情況下的一種常用的參數估計方法。

    一般的求解過程:
    寫出似然函數;
    對似然函數取對數,並整理;
    求導數;
    解似然方程;

  • 似然最大估計:找到一組參數θ,使得在這組參數下,樣本數據的似然度(概率)最大

  • 邏輯迴歸的代價函數J theta = - l theta (l theta: 對數最大似然估計) max l(theta) --> min J(theta)

  • 參數theta的求解採用隨機梯度下降算法或者mini-bach gradient descent.
    隨機梯度下降算法:
    theta更新過程中,SGD每次迭代僅對一個樣本計算梯度,直到收斂;不穩定性,因爲每次訓練的都是隨機的一個樣本,會導致導致梯度的方向不會像BGD那樣朝着最優點(隨機把數據打亂很重要,因爲這個隨機性相當於引入了“噪音”,正是因爲這個噪音,使得SGD可能會避免陷入局部最優解中)。代價函數曲線呈現震盪趨勢。
    mini-batch GD: 每次用一部分樣本來更新參數,相對於SGD更穩定。代價函數曲線更平滑。
    參考:幾種梯度下降方法對比(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)

  • 機器學習或者統計機器學習常見的損失函數如下:

      1.0-1損失函數 (0-1 loss function) 
      		L(Y,f(X))={1,0,Y ≠ f(X),Y = f(X)
      2.平方損失函數(quadratic loss function) 
      		L(Y,f(X))=(Y−f(x))2
      3.絕對值損失函數(absolute loss function) 
      		L(Y,f(x))=|Y−f(X)|
      4.對數損失函數(logarithmic loss function) 或對數似然損失函數(log-likehood loss function) 
      		L(Y,P(Y|X))=−logP(Y|X)
    

    邏輯迴歸中,採用的則是對數損失函數。如果損失函數越小,表示模型越好。

  • LR 損失函數爲什麼用極大似然函數?
    1)因爲我們想要讓 每一個 樣本的預測都要得到最大的概率,
    即將所有的樣本預測後的概率進行相乘都最大,也就是極大似然函數.
    2)對極大似然函數取對數以後相當於對數損失函數,
    由上面 梯度更新 的公式可以看出,
    對數損失函數的訓練求解參數的速度是比較快的,
    而且更新速度只和x,y有關,比較的穩定,

  • 爲什麼不用平方損失函數
    如果使用平方損失函數,梯度更新的速度會和 sigmod 函數的梯度相關,sigmod 函數在定義域內的梯度都不大於0.25,導致訓練速度會非常慢。
    而且平方損失會導致損失函數是 theta 的非凸函數,不利於求解,因爲非凸函數存在很多局部最優解

  • 正則化

  • 偏差 (高bias:欠擬合----增加特徵優化算法):
    描述的是預測值(估計值)的期望與真實值之間的差距。偏差越大,越偏離真實數據集。

  • 方差 (高variance:過擬合----增加數據集降維減少特徵或正則化):
    描述的是預測值的變化範圍,離散程度,也就是離其期望值的距離。方差越大,預測結果數據的分佈越散。

SVM

參考:
SVM支持向量機-拉格朗日乘子與對偶問題

  • 使用支持向量機的原因主要是最優函數時凸函數,不存在局部最優解

  • SVM的原理是什麼?
    SVM是一種二類分類模型。基本思想是試圖尋找一個超平面來對樣本分割,把樣本中的正例和反例用超平面分開,並儘可能的使正例和反例之間的間隔最大。(間隔最大是它有別於感知機)
    (1)當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性分類器,即線性可分支持向量機;
    (2)當訓練數據近似線性可分時,引入鬆弛變量,通過軟間隔最大化,學習一個線性分類器,即線性支持向量機;
    (3)當訓練數據線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支持向量機。

  • SVM的主要特點 (優點)
    (1)非線性映射-理論基礎 (2)最大化分類邊界-方法核心 (3)支持向量-計算結果 (4)小樣本學習方法 (5)最終的決策函數只有少量支持向量決定,避免了“維數災難” (6)少數支持向量決定最終結果—->可“剔除”大量冗餘樣本+算法簡單+具有魯棒性(體現在3個方面) (7)學習問題可表示爲凸優化問題—->全局最小值 (8)可自動通過最大化邊界控制模型,但需要用戶指定核函數類型和引入鬆弛變量 (9)適合於小樣本,優秀泛化能力(因爲結構風險最小) (10)泛化錯誤率低,分類速度快,結果易解釋

  • 缺點:
    (1)大規模訓練樣本(m階矩陣計算)
    (2)傳統的不適合多分類
    (3)對缺失數據、參數、核函數敏感

  • 間隔:兩個異類支持向量到超平面的距離之和。依賴於分離超平面的法向量w, 等於 2/||w||。 法向量指向的一側爲正類,另一側爲負類。

  • 支持向量:線性可分情況下,訓練數據集樣本點中與分離超平面距離最近的樣本點的實例稱爲支持向量(即間隔邊界上的點)。

  • 在決定分離超平面時,只有支持向量起作用,其他實例點並不起作用,移動或刪除其他實例點,解都不會改變,正是由於支持向量在確定超平面中的決定租用,所以將該分類模型稱爲支持向量機。
    支持向量滿足約束條件: yi ( w *xi + b ) - 1 = 0

  • 對偶問題:
    原理:max(alpha) { min(w,b){ L(w,b,alpha)} } (前兩個括號內表示極值對象,最後一個表示函數參數)
    引入拉格朗日乘子向量,先求L(w,b,alpha)對w,b的極小值,得到w和b關於alpha的表達式,帶入L中,再求關於alpha的極大值。
    通俗理解,引入拉格朗日乘子,將目標函數最優化轉化爲拉格朗日函數最優化問題,通過對每條約束添加拉格朗日乘子alpha, 先求對w和b的極小,求偏導並令其等於0,到w和b關於alpha的表達式,帶入拉格朗日函數中,轉化爲僅含有參數alpha的函數最優化問題,單獨計算 alpha後反求參數w和b,最後獲得超平面參數。
    好處:
    1)更容易求解;
    2)自然引入核函數,進而推廣到非線性分類問題。
    Note:拉格朗日對偶沒有改變最優解,但改變了算法複雜度原問題—樣本維度;對偶問題–樣本數量
    所以 線性分類–樣本維度<樣本數量:原問題求解(liblinear默認);
    非線性–升維—一般導致 樣本維度>樣本數量:對偶問題求解

  • 補充:另外KKT條件就是在約束下求得目標函數極值時αi滿足的條件,只有滿足了kkt條件,纔算是滿足了目標函數和約束函數,因此之後介紹的計算迭代算法也是基於KKT條件,通過不斷修改不滿足KKT條件的α,使其滿足KKT條件,從而求出目標函數的最優值

  • 硬間隔最大化(幾何間隔);軟間隔最大化(引入鬆弛變量);非線性支持向量機(核技巧)

  • 爲什麼SVM要引入核函數
    當樣本在原始空間線性不可分時,可將樣本從原始空間映射到一個更高維的特徵空間,使得樣本在這個特徵空間內線性可分

  • 函數間隔和幾何間隔
    函數間隔: 表示分類預測的正確性及確信度。
    幾何間隔:實際就是點到超平面的距離。
    可以理解爲函數間隔是幾何間隔沒有除以||w||的表達,幾何間隔是函數間隔歸一化的結果。

  • 鬆弛變量與軟間隔最大化
    原因:一些離羣點或者噪聲點影響分界面,導致線性不可分;
    解決方法:引入鬆弛變量,允許某些樣本不滿足線性可分的約束-

  • 懲罰參數C
    C越大,相當於懲罰鬆弛變量,希望鬆弛變量接近0,即對誤分類的懲罰增大,趨向於對訓練集全分對的情況,這樣對訓練集測試時準確率很高,但泛化能力弱
    C值小,對誤分類的懲罰減小,允許容錯,將他們當成噪聲點,泛化能力較強。

  • SVM如何處理多分類問題?
    一般有兩種做法:一種是直接法,直接在目標函數上修改,將多個分類面的參數求解合併到一個最優化問題裏面。看似簡單但是計算量卻非常的大。
    另外一種做法是間接法:對訓練器進行組合。其中比較典型的有一對一,和一對多。
    一對多,就是對每個類都訓練出一個分類器,由svm是二分類,所以將此而分類器的兩類設定爲目標類爲一類,其餘類爲另外一類。這樣針對k個類可以訓練出k個分類器,當有一個新的樣本來的時候,用這k個分類器來測試,那個分類器的概率高,那麼這個樣本就屬於哪一類。這種方法效果不太好,bias比較高。
    svm一對一法(one-vs-one),針對任意兩個類訓練出一個分類器,如果有k類,一共訓練出C(2,k) 個分類器,這樣當有一個新的樣本要來的時候,用這C(2,k) 個分類器來測試,每當被判定屬於某一類的時候,該類就加一,最後票數最多的類別被認定爲該樣本的類。

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