一、邏輯回歸的概念

邏輯回歸(LogisticRegression)又稱對數幾率回歸,是一種廣義的線性回歸分析模型

二、廣義線性模型

廣義線性模型(generalized linear model) 是在普通線性模型的基礎上,對其進行推廣而得出的應用範圍更廣,更具實用性的回歸模型。

「回歸」一般是用於預測樣本的值,這個值通常是連續的。但是受限於其連續的特性,一般用它來進行分類的效果往往很不理想。為了保留線性回歸「簡單效果有不錯」的特點,又想讓它能夠進行分類,因此需要對預測值再做一次處理。這個多出來的處理過程,就是GLM所做的最主要的事。而處理過程的這個函數,我們把它叫做連接函數。

當一個處理樣本的回歸模型是線性模型,且連接函數滿足一定特性(特性下面說明)時,我們把模型叫做廣義線性模型。(特殊的,當連接函數是 f(x)=x 時,其實就是線性回歸。)

三、邏輯回歸

邏輯回歸的連接函數——logit函數

egin{equation} left{ egin{aligned} p(y=1|x,	heta) & = frac{1}{1+e^{-	heta^Tx}} \ p(y=0|x,	heta) & = frac{1}{1+e^{-	heta^Tx}}=1-p(y=1|x,	heta)=p(y=1|x,-	heta) end{aligned} 
ight. end{equation}

令: h_	heta(x)=g(	heta^Tx)= frac{1}{1+e^{-	heta^Tx}};g(z)=frac{1}{1+e^{z}}

Logistic回歸是對特徵(feature)做加權相加後,輸入給Sigmoid函數,用Sigmoid函數的輸出來確定二分類的結果。

其中的logistic就是sigmoid函數,因為它也叫logistic函數。它與logit函數互為反函數。

其中的回歸在這裡的含義可以理解為最佳擬合,表示要找到最佳擬合參數集用於對特徵加權。訓練分類器就是用最優化方法去尋找最佳擬合參數。

四、邏輯回歸和線性回歸的聯繫與區別

聯繫:

從上面可以看出,邏輯回歸與線性回歸同屬於廣義線性模型,模型形式相似,只是其連接函數不同。

區別:

1、線性回歸要求變數服從正態分布,邏輯回歸對變數分布沒有要求。

2、線性回歸要求因變數是連續性數值變數,而邏輯回歸要求因變數是分類型變數。

3、線性回歸要求自變數和因變數呈線性關係,而邏輯回歸不要求自變數和因變數呈線性關係

4、邏輯回歸是分析因變數取某個值的概率與自變數的關係,而線性回歸是直接分析因變數與自變數的關係

五、邏輯回歸損失函數推導及優化

Cost(h_	heta(x),y)=egin{equation} left{ egin{aligned} -log(h_	heta(x)) qquad ifquad y=1 \ -log(1-h_	heta(x)) qquad ifquad y=0 end{aligned} 
ight. end{equation}

egin{equation} egin{aligned} J(	heta)&=frac{1}{m}sum_{i=1}^{m}{Cost(h_	heta(x^i),y_i)}\ &=-frac{1}{m}[sum_{i=1}^{m}y^ilogh_	heta(x^i)+(1-y^i)log(1-h_	heta(x^i))] end{aligned} end{equation}

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

正則化:

針對過擬合問題,通常會考慮兩種途徑來解決:

a) 減少特徵的數量

  • -人工的選擇保留哪些特徵;
  • -模型選擇演算法

b) 正則化

  • 保留所有的特徵,但是降低參數 	heta_j 的量/值;
  • 正則化的好處是當特徵很多時,每一個特徵都會對預測y貢獻一份合適的力量;

評估指標與上一篇EamonLiao:機器學習演算法一:線性回歸LinearRegression中的評估指標基本雷同,在此不再贅述。

七、邏輯回歸的優缺點

優點:

  1. 適合需要得到一個分類概率的場景。
  2. 計算代價不高,容易理解實現。LR在時間和內存需求上相當高效。它可以應用於分散式數據,並且還有在線演算法實現,用較少的資源處理大型數據。
  3. LR對於數據中小雜訊的魯棒性很好,並且不會受到輕微的多重共線性的特別影響。(嚴重的多重共線性則可以使用邏輯回歸結合L2正則化來解決,但是若要得到一個簡約模型,L2正則化並不是最好的選擇,因為它建立的模型涵蓋了全部的特徵。)

缺點:

  1. 容易欠擬合,分類精度不高。
  2. 數據特徵有缺失或者特徵空間很大時表現效果並不好。

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

  1. 上採樣:重複採樣樣本量少的部分,以數據量多的一方的樣本數量為標準,把樣本數量較少的類的樣本數量生成和樣本數量多的一方相同。
  2. 下採樣:減少採樣樣本量多的部分,以數據量少的一方的樣本數量為標準。
  3. 調節參數class_weight為每一個樣本類給予權重。當樣本不均衡的時候,我們可以使用形如{標籤的值1:權重1,標籤的值2:權重2}的字典來輸入真實的樣本標籤比例(例如{「違約」:10,「未違約」:1}),來提高違約樣本在損失函數中的權重。

九、sklearn參數

class sklearn.linear_model.LogisticRegression(
penalty 用於選擇正則化項參數值為l1表示正則化項為 l1正則化參數值為l2表示正則化項為 l2 正則化新目標函數=目標函數+正則化項正則化項是防止模型過擬合的最為常用的手段之一
dual 選擇目標函數為原始形式還是其對偶形式何為對偶函數將原始函數等價轉換為一個新函數這個新函數我們稱為對偶函數對偶函數比原始函數更易於優化
Tol 優化演算法停止的條件 一般優化演算法都是迭代演算法舉個例子比如牛頓法假設我們現在要最小化一個函數每迭代一次更新一次變數值函數的值都要減少一點就這樣一直迭代下去那麼應該什麼時候停止呢比如我們設 tol=0.001,就是當迭代前後的函數差值<=0.001 時就停止
C 用來控制正則化項的強弱C 越小正則化越強可以簡單把 C 理解成正則化項的係數的倒數
fit_intercept 用來選擇邏輯回歸模型中是否含有 bb 即線性模型的常數項如果不含有 b即等價於 b=0
Intercept_scaling 在西瓜書演算法中會有一個步驟令x= (x, 1)但是在具體的代碼實現上是x=(x, intercept_scaling)(x, 1)意思就是在向量 x 後加一個數值 1形成一個新的向量
class_weight 設置每個類別的權重 在西瓜書3.6中介紹了類別不平衡的問題這個參數就是為了解決這個問題的這個權重值我們可以事先自己計算好然後再賦值也可以設置 class_weight balanced即讓程序自動根據數據集計算出每個類別對應的權重值
random_state 隨機數種子 在程序中有很多變數的初始值都是隨機產生的值那麼這個種子就是控制產生什麼值比如為種子值為 20 那麼每次隨機產生的值都是 20 這個種子對應的值而且很多時候數據集中每個樣本的順序需要進行打亂那麼這個種子就是控制打亂後的順序的
solver 選擇使用哪個優化演算法進行優化 對於一個目標函數我們可以有多優化演算法供我們進行選擇因為不同的優化演算法所擅長解決的問題是不同
max_iter 優化演算法的迭代次數 前面參數中介紹了我們可以用tol 參數來控制優化演算法是否停止還有就是我們也可以用迭代次數來控制停止與否
multi_class 用於選擇多分類的策略 由西瓜書 3.5 可知用二分類器去構造出一個多分類器有很多可供選擇的策略比如 ovo,ovr, mvm注意從數學理論上來講我們可以構造出一個多分類函數但是在實踐過程中我們並不這樣做更一般的做法是用多個二分類器構造出一個多分類器還有 softmax回歸策略
verbose 主要用來控制是否 print 訓練過程
warm_start 是否熱啟動 什麼叫熱啟動呢一般而言當我們定義一個機器學習模型時就是定義其參數變數所以要在一開始階段對變數進行隨機地初始化但是熱啟動的意思是我們不在隨機地初始化而是把之前訓練好的參數值賦值給變數進行初始化
n_jobs cpu 的幾個核來跑
)

推薦閱讀:

相关文章