邏輯回歸(LogisticRegression)又稱對數幾率回歸,是一種廣義的線性回歸分析模型
廣義線性模型(generalized linear model) 是在普通線性模型的基礎上,對其進行推廣而得出的應用範圍更廣,更具實用性的回歸模型。
「回歸」一般是用於預測樣本的值,這個值通常是連續的。但是受限於其連續的特性,一般用它來進行分類的效果往往很不理想。為了保留線性回歸「簡單效果有不錯」的特點,又想讓它能夠進行分類,因此需要對預測值再做一次處理。這個多出來的處理過程,就是GLM所做的最主要的事。而處理過程的這個函數,我們把它叫做連接函數。
當一個處理樣本的回歸模型是線性模型,且連接函數滿足一定特性(特性下面說明)時,我們把模型叫做廣義線性模型。(特殊的,當連接函數是 時,其實就是線性回歸。)
邏輯回歸的連接函數——logit函數
令:
Logistic回歸是對特徵(feature)做加權相加後,輸入給Sigmoid函數,用Sigmoid函數的輸出來確定二分類的結果。
其中的logistic就是sigmoid函數,因為它也叫logistic函數。它與logit函數互為反函數。
其中的回歸在這裡的含義可以理解為最佳擬合,表示要找到最佳擬合參數集用於對特徵加權。訓練分類器就是用最優化方法去尋找最佳擬合參數。
聯繫:
從上面可以看出,邏輯回歸與線性回歸同屬於廣義線性模型,模型形式相似,只是其連接函數不同。
區別:
1、線性回歸要求變數服從正態分布,邏輯回歸對變數分布沒有要求。
2、線性回歸要求因變數是連續性數值變數,而邏輯回歸要求因變數是分類型變數。
3、線性回歸要求自變數和因變數呈線性關係,而邏輯回歸不要求自變數和因變數呈線性關係
4、邏輯回歸是分析因變數取某個值的概率與自變數的關係,而線性回歸是直接分析因變數與自變數的關係
正則化:
針對過擬合問題,通常會考慮兩種途徑來解決:
a) 減少特徵的數量
b) 正則化
評估指標與上一篇EamonLiao:機器學習演算法一:線性回歸LinearRegression中的評估指標基本雷同,在此不再贅述。
優點:
缺點:
class sklearn.linear_model.LogisticRegression( penalty 用於選擇正則化項。參數值為』l1』時,表示正則化項為 l1正則化;參數值為』l2』時,表示正則化項為 l2 正則化。新目標函數=目標函數+正則化項正則化項是防止模型過擬合的最為常用的手段之一。 dual 選擇目標函數為原始形式還是其對偶形式。何為對偶函數?將原始函數等價轉換為一個新函數,這個新函數我們稱為對偶函數。對偶函數比原始函數更易於優化。 Tol 優化演算法停止的條件。 一般優化演算法都是迭代演算法,舉個例子,比如牛頓法,假設我們現在要最小化一個函數,每迭代一次,更新一次變數值,函數的值都要減少一點,就這樣一直迭代下去。那麼應該什麼時候停止呢,比如我們設 tol=0.001,就是當迭代前後的函數差值<=0.001 時就停止。 C 用來控制正則化項的強弱。C 越小,正則化越強。可以簡單把 C 理解成正則化項的係數的倒數。 fit_intercept 用來選擇邏輯回歸模型中是否含有 b。b 即線性模型的常數項。如果不含有 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 的幾個核來跑 )
推薦閱讀: