數據挖掘:模型選擇——邏輯迴歸

邏輯迴歸

之前介紹的線性迴歸主要用於迴歸預測,而邏輯迴歸主要用於分類任務。邏輯迴歸是在線性迴歸的基礎上,加上了Sigmoid函數。
線性迴歸的模型是:
在這裏插入圖片描述
也可以寫作:
在這裏插入圖片描述
如果需要預測的值是0-1分佈的,那麼可以引入一個函數,將線性方程z變爲g(z),讓g(z)的值在(0,1)之間,當g(z)的值接近0時,樣本的類別判爲類別0;當g(z)的值接近1時,樣本的類別判爲類別1.
這個函數即爲Sigmoid函數。其值域在(0,1)之間,定義域是負無窮到正無窮。
在這裏插入圖片描述
在這裏插入圖片描述
引入Sigmoid函數後,得到了邏輯迴歸模型的一般形式:
在這裏插入圖片描述
此時,y的取值都在[0,1]之間,因此y和1-y相加必然爲1。如果我們令y除以1-y可以得到形似機率(odds)的y/(1-y) ,可看作類別爲1的與類別爲0的概率比。線性迴歸的值也就是對數機率。
在這裏插入圖片描述
y(x)的形似機率取對數的本質其實就是我們的線性迴歸z,我們實際上是在對線性迴歸模型的預測結果取對數機率,來讓其結果無限逼近0和1。
線性迴歸的任務:通過求解參數構建預測函數z,並希望預測函數z能夠儘量擬合數據,
邏輯迴歸的核心任務也是類似的:求解參數來構建一個能夠儘量擬合數據的預測函數y(x),並通過向預測函數中輸入特徵矩陣來獲取相應的標籤值y。
y(x)的並非像貝葉斯,輸出的是某一類別的概率,它只是(0,1)之間的值,人們近似認爲它是概率。一般以0.5爲分界點。
在這裏插入圖片描述

邏輯迴歸的損失函數

二元邏輯迴歸的標籤服從伯努利分佈(即0-1分佈),因此我們可以將一個特徵向量爲x,參數爲θ的模型中的一個樣本i的預測情況表現爲如下形式:
在這裏插入圖片描述
當樣本i的真實類別爲1時,如果P1爲1,P0爲0,此時預測結果與真實值一致,沒有信息損失。若P1爲0,P0爲1,則預測結果與真實值相反,信息完全損失。反之亦然。
在這裏插入圖片描述
將兩種取值的概率整合,可以得到如下等式(單個樣本):
在這裏插入圖片描述
當樣本i的真實標籤爲1時,P0的0次方爲1,這個時候P=P1,如果P1爲1(P1代表預測值爲類別1的概率),模型的效果就好,損失就小;同理,可證樣本i的真實標籤爲0時,如果P0爲1(P0代表預測值爲類別0的概率),模型的效果就好,損失就小。
所以,爲了讓模型擬合的好,我們追求的是讓P的值爲1.而P的本質是樣本i特徵向量x和參數θ組成的預測函數中,預測出所有可能的y^的概率,因此1是它的最大值。即我們需要的就是求出P的最大值。這就將模型擬閤中的“最小化損失”問題,轉換成了對函數求解極值的問題。(找出一組參數,使得P的值達到最大)這個推導過程,其實就是“極大似然法”的推導過程,即通過P值最大化來求參數θ。
所有可能的y^的概率P爲:
在這裏插入圖片描述
對P取對數:
在這裏插入圖片描述
這就是我們的交叉熵函數。爲了更好地定義”損失”的含義,我們希望將極大值問題轉換爲極小值問題,因此我們對log§取負,並且讓參數作爲函數的自變量,就得到了我們的損失函數J。(將求P的極大值轉爲求J的極小值)
在這裏插入圖片描述
這個是基於邏輯迴歸返回值的概率性質得出的損失函數。在這個函數上,我們只要追求最小值,就能讓模型在訓練數據上的擬合效果最好,損失最低。
在這裏插入圖片描述

似然函數和極大似然估計

似然函數
對於函數:p(x|θ)輸入有兩個:x表示某一個具體的數據;θ表示模型的參數。

  • 如果θ是已知確定的,x是變量,這個函數叫做概率函數(probability function),它描述對於不同的樣本點x,其出現概率是多少,求x。
  • 如果x是已知確定的,θ是變量,這個函數叫做似然函數(likelihood function), 它描述對於不同的模型參數,出現x這個樣本點的概率是多少。求θ。
  • 概率函數和似然函數是兩個相反的過程。

極大似然估計
一般投硬幣,對於概率來說,是已知該硬幣的分佈0-1分佈,求正反面出現的概率。而對於似然來說,是已知投硬幣正反面出現的概率,求該硬幣對應的分佈。
如何通過已知概率求分佈,這時就用到了極大似然估計。其思想是要求得參數讓出現的結果(正反面出現的概率)最大,也比較符合我們的正常認知。
舉個例子:若我們把投100次硬幣出現正面50次,反面50次,記出現正面的概率記爲P(投幣結果|分佈)。
P(投幣結果|分佈)
=P(x1,x2,…,x100|分佈)
=P(x1|分佈)P(x2|分佈)…P(x100|分佈) # 假設每次投硬幣結果是獨立的。
= P ^ 50 (1-P) ^ 50
此時,P可以取0.5,也可以取0.3,總之P有無數的取值,但是哪種取值和我們投硬幣的結果最爲相近,最符合常理呢?(我們求的參數是在該分佈下,最大化支持出現的結果,即讓P值最大化)答案是P=0.5,此時P ^ 50 (1-P) ^ 50的結果最大。可以通過求導,令其導數爲0,來求P值。

邏輯迴歸中的正則化

正則化是用來防止模型過擬合的過程,常用的有L1正則化和L2正則化兩種選項,分別通過在損失函數後加上參數向量的L1範式和L2範式的倍數來實現。
損失函數改變,基於損失函數的最優化來求解的參數取值必然改變,我們以此來調節模型擬合的程度。
在這裏插入圖片描述
其中:
J是之前的損失函數
C是用來控制正則化程度的超參數,C越小,損失函數會越小,模型對損失函數的懲罰越重,正則化的效力越強,參數會逐漸被壓縮得越來越小。
n是方程中特徵的總數,也是方程中參數的總數,
j代表每個參數。在這裏,j要大於等於1,是因爲我們的參數向量θ中,第一個參數是θ0,是我們的截距,它通常是不參與正則化的。
L1正則化和L2正則化雖然都可以控制過擬合,但它們的效果並不相同。當正則化強度逐漸增大(即C逐漸變小),參數的取值會逐漸變小,但L1正則化會將參數壓縮爲0(用於特徵選擇),L2正則化只會讓參數儘量小,不會取到0(用於防止過擬合)。(在之前的線性迴歸中提到過,對參數求偏導後,可以得出該結論)
邏輯迴歸的特徵工程
對於分類問題選擇特徵,可考慮使用邏輯迴歸,因爲PCA和SVD的可解釋性不強。
邏輯迴歸對數據的要求低於線性迴歸,由於我們不是使用最小二乘法來求解,所以邏輯迴歸對數據的總體分佈和方差沒有要求,也不需要排除特徵之間的共線性

梯度下降求解邏輯迴歸

邏輯迴歸的數學目的是求解能夠讓模型最優化,擬合程度最好的參數的值,即求解能夠讓損失函數J最小化的參數值。這裏選擇用梯度下降法求解。
梯度的定義
在這裏插入圖片描述
在這裏插入圖片描述
梯度下降
梯度是一個向量,因此它有大小也有方向。它的大小,就是偏導數組成的向量的大小,又叫做向量的模,記作d。
它的方向,幾何上來說,就是損失函數J 的值增加最快的方向。只要沿着梯度向量的反方向移動座標,損失函數J的取值就會減少得最快,也就最容易找到損失函數的最小值
在邏輯迴歸中的損失函數如下:
在這裏插入圖片描述
對自變量θ求導,可以得到梯度向量在第j組θ的座標點上的表示形式:
在這裏插入圖片描述
給定一組θ,帶入公式,計算得到梯度d。
利用θ和梯度,可以求得下一次迭代的θ+1,整個過程都使得損失函數在不斷變小。
在這裏插入圖片描述
步長的概念
步長的概念,類似於三角形的夾角∠A,取tan值。
在這裏插入圖片描述
在這裏插入圖片描述
由於參數迭代是靠梯度向量的大小d* 步長a實現的,而J的降低又是靠調節θ來實現的,所以步長可以調節損失函數下降的速率。
在損失函數降低的方向上,步長越長(∠A的值越大),θ的變動就越大,相對的,步長如果很短,θ的每次變動就很小。

  • 步長太大:損失函數下降得就非常快,需要的迭代次數就很少,但梯度下降過程可能跳過損失函數的最低點,無法獲取最優值。
  • 步長太小:雖然函數會逐漸逼近我們需要的最低點,但迭代的
    速度卻很緩慢,迭代次數就需要很多。
    在這裏插入圖片描述
    迭代結束,獲取到J的最小值,就可以找出這個最小值對應的參數向量θ,邏輯迴歸的預測函數也就可以根據這個參數向量θ來建立了。

邏輯迴歸的數據處理

分類數據

分類數據需要進行標籤處理,然後做獨熱編碼處理,這裏截取別人做的說明。邏輯迴歸用於評分卡中,可用WOE來處理分類數據。
在這裏插入圖片描述

數值數據

由於採用最大似然估計法而不是最小二乘法,不用作特殊處理。但可以考慮歸一化,加快運算速度。

參考文獻

https://zhuanlan.zhihu.com/p/26614750?utm_source=wechat_session&utm_medium=social&utm_oi=672213749885177856
https://www.bilibili.com/video/BV1vJ41187hk?from=search&seid=13147394097118063633
https://www.cnblogs.com/lianyingteng/p/7792693.html

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