日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

l2的最优回归_【机器学习】逻辑回归(非常详细)

發布時間:2024/10/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 l2的最优回归_【机器学习】逻辑回归(非常详细) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

邏輯回歸是一個非常經典的算法,其中也包含了非常多的細節,曾看到一句話:如果面試官問你熟悉哪個機器學習模型,可以說 SVM,但千萬別說 LR,因為細節真的太多了。

秉持著精益求精的工匠精神不斷對筆記進行修改和改進,本著開源精神幫助大家一起學習。歡迎大家在閱讀的過程中提出修改建議,我會非常感激。如果文章有幫助的話,希望能點個贊。

1. 模型介紹

Logistic Regression 雖然被稱為回歸,但其實際上是分類模型,并常用于二分類。Logistic Regression 因其簡單、可并行化、可解釋強深受工業界喜愛。

Logistic 回歸的本質是:假設數據服從這個分布,然后使用極大似然估計做參數的估計。

1.1 Logistic 分布

Logistic 分布是一種連續型的概率分布,其分布函數和密度函數分別為:

其中,

表示位置參數,

為形狀參數。我們可以看下其圖像特征:

Logistic 分布是由其位置和尺度參數定義的連續分布。Logistic 分布的形狀與正態分布的形狀相似,但是 Logistic 分布的尾部更長,所以我們可以使用 Logistic 分布來建模比正態分布具有更長尾部和更高波峰的數據分布。在深度學習中常用到的 Sigmoid 函數就是 Logistic 的分布函數在

的特殊形式。

1.2 Logistic 回歸

之前說到 Logistic 回歸主要用于分類問題,我們以二分類為例,對于所給數據集假設存在這樣的一條直線可以將數據完成線性可分。

決策邊界可以表示為?

,假設某個樣本點

那么可以判斷它的類別為 1,這個過程其實是感知機。

Logistic 回歸還需要加一層,它要找到分類概率 P(Y=1) 與輸入向量 x 的直接關系,然后通過比較概率值來判斷類別。

考慮二分類問題,給定數據集

考慮到

取值是連續的,因此它不能擬合離散變量。可以考慮用它來擬合條件概率

,因為概率的取值也是連續的。

但是對于

(若等于零向量則沒有什么求解的價值),

取值為

,不符合概率取值為 0 到 1,因此考慮采用廣義線性模型。

最理想的是單位階躍函數:

但是這個階躍函數不可微,對數幾率函數是一個常用的替代函數:

于是有:

我們將 y 視為 x 為正例的概率,則 1-y 為 x 為其反例的概率。兩者的比值稱為幾率(odds),指該事件發生與不發生的概率比值,若事件發生的概率為 p。則對數幾率:

將 y 視為類后驗概率估計,重寫公式有:

也就是說,輸出 Y=1 的對數幾率是由輸入 x 的線性函數表示的模型,這就是邏輯回歸模型。當

的值越接近正無窮,

概率值也就越接近 1。因此邏輯回歸的思路是,先擬合決策邊界(不局限于線性,還可以是多項式),再建立這個邊界與分類的概率聯系,從而得到了二分類情況下的概率。

在這我們思考個問題,我們使用對數幾率的意義在哪?通過上述推導我們可以看到 Logistic 回歸實際上是使用線性回歸模型的預測值逼近分類任務真實標記的對數幾率,其優點有:直接對分類的概率建模,無需實現假設數據分布,從而避免了假設分布不準確帶來的問題(區別于生成式模型);

不僅可預測出類別,還能得到該預測的概率,這對一些利用概率輔助決策的任務很有用;

對數幾率函數是任意階可導的凸函數,有許多數值優化算法都可以求出最優解。

1.3 代價函數

邏輯回歸模型的數學形式確定后,剩下就是如何去求解模型中的參數。在統計學中,常常使用極大似然估計法來求解,即找到一組參數,使得在這組參數下,我們的數據的似然度(概率)最大。

設:

似然函數:

為了更方便求解,我們對等式兩邊同取對數,寫成對數似然函數:

在機器學習中我們有損失函數的概念,其衡量的是模型預測錯誤的程度。如果取整個數據集上的平均對數似然損失,我們可以得到:

即在邏輯回歸模型中,我們最大化似然函數和最小化損失函數實際上是等價的。

1.4 求解

求解邏輯回歸的方法有非常多,我們這里主要聊下梯度下降和牛頓法。優化的主要目標是找到一個方向,參數朝這個方向移動之后使得損失函數的值能夠減小,這個方向往往由一階偏導或者二階偏導各種組合求得。邏輯回歸的損失函數是:

隨機梯度下降

梯度下降是通過 J(w) 對 w 的一階導數來找下降方向,并且以迭代的方式來更新參數,更新方式為 :

其中 k 為迭代次數。每次更新參數后,可以通過比較

小于閾值或者到達最大迭代次數來停止迭代。

2. 牛頓法

牛頓法的基本思路是,在現有極小點估計值的附近對 f(x) 做二階泰勒展開,進而找到極小點的下一個估計值。假設

為當前的極小值估計值,那么有:

然后令

,得到了

。因此有迭代更新式:

其中

為海森矩陣:

此外,這個方法需要目標函數是二階連續可微的,本文中的 J(w) 是符合要求的。

1.5 正則化

正則化是一個通用的算法和思想,所以會產生過擬合現象的算法都可以使用正則化來避免過擬合。

在經驗風險最小化的基礎上(也就是訓練誤差最小化),盡可能采用簡單的模型,可以有效提高泛化預測精度。如果模型過于復雜,變量值稍微有點變動,就會引起預測精度問題。正則化之所以有效,就是因為其降低了特征的權重,使得模型更為簡單。

正則化一般會采用 L1 范式或者 L2 范式,其形式分別為

。L1 正則化

LASSO 回歸,相當于為模型添加了這樣一個先驗知識:w 服從零均值拉普拉斯分布。 首先看看拉普拉斯分布長什么樣子:

由于引入了先驗知識,所以似然函數這樣寫:

取 log 再取負,得到目標函數:

等價于原始損失函數的后面加上了 L1 正則,因此 L1 正則的本質其實是為模型增加了“模型參數服從零均值拉普拉斯分布”這一先驗知識。

2. L2 正則化

Ridge 回歸,相當于為模型添加了這樣一個先驗知識:w 服從零均值正態分布。

首先看看正態分布長什么樣子:

由于引入了先驗知識,所以似然函數這樣寫:

取 ln 再取負,得到目標函數:

等價于原始的損失函數后面加上了 L2 正則,因此 L2 正則的本質其實是為模型增加了“模型參數服從零均值正態分布”這一先驗知識。

3. L1 和 L2 的區別

從上面的分析中我們可以看到,L1 正則化增加了所有權重 w 參數的絕對值之和逼迫更多 w 為零,也就是變稀疏( L2 因為其導數也趨 0, 奔向零的速度不如 L1 給力了)。我們對稀疏規則趨之若鶩的一個關鍵原因在于它能實現特征的自動選擇。一般來說,大部分特征 x_i 都是和最終的輸出 y_i 沒有關系或者不提供任何信息的。在最小化目標函數的時候考慮 x_i 這些額外的特征,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,這些沒用的特征權重反而會被考慮,從而干擾了對正確 y_i 的預測。L1 正則化的引入就是為了完成特征自動選擇的光榮使命,它會學習地去掉這些無用的特征,也就是把這些特征對應的權重置為 0。

L2 正則化中增加所有權重 w 參數的平方之和,逼迫所有 w 盡可能趨向零但不為零(L2 的導數趨于零)。因為在未加入 L2 正則化發生過擬合時,擬合函數需要顧忌每一個點,最終形成的擬合函數波動很大,在某些很小的區間里,函數值的變化很劇烈,也就是某些 w 值非常大。為此,L2 正則化的加入就懲罰了權重變大的趨勢。

我們以二維樣本為例,圖解闡述加入 L1 正則化和 L2 正則化之后目標函數求解時發生的變化。原函數曲線等高線(同顏色曲線上,每一組

帶入后值都相同)

那現在我們看下加了 L1 正則化和 L2 正則化之后,目標函數求解的時候,最終解會有什么變化。

從上邊兩幅圖中我們可以看出:如果不加 L1 和 L2 正則化的時候,對于線性回歸這種目標函數凸函數的話,我們最終的結果就是最里邊的紫色的小圈圈等高線上的點。

當加入 L1 正則化的時候,我們先畫出

的圖像,也就是一個菱形,代表這些曲線上的點算出來的

范數

都為 F。那我們現在的目標是不僅是原曲線算的值要小(越來越接近中心的紫色圈圈),還要使得這個菱形越小越好(F 越小越好)。那么還和原來一樣的話,過中心紫色圈圈的那個菱形明顯很大,因此我們要取到一個恰好的值。那么如何求值呢?

以同一條原曲線目標等高線來說,現在以最外圈的紅色等高線為例,我們看到,對于紅色曲線上的每個點都可做一個菱形,根據上圖可知,當這個菱形與某條等高線相切(僅有一個交點)的時候,這個菱形最小,上圖相割對比較大的兩個菱形對應的 L1 范數更大。用公式說這個時候能使得在相同的

,由于相切的時候的

小,即

所以能夠使得

更小;

有了第一條的說明我們可以看出,最終加入 L1 范數得到的解一定是某個菱形和某條原函數等高線的切點。現在有個比較重要的結論來了,我們經過觀察可以看到,幾乎對于很多原函數等高曲線,和某個菱形相交的時候及其容易相交在坐標軸(比如上圖),也就是說最終的結果,解的某些維度及其容易是 0,比如上圖最終解是

,這也就是我們所說的 L1 更容易得到稀疏解(解向量中 0 比較多)的原因;

當然光看著圖說,L1 的菱形更容易和等高線相交在坐標軸一點都沒說服力,只是個感性的認識,我們接下來從更嚴謹的方式來證明,簡而言之就是假設現在我們是一維的情況下

,其中 h(w) 是目標函數,

是沒加 L1 正則化項前的目標函數,

是 L1 正則項,要使得 0 點成為最值可能的點,雖然在 0 點不可導,但是我們只需要讓 0 點左右的導數異號,即

即可也就是

的情況下,0 點都是可能的最值點。

當加入 L2 正則化的時候,分析和 L1 正則化是類似的,也就是說我們僅僅是從菱形變成了圓形而已,同樣還是求原曲線和圓形的切點作為最終解。當然與 L1 范數比,我們這樣求的 L2 范數的從圖上來看,不容易交在坐標軸上,但是仍然比較靠近坐標軸。因此這也就是我們老說的,L2 范數能讓解比較小(靠近 0),但是比較平滑(不等于 0)。

綜上所述,我們可以看見,加入正則化項,在最小化經驗誤差的情況下,可以讓我們選擇解更簡單(趨向于 0)的解。

結構風險最小化:在經驗風險最小化的基礎上(也就是訓練誤差最小化),盡可能采用簡單的模型,以此提高泛化預測精度。

因此,加正則化項就是結構風險最小化的一種實現。

正則化之所以能夠降低過擬合的原因在于,正則化是結構風險最小化的一種策略實現。

簡單總結下:

給 loss function 加上正則化項,能使新得到的優化目標函數

,需要在 f 和 ||w|| 中做一個權衡,如果還像原來只優化 f 的情況下,那可能得到一組解比較復雜,使得正則項 ||w|| 比較大,那么 h 就不是最優的,因此可以看出加正則項能讓解更加簡單,符合奧卡姆剃刀理論,同時也比較符合在偏差和方差(方差表示模型的復雜度)分析中,通過降低模型復雜度,得到更小的泛化誤差,降低過擬合程度。

L1 正則化就是在 loss function 后邊所加正則項為 L1 范數,加上 L1 范數容易得到稀疏解(0 比較多)。L2 正則化就是 loss function 后邊所加正則項為 L2 范數的平方,加上 L2 正則相比于 L1 正則來說,得到的解比較平滑(不是稀疏),但是同樣能夠保證解中接近于 0(但不是等于 0,所以相對平滑)的維度比較多,降低模型的復雜度。

1.6 并行化

從邏輯回歸的求解方法中我們可以看到,無論是隨機梯度下降還是牛頓法,或者是沒有提到的擬牛頓法,都是需要計算梯度的,因此邏輯回歸的并行化最主要的就是對目標函數梯度計算的并行化。

我們看到目標函數的梯度向量計算中只需要進行向量間的點乘和相加,可以很容易將每個迭代過程拆分成相互獨立的計算步驟,由不同的節點進行獨立計算,然后歸并計算結果。

下圖是一個標簽和樣本矩陣,行為特征向量,列為特征維度。

樣本矩陣按行劃分,將樣本特征向量分布到不同的計算節點,由各計算節點完成自己所負責樣本的點乘與求和計算,然后將計算結果進行歸并,則實現了按行并行的 LR。按行并行的 LR 解決了樣本數量的問題,但是實際情況中會存在針對高維特征向量進行邏輯回歸的場景,僅僅按行進行并行處理,無法滿足這類場景的需求,因此還需要按列將高維的特征向量拆分成若干小的向量進行求解。

并行計算總共會被分為兩個并行化計算步驟和兩個結果歸并步驟:

步驟一:各節點并行計算點乘,計算

,其中

表示第 t 次迭代中節點

上的第 k 個特征向量與特征權重分量的點乘,

為第 t 次迭代中特征權重向量在第 c 列節點上的分量; 步驟二:對行號相同的節點歸并點乘結果:

步驟三:各節點獨立算標量與特征向量相乘:

可以理解為由第 r 行節點上部分樣本計算出的目標函數梯度向量在第 c 列節點上的分量。

步驟四:對列號相同的節點進行歸并:

就是目標函數的梯度向量

在第 c 列節點上的分量,對其進行歸并得到目標函數的梯度向量:

這個過程如下圖所示:

所以并行計算 LR 的流程如下所示。

所以并行 LR 實際上就是在求解損失函數最優解的過程中,針對尋找損失函數下降方向中的梯度方向計算作了并行化處理,而在利用梯度確定下降方向的過程中也可以采用并行化。

2. 與其他模型的對比

2.1 與線性回歸

邏輯回歸是在線性回歸的基礎上加了一個 Sigmoid 函數(非線形)映射,使得邏輯回歸稱為了一個優秀的分類算法。本質上來說,兩者都屬于廣義線性模型,但他們兩個要解決的問題不一樣,邏輯回歸解決的是分類問題,輸出的是離散值,線性回歸解決的是回歸問題,輸出的連續值。

我們需要明確 Sigmoid 函數到底起了什么作用:線性回歸是在實數域范圍內進行預測,而分類范圍則需要在 [0,1],邏輯回歸減少了預測范圍;

線性回歸在實數域上敏感度一致,而邏輯回歸在 0 附近敏感,在遠離 0 點位置不敏感,這個的好處就是模型更加關注分類邊界,可以增加模型的魯棒性。

2.2 與最大熵模型

邏輯回歸和最大熵模型本質上沒有區別,最大熵在解決二分類問題時就是邏輯回歸,在解決多分類問題時就是多項邏輯回歸。

首先進行符號定義: 表示,輸入時 x,輸出的 y=u 的概率;

A(u,v) 是一個指示函數,若 u=v,則 A(u,v)=1,否則 A(u,v)=0;

我們的目標就是從訓練數據中,學習得到一個模型,使得

最大化,也就是輸入 x,預測結果是 y 的概率最大,也就是使得

最大。

對于邏輯回歸而言:

我們這里可以用更泛化的形式來表示 π():

回到我們的目標:令

最大,可以用極大似然估計的方法來求解。

然后我們求偏導:

另偏導數為 0:

使用

這個函數,我們可以重寫等式:

想要證明邏輯回歸跟最大熵模型是等價的,那么,只要能夠證明它們的

是相同,結論自然就出來了。現在,我們不知道最大熵模型的

,但是我們知道下面的一些性質:

利用信息論,我們可以得到

的熵,定義如下:

現在,我們有了目標:

最大,也有了上面的4個約束條件。求解約束最優化問題,可以通過拉格朗日乘子,將約束最優化問題轉換為無約束最優化的對偶問題。我們的拉格朗日式子可以寫成如下:

對 L 求偏導,得到:

令偏導 = 0,得到:

從而得到:

因為有約束條件:

所以:

因此,可以得到:

代入

,并且簡化一下式子:

這就是邏輯回歸中提到的那個泛化的式子,這就證明了邏輯回歸是最大熵模型的一個特殊例子。到此,邏輯回歸與最大熵模型的關系就解釋完畢了。

2.3 與 SVM

相同點:都是分類算法,本質上都是在找最佳分類超平面;

都是監督學習算法;

都是判別式模型,判別模型不關心數據是怎么生成的,它只關心數據之間的差別,然后用差別來簡單對給定的一個數據進行分類;

都可以增加不同的正則項。

不同點:LR 是一個統計的方法,SVM 是一個幾何的方法;

SVM 的處理方法是只考慮 Support Vectors,也就是和分類最相關的少數點去學習分類器。而邏輯回歸通過非線性映射減小了離分類平面較遠的點的權重,相對提升了與分類最相關的數據點的權重;

損失函數不同:LR 的損失函數是交叉熵,SVM 的損失函數是 HingeLoss,這兩個損失函數的目的都是增加對分類影響較大的數據點的權重,減少與分類關系較小的數據點的權重。對 HingeLoss 來說,其零區域對應的正是非支持向量的普通樣本,從而所有的普通樣本都不參與最終超平面的決定,這是支持向量機最大的優勢所在,對訓練樣本數目的依賴大減少,而且提高了訓練效率;

LR 是參數模型,SVM 是非參數模型,參數模型的前提是假設數據服從某一分布,該分布由一些參數確定(比如正太分布由均值和方差確定),在此基礎上構建的模型稱為參數模型;非參數模型對于總體的分布不做任何假設,只是知道總體是一個隨機變量,其分布是存在的(分布中也可能存在參數),但是無法知道其分布的形式,更不知道分布的相關參數,只有在給定一些樣本的條件下,能夠依據非參數統計的方法進行推斷。所以 LR 受數據分布影響,尤其是樣本不均衡時影響很大,需要先做平衡,而 SVM 不直接依賴于分布;

LR 可以產生概率,SVM 不能;

LR 不依賴樣本之間的距離,SVM 是基于距離的;

LR 相對來說模型更簡單好理解,特別是大規模線性分類時并行計算比較方便。而 SVM 的理解和優化相對來說復雜一些,SVM 轉化為對偶問題后,分類只需要計算與少數幾個支持向量的距離,這個在進行復雜核函數計算時優勢很明顯,能夠大大簡化模型和計算。

2.4 與樸素貝葉斯

樸素貝葉斯和邏輯回歸都屬于分類模型,當樸素貝葉斯的條件概率

服從高斯分布時,它計算出來的 P(Y=1|X) 形式跟邏輯回歸是一樣的。

兩個模型不同的地方在于:邏輯回歸是判別式模型 p(y|x),樸素貝葉斯是生成式模型 p(x,y):判別式模型估計的是條件概率分布,給定觀測變量 x 和目標變量 y 的條件模型,由數據直接學習決策函數 y=f(x) 或者條件概率分布 P(y|x) 作為預測的模型。判別方法關心的是對于給定的輸入 x,應該預測什么樣的輸出 y;而生成式模型估計的是聯合概率分布,基本思想是首先建立樣本的聯合概率概率密度模型 P(x,y),然后再得到后驗概率 P(y|x),再利用它進行分類,生成式更關心的是對于給定輸入 x 和輸出 y 的生成關系;

樸素貝葉斯的前提是條件獨立,每個特征權重獨立,所以如果數據不符合這個情況,樸素貝葉斯的分類表現就沒邏輯會好了。

3. 模型細節

3.1 為什么適合離散特征

我們在使用邏輯回歸的時候很少會把數據直接丟給 LR 來訓練,我們一般會對特征進行離散化處理,這樣做的優勢大致有以下幾點:離散后稀疏向量內積乘法運算速度更快,計算結果也方便存儲,容易擴展;

離散后的特征對異常值更具魯棒性,如 age>30 為 1 否則為 0,對于年齡為 200 的也不會對模型造成很大的干擾;

LR 屬于廣義線性模型,表達能力有限,經過離散化后,每個變量有單獨的權重,這相當于引入了非線性,能夠提升模型的表達能力,加大擬合;

離散后特征可以進行特征交叉,提升表達能力,由 M+N 個變量編程 M*N 個變量,進一步引入非線形,提升了表達能力;

特征離散后模型更穩定,如用戶年齡區間,不會因為用戶年齡長了一歲就變化;

總的來說,特征離散化以后起到了加快計算,簡化模型和增加泛化能力的作用。

3.2 為什么不用平方誤差

假設目標函數是 MSE,即:

這里 Sigmoid 的導數項為:

根據 w 的初始化,導數值可能很小(想象一下 Sigmoid 函數在輸入較大時的梯度)而導致收斂變慢,而訓練途中也可能因為該值過小而提早終止訓練(梯度消失)。

另一方面,交叉熵的梯度如下,當模型輸出概率偏離于真實概率時,梯度較大,加快訓練速度,當擬合值接近于真實概率時訓練速度變緩慢,沒有 MSE 的問題。

4 引用

總結

以上是生活随笔為你收集整理的l2的最优回归_【机器学习】逻辑回归(非常详细)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。