機器學習演算法--邏輯迴歸原理介紹

早起的小蟲子發表於2021-12-05

一、邏輯迴歸基本概念

  1. 什麼是邏輯迴歸
  邏輯迴歸就是這樣的一個過程:面對一個迴歸或者分類問題,建立代價函式,然後通過優化方法迭代求解出最優的模型引數,然後測試驗證我們這個求解的模型的好壞。

  Logistic迴歸雖然名字裡帶“迴歸”,但是它實際上是一種分類方法,主要用於兩分類問題(即輸出只有兩種,分別代表兩個類別)

  迴歸模型中,y是一個定性變數,比如y=0或1,logistic方法主要應用於研究某些事件發生的概率

  2. 邏輯迴歸的優缺點
  優點:
  1)速度快,適合二分類問題
  2)簡單易於理解,直接看到各個特徵的權重
  3)能容易地更新模型吸收新的資料
  缺點:
  對資料和場景的適應能力有侷限性,不如決策樹演算法適應性那麼強

  3. 邏輯迴歸和多重線性迴歸的區別
  Logistic迴歸與多重線性迴歸實際上有很多相同之處,最大的區別就在於它們的因變數不同,其他的基本都差不多。正是因為如此,這兩種迴歸可以歸於同一個家族,即廣義線性模型(generalizedlinear model)。
  這一家族中的模型形式基本上都差不多,不同的就是因變數不同。這一家族中的模型形式基本上都差不多,不同的就是因變數不同。

  • 如果是連續的,就是多重線性迴歸
  • 如果是二項分佈,就是Logistic迴歸
  • 如果是Poisson分佈,就是Poisson迴歸
  • 如果是負二項分佈,就是負二項迴歸

  4. 邏輯迴歸用途

  • 尋找危險因素:尋找某一疾病的危險因素等;
  • 預測:根據模型,預測在不同的自變數情況下,發生某病或某種情況的概率有多大;
  • 判別:實際上跟預測有些類似,也是根據模型,判斷某人屬於某病或屬於某種情況的概率有多大,也就是看一下這個人有多大的可能性是屬於某病。

  5. Regression 常規步驟

  • 尋找h函式(即預測函式)
  • 構造J函式(損失函式)
  • 想辦法使得J函式最小並求得迴歸引數(θ)

  6. 構造預測函式h(x)
  1) Logistic函式(或稱為Sigmoid函式),函式形式為:

 

   對於線性邊界的情況,邊界形式如下:

  其中,訓練資料為向量:

   最佳引數:

   構造預測函式為:

  函式h(x)的值有特殊的含義,它表示結果取1的概率,因此對於輸入x分類結果為類別1和類別0的概率分別為:

$P(y=1|x;\theta )=h_{\theta }(x)$
$P(y=0|x;\theta )=1-h_{\theta }(x)$

  7.構造損失函式J(m個樣本,每個樣本具有n個特徵)
  Cost函式和J函式如下,它們是基於最大似然估計推導得到的。

  8. 損失函式詳細推導過程

  1) 求代價函式
  概率綜合起來寫成:

   取似然函式為:

   對數似然函式為:

  最大似然估計就是求使l(θ)取最大值時的θ,其實這裡可以使用梯度上升法求解,求得的θ就是要求的最佳引數。

  在Andrew Ng的課程中將J(θ)取為下式,即:

  2) 梯度下降法求解最小值

 

   θ更新過程可以寫成:

   9. 向量化

  ectorization是使用矩陣計算來代替for迴圈,以簡化計算過程,提高效率。
  向量化過程:
  約定訓練資料的矩陣形式如下,x的每一行為一條訓練樣本,而每一列為不同的特稱取值:

  g(A)的引數A為一列向量,所以實現g函式時要支援列向量作為引數,並返回列向量。

  θ更新過程可以改為:

   綜上所述,Vectorization後θ更新的步驟如下:

  1. 求 A=x*θ
  2. 求 E=g(A)-y
  3. 求:

   10.正則化

  (1) 過擬合問題
  過擬合即是過分擬合了訓練資料,使得模型的複雜度提高,繁華能力較差(對未知資料的預測能力)
  下面左圖即為欠擬合,中圖為合適的擬合,右圖為過擬合。

 

  (2)過擬合主要原因
  過擬合問題往往源自過多的特徵
  解決方法
  1)減少特徵數量(減少特徵會失去一些資訊,即使特徵選的很好)

  • 可用人工選擇要保留的特徵;
  • 模型選擇演算法;

  2)正則化(特徵較多時比較有效)

  • 保留所有特徵,但減少θ的大小

  (3)正則化方法
  正則化是結構風險最小化策略的實現,是在經驗風險上加一個正則化項或懲罰項。正則化項一般是模型複雜度的單調遞增函式,模型越複雜,正則化項就越大。

  正則項可以取不同的形式,在迴歸問題中取平方損失,就是引數的L2範數,也可以取L1範數。取平方損失時,模型的損失函式變為:

 

   lambda是正則項係數:

  • 如果它的值很大,說明對模型的複雜度懲罰大,對擬合資料的損失懲罰小,這樣它就不會過分擬合資料,在訓練資料上的偏差較大,在未知資料上的方差較小,但是可能出現欠擬合的現象;
  • 如果它的值很小,說明比較注重對訓練資料的擬合,在訓練資料上的偏差會小,但是可能會導致過擬合。

  正則化後的梯度下降演算法θ的更新變為:

  部分內容參考自:http://blog.csdn.net/pakko/article/details/37878837

二、Python實現邏輯迴歸

from sklearn.linear_model import LogisticRegression
Model = LogisticRegression()
Model.fit(X_train, y_train)
Model.score(X_train,y_train)
# Equation coefficient and Intercept
Print(‘Coefficient’,model.coef_)
Print(‘Intercept’,model.intercept_)
# Predict Output
Predicted = Model.predict(x_test)

 

轉載於:https://blog.csdn.net/chibangyuxun/article/details/53148005

相關文章