機器學習---邏輯迴歸算法梳理

任務2 - 邏輯迴歸算法梳理

1、邏輯迴歸與線性迴歸的聯繫與區別

聯繫:邏輯回歸屬於對數線性模型,本質上是個線性模型。
區別:
邏輯迴歸得到一個離散的結果,但線性迴歸得到一個連續的結果。
線性迴歸的應用場合多是迴歸分析,一般不用在分類問題上。原因可以概括爲以下兩個:
(1)迴歸模型是連續型模型,即預測出的值都是連續值(實數值),而不是離散值;
(2)預測結果受樣本噪聲的影響較大。

2、 邏輯迴歸的原理

對數機率函數是一種“Sigmoid函數”,如下圖所示。
在這裏插入圖片描述
在這裏插入圖片描述

3、邏輯迴歸損失函數推導及優化

在這裏插入圖片描述
極大似然函數:
在這裏插入圖片描述
對這個公式取對數,可得對數似然函數:

最大化對數似然函數其實就是最小化交叉熵誤差(Cross Entropy Error)。
先不考慮累加和,我們針對每個參數wj求偏導:
在這裏插入圖片描述
最後,通過掃描樣本,迭代下述公式可求得參數:
在這裏插入圖片描述

4、 正則化與模型評估指標

常見的有L1正則化和L2正則化。
參考:https://www.cnblogs.com/pinard/p/6029432.html

5、邏輯迴歸的優缺點

邏輯迴歸實際是一種分類學習方法。這種方法有很多優點:
(1)直接對分類可能性進行建模,無需事先假設數據分佈,這樣就避免了假設分佈不準確帶來的問題;
(2)它不是僅預測出“類別”,而是可得到近似概率預測,這對許多需利用概率輔助決策的任務很有用;
(3)邏輯迴歸求解的目標函數是任意階可導的凸函數,有很好的數學性質,現有的許多數值優化算法都可直接用於求解最優解。

缺點:
(1)容易欠擬合或過擬合,分類精度不高。
(2)數據特徵有缺失或者特徵空間很大時表現效果並不好。
(3)高度依賴正確的數據表示。
(4)由於其結果是離散的,Logistic 迴歸只能預測分類結果。

6、樣本不均衡問題解決辦法

參考:https://blog.csdn.net/zhongjunlang/article/details/79568601

7. sklearn參數

如下參數來自參考:
https://blog.csdn.net/adamtu18/article/details/88093230
penalty=’l2’, 參數類型:str,可選:‘l1’ or ‘l2’, 默認: ‘l2’。該參數用於確定懲罰項的範數
dual=False, 參數類型:bool,默認:False。雙重或原始公式。使用liblinear優化器,雙重公式僅實現l2懲罰。
tol=0.0001, 參數類型:float,默認:e-4。停止優化的錯誤率
C=1.0, 參數類型:float,默認;1。正則化強度的導數,值越小強度越大。
fit_intercept=True, 參數類型:bool,默認:True。確定是否在目標函數中加入偏置。
intercept_scaling=1, 參數類型:float,默認:1。僅在使用“liblinear”且self.fit_intercept設置爲True時有用。
class_weight=None, 參數類型:dict,默認:None。根據字典爲每一類給予權重,默認都是1.
random_state=None, 參數類型:int,默認:None。在打亂數據時,選用的隨機種子。
solver=’warn’, 參數類型:str,可選:{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, 默認:liblinear。選用的優化器。
max_iter=100, 參數類型:int,默認:100。迭代次數。multi_class=’warn’, 參數類型:str,可選:{‘ovr’, ‘multinomial’, ‘auto’},默認:ovr。如果選擇的選項是’ovr’,那麼二進制問題適合每個標籤。對於“多項式”,最小化的損失是整個概率分佈中的多項式損失擬合,即使數據是二進制的。當solver  ='liblinear’時,‘multinomial’不可用。如果數據是二進制的,或者如果solver =‘liblinear’,‘auto’選擇’ovr’,否則選擇’multinomial’。
verbose=0, 參數類型:int,默認:0。對於liblinear和lbfgs求解器,將詳細設置爲任何正數以表示詳細程度。
warm_start=False, 參數類型:bool,默認:False。是否使用之前的優化器繼續優化。
n_jobs=None,參數類型:bool,默認:None。是否多線程。

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