sklearn学习(逻辑回归)
邏輯回歸
- 1 概述
- 1.1 名為“回歸”的分類器
- 優點:
- 1.3 sklearn中的邏輯回歸
- 邏輯回歸相關的類 說明
- 其他會涉及的類 說明
- 2.1 二元邏輯回歸的損失函數
- penalty
- 2.2 正則化:重要參數penalty & C
- 2.2 梯度下降:重要參數max_iter
1 概述
1.1 名為“回歸”的分類器
回歸樹,隨機森林的回歸,無一例外他們都是區別于分類算法們,用來處理和預測連續型標簽的算法。然而邏輯回歸,是一種名為“回歸”的線性分類器,其本質是由線性回歸變化而來的,一種廣泛使用于分類問題中的廣義回歸算法。要理解邏輯回歸從何而來,得要先理解線性回歸。線
性回歸是機器學習中最簡單的的回歸算法,它寫作一個幾乎人人熟悉的方程:
被統稱為模型的參數,其中 被稱為截距(intercept), θ 1~θ n 被稱為系數(coefficient),這個表達式,其實就和我們小學時就無比熟悉的y=ax+b 是同樣的性質。我們以使用矩陣來表示這個方程,其中x和θ 都可以被看做是一個列矩陣,則有:
線性回歸的任務,就是構造一個預測函數 來映射輸入的特征矩陣x和標簽值y的線性關系,而構造預測函數的核心就是找出模型的參數: 和 ,著名的最小二乘就是用來求解線性回歸中參數的數學方法。通過函數 ,線性回歸使用輸入的特征矩陣X來輸出一組連續型的標簽值y_pred,以完成各種預測連續型變量的任務
(比如預測產品銷量,預測股價等等)。那如果我們的標簽是離散型變量,尤其是,如果是滿足0-1分布的離散型
變量,我們要怎么辦呢?我們可以通過引入聯系函數(link function),將線性回歸方程z變換為g(z),并且令g(z)的值
分布在(0,1)之間,且當g(z)接近0時樣本的標簽為類別0,當g(z)接近1時樣本的標簽為類別1,這樣就得到了一個分
類模型。而這個聯系函數對于邏輯回歸來說,就是Sigmoid函數:
線性回歸中 ,于是我們將
帶入,就得到了二元邏輯回歸模型的一般形式:
優點:
信用卡欺詐,評分卡制作,電商中的營銷預測等等相關的數據,都是邏輯回歸的強項。雖然現在有了梯度提升樹GDBT,比邏輯回歸效果更好,也被許多數據咨詢公司啟用,但邏輯回歸在金融領域,尤其是銀行業中的統治地位依然不可動搖(相對的,邏輯回歸在非線性數據的效果很多時候比瞎猜還不如,所以如果你已經知道數據之間的聯系是非線性的,千萬不要迷信邏輯回歸)
predict_proba調用就好,但一般來說,正常的決策樹沒有這個功能)。
另外,邏輯回歸還有抗噪能力強的優點。福布斯雜志在討論邏輯回歸的優點時,甚至有著“技術上來說,最佳模型的AUC面積低于0.8時,邏輯回歸非常明顯優于樹模型”的說法。并且,邏輯回歸在小數據集上表現更好,在大型的數據集上,樹模型有著更好的表現。
由此,我們已經了解了邏輯回歸的本質,它是一個返回對數幾率的,在線性數據上表現優異的分類器,它主要被應用在金融領域。其數學目的是求解能夠讓模型最優化的參數 的值,并基于參數 和特征矩陣計算出邏輯回歸的結果y(x)。注意:雖然我們熟悉的邏輯回歸通常被用于處理二分類問題,但邏輯回歸也可以做多分類。
1.3 sklearn中的邏輯回歸
邏輯回歸相關的類 說明
linear_model.LogisticRegression 邏輯回歸回歸分類器(又叫logit回歸,最大熵分類器)
linear_model.LogisticRegressionCV 帶交叉驗證的邏輯回歸分類器
linear_model.logistic_regression_path 計算Logistic回歸模型以獲得正則化參數的列表
linear_model.SGDClassifier 利用梯度下降求解的線性分類器(SVM,邏輯回歸等等)
linear_model.SGDRegressor 利用梯度下降最小化正則化后的損失函數的線性回歸模型
metrics.log_loss 對數損失,又稱邏輯損失或交叉熵損失
linear_model.RandomizedLogisticRegression 隨機的邏輯回歸
其他會涉及的類 說明
metrics.confusion_matrix 混淆矩陣,模型評估指標之一
metrics.roc_auc_score ROC曲線,模型評估指標之一
metrics.accuracy_score 精確性,模型評估指標之一
2 linear_model.LogisticRegression
class sklearn.linear_model.LogisticRegression (penalty=’l2’, dual=False, tol=0.0001, C=1.0,
fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’warn’, max_iter=100,
multi_class=’warn’, verbose=0, warm_start=False, n_jobs=None)
2.1 二元邏輯回歸的損失函數
衡量參數 的優劣的評估指標,用來求解最優參數的工具
損失函數小,模型在訓練集上表現優異,擬合充分,參數優秀
損失函數大,模型在訓練集上表現差勁,擬合不足,參數糟糕
我們追求,能夠讓損失函數最小化的參數組合
注意:沒有”求解參數“需求的模型沒有損失函數,比如KNN,決策樹
參數 說明
penalty
可以輸入"l1"或"l2"來指定使用哪一種正則化方式,不填寫默認"l2"。
注意,若選擇"l1"正則化,參數solver僅能夠使用”liblinear",若使用“l2”正則化,參數solver中
所有的求解方式都可以使用。
C C正則化強度的倒數,必須是一個大于0的浮點數,不填寫默認1.0,即默認一倍正則項。
C越小,對損失函數的懲罰越重,正則化的效力越強,參數 會逐漸被壓縮得越來越小。在很多書
籍和博客的原理講解中, 被寫作 ,為了大家便于理解sklearn中的參數,我將公式改寫成 ,
更加直觀。
邏輯回歸的損失函數是由最大似然法來推導出來的,具體結果可以寫作:
其中, 表示求解出來的一組參數,m是樣本的個數, 是樣本i上真實的標簽, 是樣本i上,基于參數 計算出來的邏輯回歸返回值, 是樣本i的取值。我們的目標,就是求解出使 最小的 取值。
由于我們追求損失函數的最小值,讓模型在訓練集上表現最優,可能會引發另一個問題:如果模型在訓練集上表示優秀,卻在測試集上表現糟糕,模型就會過擬合。雖然邏輯回歸和線性回歸是天生欠擬合的模型,但我們還是需要控制過擬合的技術來幫助我們調整模型,對邏輯回歸中過擬合的控制,通過正則化來實現。
2.2 正則化:重要參數penalty & C
正則化是用來防止模型過擬合的過程,常用的有L1正則化和L2正則化兩種選項,分別通過在損失函數后加上參數向
量 的L1范式和L2范式的倍數來實現。這個增加的范式,被稱為“正則項”,也被稱為"懲罰項"。損失函數改變,基
于損失函數的最優化來求解的參數取值必然改變,我們以此來調節模型擬合的程度。其中L1范數表現為參數向量中的每個參數的絕對值之和,L2范數表現為參數向量中的每個參數的平方和的開方值。
其中 是我們之前提過的損失函數,C是用來控制正則化程度的超參數,n是方程中特征的總數,也是方程中參數的總數,j代表每個參數。在這里,J要大于等于1,是因為我們的參數向量 中,第一個參數是 ,是我們的截距,它通常是不參與正則化的。
L1正則化和L2正則化雖然都可以控制過擬合,但它們的效果并不相同。當正則化強度逐漸增大(即C逐漸變小),參數 的取值會逐漸變小,但L1正則化會將參數壓縮為0,L2正則化只會讓參數盡量小,不會取到0。 在L1正則化在逐漸加強的過程中,攜帶信息量小的、對模型貢獻不大的特征的參數,會比攜帶大量信息的、對模型有巨大貢獻的特征的參數更快地變成0,所以L1正則化本質是一個特征選擇的過程,掌管了參數的“稀疏性”。L1正則化越強,參數向量中就越多的參數為0,參數就越稀疏,選出來的特征就越少,以此來防止過擬合。因此,如果特征量很大,數據維度很高,我們會傾向于使用L1正則化。由于L1正則化的這個性質,邏輯回歸的特征選擇可以由Embedded嵌入法來完成。相對的,L2正則化在加強的過程中,會盡量讓每個特征對模型都有一些小的貢獻,但攜帶信息少,對模型貢獻不大的特征的參數會非常接近于0。通常來說,如果我們的主要目的只是為了防止過擬合,選擇L2正則化就足夠了。但是如果選擇L2正則化后還是過擬合,模型在未知數據集上的效果表現很差,就可以考慮L1正則化。
而兩種正則化下C的取值,都可以通過學習曲線來進行調整。
建立兩個邏輯回歸,L1正則化和L2正則化的差別就一目了然了:
可以看見,當我們選擇L1正則化的時候,許多特征的參數都被設置為了0,這些特征在真正建模的時候,就不會出
現在我們的模型當中了,而L2正則化則是對所有的特征都給出了參數。
究竟哪個正則化的效果更好呢?還是都差不多?
可見,至少在我們的乳腺癌數據集下,兩種正則化的結果區別不大。但隨著C的逐漸變大,正則化的強度越來越
小,模型在訓練集和測試集上的表現都呈上升趨勢,直到C=0.8左右,訓練集上的表現依然在走高,但模型在未知
數據集上的表現開始下跌,這時候就是出現了過擬合。我們可以認為,C設定為0.9會比較好。在實際使用時,基本
就默認使用l2正則化,如果感覺到模型的效果不好,那就換L1試試看。
2.2 梯度下降:重要參數max_iter
邏輯回歸的數學目的是求解能夠讓模型最優化的參數 的值,即求解能夠讓損失函數最小化的 的值,而這個求解過程,對于二元邏輯回歸來說,有多種方法可以選擇,最常見的有梯度下降法(Gradient Descent),坐標軸下降法(Coordinate Descent),牛頓法(Newton-Raphson method)等,每種方法都涉及復雜的數學原理,但這些計算在執行的任務其實是類似的。
以梯度下降法為例,我們來看看求解過程是如何完成的。下面這個華麗的平面就是我們的損失函數在輸入了一組特征矩陣和標簽之后在三維立體坐標系中的圖像?,F在,我們尋求的是損失函數的最小值,也就是圖像的最低點(看起來像是深藍色區域的某處),一旦我們獲取了圖像在最低點的取值 ,在我們的損失函數公式中,唯一未知的就是我們的參數向量 了。
現在,我在這個圖像上隨機放一個小球,當我松手,這個小球就會順著這個華麗的平面滾落,直到滾到深藍色的區域——損失函數的最低點。但是,小球不能夠一次性滾動到最低處,它的能量不足,所以每次最多只能走距離G。
為了嚴格監控這個小球的行為,我要求小球每次只能走0.05 * G,并且我要記下它每次走動的方向,直到它滾到圖像上的最低點。
總結
以上是生活随笔為你收集整理的sklearn学习(逻辑回归)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么32位系统支持的最大内存为4G?
- 下一篇: photoshop常出错,归纳一下,头都