邏輯回歸模型(Logistic Regression, LR)基礎(chǔ)原理
在公眾號(hào)「python風(fēng)控模型」里回復(fù)關(guān)鍵字:學(xué)習(xí)資料,免費(fèi)領(lǐng)取。
大家好!大家好,今天我們將看到機(jī)器學(xué)習(xí)技術(shù)中一個(gè)有趣的算法,稱為邏輯回歸。因此,在進(jìn)入主題之前,我們需要復(fù)習(xí)一些基本術(shù)語(yǔ),以便清楚地理解它。
什么是機(jī)器學(xué)習(xí)?
機(jī)器學(xué)習(xí)算法可以訪問(wèn)數(shù)據(jù)(分類、數(shù)字、圖像、視頻或任何東西)并使用它來(lái)自行學(xué)習(xí),而無(wú)需任何顯式編程。但是機(jī)器學(xué)習(xí)技術(shù)是如何工作的呢??jī)H通過(guò)觀察數(shù)據(jù)(通過(guò)指令觀察模式并做出決定或預(yù)測(cè))
機(jī)器學(xué)習(xí)的類型:
機(jī)器學(xué)習(xí)算法技術(shù)可以大致分為三種類型,
監(jiān)督機(jī)器學(xué)習(xí)——任務(wù)驅(qū)動(dòng)(分類和回歸)
無(wú)監(jiān)督機(jī)器學(xué)習(xí)——數(shù)據(jù)驅(qū)動(dòng)(聚類)
強(qiáng)化機(jī)器學(xué)習(xí)——從錯(cuò)誤中學(xué)習(xí)(獎(jiǎng)勵(lì)或懲罰)
監(jiān)督機(jī)器學(xué)習(xí):
利用標(biāo)記數(shù)據(jù)集在監(jiān)督學(xué)習(xí)中訓(xùn)練算法,其中算法學(xué)習(xí)每個(gè)類別的輸入。訓(xùn)練階段完成后,將根據(jù)測(cè)試數(shù)據(jù)(訓(xùn)練集的子集)評(píng)估算法并預(yù)測(cè)結(jié)果。監(jiān)督機(jī)器學(xué)習(xí)分為兩種類型,
回歸
如果輸入變量和輸出變量之間存在聯(lián)系,則應(yīng)用回歸程序。它用于預(yù)測(cè)連續(xù)變量,如天氣、市場(chǎng)趨勢(shì)等。
分類
當(dāng)輸出變量是分類變量時(shí),如 Yes-No、Male-Female、True-False、Normal-Abnormal 等,則使用分類方法。
什么是邏輯回歸?
我希望前面的討論能讓我們更好地了解機(jī)器學(xué)習(xí)及其各種類型。邏輯回歸是一種用于解決分類問(wèn)題的機(jī)器學(xué)習(xí)方法。它是一種基于概率思想的預(yù)測(cè)分析技術(shù)。分類算法 Logistic 回歸用于預(yù)測(cè)分類因變量的似然性。邏輯回歸中的因變量是二進(jìn)制變量,數(shù)據(jù)編碼為 1(是、真、正常、成功等)或 0(否、假、異常、失敗等)。
Logistic 回歸的目標(biāo)是發(fā)現(xiàn)特征與特定結(jié)果的可能性之間的聯(lián)系。例如,當(dāng)根據(jù)學(xué)習(xí)的小時(shí)數(shù)預(yù)測(cè)學(xué)生是否通過(guò)考試時(shí),響應(yīng)變量有兩個(gè)值:通過(guò)和失敗。
Logistic 回歸模型類似于線性回歸模型,不同之處在于 Logistic 回歸使用更復(fù)雜的成本函數(shù),稱為“Sigmoid 函數(shù)”或“邏輯函數(shù)”而不是線性函數(shù)。
很多人可能會(huì)有一個(gè)疑問(wèn),Logistic Regression 是分類還是回歸范疇。邏輯回歸假設(shè)表明成本函數(shù)被限制在 0 和 1 之間的值。因此,線性函數(shù)無(wú)法描述它,因?yàn)樗赡芫哂写笥?1 或小于 0 的值,根據(jù)邏輯邏輯,這是不可能的回歸假設(shè)。
每一位偉大領(lǐng)袖的背后,都有一個(gè)更偉大的后勤人員。

為了回答這個(gè)問(wèn)題,邏輯回歸也被認(rèn)為是一種回歸模型。該模型創(chuàng)建了一個(gè)回歸模型來(lái)預(yù)測(cè)給定數(shù)據(jù)條目屬于標(biāo)記為“1”的類別的可能性。邏輯回歸使用 sigmoid 函數(shù)對(duì)數(shù)據(jù)進(jìn)行建模,就像線性回歸假設(shè)數(shù)據(jù)服從線性分布一樣。
它被稱為“邏輯回歸”,因?yàn)槠浔澈蟮募夹g(shù)與線性回歸非常相似?!癓ogistic”這個(gè)名字來(lái)自 Logit 函數(shù),它被用于這種分類方法。
為什么我們不能使用線性回歸而不是邏輯回歸?
在回答這個(gè)問(wèn)題之前,我們先從線性回歸的概念來(lái)解釋,從頭開始才能更好地理解它。雖然邏輯回歸是線性回歸的兄弟,但它是一種分類技術(shù),盡管它的名字。數(shù)學(xué)線性回歸可以解釋為,
y = mx + c
y – 預(yù)測(cè)值
m – 線的斜率
x – 輸入數(shù)據(jù)
c- Y 軸截距或斜率
我們可以預(yù)測(cè) y 值,例如使用這些值。現(xiàn)在觀察下圖以便更好地理解,

x 值由藍(lán)點(diǎn)(輸入數(shù)據(jù))表示。我們現(xiàn)在可以使用輸入數(shù)據(jù)計(jì)算斜率和 y 坐標(biāo),以確保我們的投影線(紅線)覆蓋大部分位置。我們現(xiàn)在可以使用這條線預(yù)測(cè)給定 x 值的 y 的任何值。
關(guān)于線性回歸要記住的一件事是它只適用于連續(xù)數(shù)據(jù)。如果我們想在我們的分類方法中包含線性回歸,我們將不得不稍微調(diào)整我們的算法。首先,我們必須選擇一個(gè)閾值,如果我們的預(yù)測(cè)值小于閾值,則屬于第 1 類;否則,它屬于第 2 類。
現(xiàn)在,如果您在想,“哦,這很簡(jiǎn)單,只需創(chuàng)建帶有閾值的線性回歸,歡呼吧!分類方法,”有一個(gè)問(wèn)題。我們必須手動(dòng)指定閾值,對(duì)于龐大的數(shù)據(jù)集計(jì)算閾值將是不可能的。此外,即使我們的預(yù)期值有所不同,閾值也將保持不變。另一方面,邏輯回歸產(chǎn)生的邏輯曲線的值限制為 0 和 1。邏輯回歸中的曲線是使用目標(biāo)變量“幾率”的自然對(duì)數(shù)生成的,而不是線性回歸中的概率。此外,預(yù)測(cè)變量不需要有規(guī)律地分布或在每組中具有相同的方差。
現(xiàn)在的問(wèn)題是?
這個(gè)著名的標(biāo)題問(wèn)題由我們敬愛的人 Andrew Ng 解釋,假設(shè)我們有關(guān)于腫瘤大小和惡性程度的信息。因?yàn)檫@是一個(gè)分類問(wèn)題,我們可以看到所有的值都在 0 和 1 之間。而且,通過(guò)擬合最佳回歸線并假設(shè)閾值為 0.5,我們可以很好地處理這條線。

我們可以在 x 軸上選擇一個(gè)點(diǎn),從該點(diǎn)左側(cè)的所有值都被視為負(fù)值,而右側(cè)的所有值都被視為正值。

但是如果數(shù)據(jù)包含異常值怎么辦?事情會(huì)變得一團(tuán)糟。例如,對(duì)于 0.5 個(gè)閾值,

即使我們擬合了最佳回歸線,我們也無(wú)法確定可以區(qū)分類別的任何點(diǎn)。它將正類中的一些實(shí)例插入到負(fù)類中。綠色虛線(決策邊界)將惡性和良性腫瘤分開,但是,它應(yīng)該是一條明確區(qū)分陽(yáng)性和陰性病例的黃線。結(jié)果,即使是單個(gè)異常值也可能使線性回歸估計(jì)無(wú)效。在這里,邏輯回歸發(fā)揮了作用。
Logit 函數(shù)到 Sigmoid 函數(shù) - Logistic 回歸:
邏輯回歸可以表示為,

其中 p(x)/(1-p(x)) 稱為賠率,左側(cè)稱為 logit 或 log-odds 函數(shù)。幾率是成功幾率與失敗幾率的比值。因此,在邏輯回歸中,輸入的線性組合被轉(zhuǎn)換為 log(odds),輸出為 1。
以下是上述函數(shù)的反函數(shù)

這是 Sigmoid 函數(shù),它產(chǎn)生 S 形曲線。它總是返回一個(gè)介于 0 和 1 之間的概率值。Sigmoid 函數(shù)用于將期望值轉(zhuǎn)換為概率。該函數(shù)將任何實(shí)數(shù)轉(zhuǎn)換為 0 到 1 之間的數(shù)字。我們利用 sigmoid 將預(yù)測(cè)轉(zhuǎn)換為機(jī)器學(xué)習(xí)中的概率。
數(shù)學(xué)上的 sigmoid 函數(shù)可以是,


邏輯回歸的類型:
大體上可以分為,
1. 二元邏輯回歸——兩個(gè)或二元結(jié)果,如是或否
2. 多項(xiàng) Logistic 回歸 - 三個(gè)或更多結(jié)果,如一等、二等和三等或無(wú)學(xué)位
3.序數(shù)邏輯回歸——三個(gè)或更多類似于多項(xiàng)邏輯回歸,但這里的順序是超市中的顧客評(píng)分從 1 到 5
Logistic 回歸正常工作的要求
該模型適用于所有數(shù)據(jù)集,但是,如果您需要良好的性能,則需要考慮一些假設(shè),
1.二元邏輯回歸中的因變量必須是二元的。
2. 只應(yīng)包括相關(guān)的變量。
3. 自變量必須彼此無(wú)關(guān)。也就是說(shuō),模型中的多重共線性應(yīng)該很小或沒有。
4. 對(duì)數(shù)幾率與自變量成正比。
5.邏輯回歸需要大樣本量。
決策邊界 - Logistic 回歸
可以建立一個(gè)閾值來(lái)預(yù)測(cè)數(shù)據(jù)屬于哪個(gè)類。導(dǎo)出的估計(jì)概率基于該閾值被分類成類。
如果預(yù)測(cè)值小于 0.5,則將特定學(xué)生歸類為通過(guò);否則,將其標(biāo)記為失敗。有兩種類型的決策邊界:線性和非線性。為了提供復(fù)雜的決策邊界,可以提高多項(xiàng)式階數(shù)。
為什么用于線性的成本函數(shù)不能用于物流?
線性回歸的成本函數(shù)是均方誤差。如果這用于邏輯回歸,參數(shù)的函數(shù)將是非凸的。只有當(dāng)函數(shù)是凸函數(shù)時(shí),梯度下降才會(huì)導(dǎo)致全局最小值。
成本函數(shù) - 線性回歸與邏輯回歸
線性回歸使用最小二乘誤差作為損失函數(shù),這會(huì)產(chǎn)生一個(gè)凸網(wǎng)絡(luò),然后我們可以通過(guò)將頂點(diǎn)識(shí)別為全局最小值來(lái)優(yōu)化它。然而,對(duì)于邏輯回歸,它不再是可能的。由于假設(shè)已被修改,因此在原始模型輸出上使用 sigmoid 函數(shù)計(jì)算最小二乘誤差將導(dǎo)致具有局部最小值的非凸圖。
什么是成本函數(shù)?機(jī)器學(xué)習(xí)中使用成本函數(shù)來(lái)估計(jì)模型的性能有多差。簡(jiǎn)單地說(shuō),成本函數(shù)是衡量模型在估計(jì) X 和 y 之間的聯(lián)系方面有多不準(zhǔn)確的度量。這通常表示為預(yù)期值和實(shí)際值之間的差異或分離。機(jī)器學(xué)習(xí)模型的目標(biāo)是發(fā)現(xiàn)參數(shù)、權(quán)重或最小化成本函數(shù)的結(jié)構(gòu)。
凸函數(shù)表示曲線上任意兩點(diǎn)之間不會(huì)有交點(diǎn),但非凸函數(shù)至少會(huì)有一個(gè)交點(diǎn)。在成本函數(shù)方面,凸類型總是保證全局最小值,而非凸類型僅保證局部最小值。

如何降低成本函數(shù)?- 梯度下降
現(xiàn)在的挑戰(zhàn)是:如何降低成本價(jià)值?可以使用梯度下降來(lái)實(shí)現(xiàn)這一點(diǎn)。梯度下降的主要目標(biāo)是降低成本值。

正則化
讓我們也快速討論正則化以減少成本函數(shù)以將參數(shù)與訓(xùn)練數(shù)據(jù)匹配。L1 (Lasso) 和 L2 (Lasso) 是兩種最常見的正則化類型 (Ridge)。正則化不是簡(jiǎn)單地最大化上述成本函數(shù),而是對(duì)系數(shù)的大小施加限制以避免過(guò)度擬合。L1 和 L2 使用不同的方法來(lái)定義系數(shù)的上限,允許 L1 通過(guò)將系數(shù)設(shè)置為 0 來(lái)進(jìn)行特征選擇,以減少相關(guān)性較低的特征并減少多重共線性,而 L2 懲罰非常大的系數(shù),但不會(huì)將任何系數(shù)設(shè)置為 0。還有調(diào)節(jié)約束權(quán)重 λ 的參數(shù),以確保系數(shù)不會(huì)受到過(guò)于嚴(yán)厲的懲罰,從而導(dǎo)致欠擬合。
研究為什么 L1 和 L2 由于“平方”和“絕對(duì)”值而具有不同的容量,以及 λ 如何影響正則化和原始擬合項(xiàng)的權(quán)重,這是一個(gè)有趣的話題。我們不會(huì)在這里介紹所有內(nèi)容,但值得您花時(shí)間和精力來(lái)了解。以下步驟演示了如何將原始成本函數(shù)轉(zhuǎn)換為正則化成本函數(shù)。

Logistic 回歸如何與神經(jīng)網(wǎng)絡(luò)聯(lián)系起來(lái)?
我們都知道神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的基礎(chǔ)。最好的部分是邏輯回歸與神經(jīng)網(wǎng)絡(luò)密切相關(guān)。網(wǎng)絡(luò)中的每個(gè)神經(jīng)元都可以被認(rèn)為是一個(gè)邏輯回歸;它包含輸入、權(quán)重和偏差,在應(yīng)用任何非線性函數(shù)之前,您需要對(duì)所有這些進(jìn)行點(diǎn)積。此外,神經(jīng)網(wǎng)絡(luò)的最后一層是一個(gè)基本的線性模型(大部分時(shí)間)。這可以通過(guò)如下圖所示的可視化來(lái)理解,

深入研究“輸出層”,您會(huì)注意到它是一個(gè)基本的線性(或邏輯)回歸:我們有輸入(隱藏層 2)、權(quán)重、點(diǎn)積,最后是非線性功能,取決于任務(wù)。考慮神經(jīng)網(wǎng)絡(luò)的一種有用方法是將它們分為兩部分:表示和分類/回歸。第一部分(左側(cè))旨在開發(fā)一個(gè)體面的數(shù)據(jù)表示,這將有助于第二部分(右側(cè))進(jìn)行線性分類/回歸。

超參數(shù)微調(diào)——邏輯回歸
在邏輯回歸中沒有需要調(diào)整的基本超參數(shù)。盡管它有很多參數(shù),但以下三個(gè)參數(shù)可能有助于微調(diào)以獲得更好的結(jié)果,
正則化(懲罰)有時(shí)可能是有益的。
懲罰 -?{'l1', 'l2', 'elasticnet', 'none'}, default='l2'
懲罰強(qiáng)度由 C 參數(shù)控制,這可能很有用。
C –浮點(diǎn)數(shù),默認(rèn)值 = 1.0
使用不同的求解器,您有時(shí)可能會(huì)觀察到有用的性能或收斂變化。
求解器 -?{'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'}, default='lbfgs'
注意:要使用的算法由懲罰決定:求解器支持的懲罰:
1. 'newton-cg' – ['l2', 'none']
2. 'lbfgs' – ['l2', 'none']
3.'liblinear' - ['l1', 'l2']
4. 'sag' – ['l2', 'none']
5. 'saga' – ['elasticnet', 'l1', 'l2', 'none']
Python 實(shí)現(xiàn)
數(shù)據(jù)集:https : //http://www.kaggle.com/uciml/breast-cancer-wisconsin-data
每當(dāng)我們開始編寫程序時(shí),我們的第一步總是從導(dǎo)入庫(kù)開始,
在導(dǎo)入庫(kù)旁邊,是我們要導(dǎo)入的數(shù)據(jù),無(wú)論是從本地磁盤還是從 url 鏈接
在導(dǎo)入庫(kù)旁邊,是我們要導(dǎo)入的數(shù)據(jù),無(wú)論是從本地磁盤還是從 url 鏈接
在進(jìn)入建模之前,我們需要了解統(tǒng)計(jì)重要性以便更好地理解,

如果你了解特征之間的相關(guān)性,就會(huì)很容易處理,比如添加用于建?;騽h除
我們需要在建模之前分離依賴和獨(dú)立的特征,
我們需要拆分為標(biāo)準(zhǔn)格式(70:30 或 80:20),以便在建模過(guò)程中對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練和測(cè)試,以提高準(zhǔn)確性
由于我們有不同的特征,每個(gè)都有不同的縮放或范圍,我們需要在訓(xùn)練和新數(shù)據(jù)集期間進(jìn)行縮放以獲得更好的準(zhǔn)確性
從 scikit learn 導(dǎo)入邏輯回歸
從測(cè)試數(shù)據(jù)集預(yù)測(cè)最終結(jié)果
最后,我們需要通過(guò)混淆矩陣、準(zhǔn)確率和 roc-auc 分?jǐn)?shù)等分類指標(biāo)對(duì)其進(jìn)行評(píng)估,
可視化混淆矩陣以獲得更好的視圖,
我們模型的準(zhǔn)確性

然后最后,AUC-roc 得分值,越接近 1 使系統(tǒng)更準(zhǔn)確

Precision、Recall、F1 Score 的邏輯回歸的總體指標(biāo)報(bào)告通過(guò)我們的模型預(yù)測(cè)數(shù)據(jù)的詳細(xì)程度可以更好地理解

超參數(shù)使我們的模型可以更好地微調(diào)參數(shù),并且我們可以手動(dòng)微調(diào)我們的參數(shù)以獲得穩(wěn)健的模型,并且可以看到使用參數(shù)的重要性的差異

Logistic 回歸的優(yōu)點(diǎn)
1. 邏輯回歸不太可能過(guò)度擬合,盡管它可能發(fā)生在高維數(shù)據(jù)集中。在這些情況下,可以使用正則化(L1 和 L2)技術(shù)來(lái)最小化過(guò)擬合。
2.當(dāng)數(shù)據(jù)集線性可分時(shí)效果很好,對(duì)很多基礎(chǔ)數(shù)據(jù)集都有很好的準(zhǔn)確率。
3. 應(yīng)用、理解和培訓(xùn)更直接。
4. 關(guān)于每個(gè)特征的相關(guān)性的推斷是基于預(yù)期的參數(shù)(訓(xùn)練的權(quán)重)。協(xié)會(huì)的方向,積極的或消極的,也被指定。因此,可以使用邏輯回歸來(lái)確定特征之間的聯(lián)系。
5. 與決策樹或支持向量機(jī)不同,該技術(shù)允許輕松更改模型以合并新數(shù)據(jù)。隨機(jī)梯度下降可用于更新數(shù)據(jù)。
6. 在具有足夠訓(xùn)練實(shí)例的低維數(shù)據(jù)集中不太容易過(guò)擬合。
7. 當(dāng)數(shù)據(jù)集包含線性可分特征時(shí),Logistic Regression 表現(xiàn)出非常高效。
8. 它與神經(jīng)網(wǎng)絡(luò)非常相似。神經(jīng)網(wǎng)絡(luò)表示可以被認(rèn)為是堆疊在一起的小型邏輯回歸分類器的集合。
9. 由于其簡(jiǎn)單的概率解釋,邏輯回歸方法的訓(xùn)練時(shí)間比大多數(shù)復(fù)雜算法(例如人工神經(jīng)網(wǎng)絡(luò))的訓(xùn)練時(shí)間要小得多。
10. 多項(xiàng) Logistic 回歸是一種方法的名稱,該方法可以使用 softmax 分類器輕松擴(kuò)展到多類分類。
邏輯回歸的缺點(diǎn)
1. 如果觀察數(shù)少于特征數(shù),則不應(yīng)使用 Logistic 回歸;否則,可能會(huì)導(dǎo)致過(guò)擬合。
2. 因?yàn)樗鼊?chuàng)建了線性邊界,所以在處理復(fù)雜或非線性數(shù)據(jù)時(shí)我們不會(huì)獲得更好的結(jié)果。
3. 只對(duì)預(yù)測(cè)離散函數(shù)有用。因此,Logistic 回歸因變量?jī)H限于離散數(shù)集。
4.邏輯回歸要求自變量之間存在平均或不存在多重共線性。
5. 邏輯回歸需要一個(gè)大數(shù)據(jù)集和足夠的訓(xùn)練樣本來(lái)識(shí)別所有類別。
6. 由于此方法對(duì)異常值敏感,數(shù)據(jù)集中存在與預(yù)期范圍不同的數(shù)據(jù)值可能會(huì)導(dǎo)致錯(cuò)誤結(jié)果。
7. 僅應(yīng)利用重要和相關(guān)的特征來(lái)構(gòu)建模型;否則,模型的概率預(yù)測(cè)可能不準(zhǔn)確,其預(yù)測(cè)值可能會(huì)受到影響。
8. 復(fù)雜的連接很難用邏輯回歸表示。這種技術(shù)很容易被更強(qiáng)大和更復(fù)雜的算法(如神經(jīng)網(wǎng)絡(luò))所超越。
9. 由于邏輯回歸具有線性決策面,因此無(wú)法解決非線性問(wèn)題。在現(xiàn)實(shí)世界中,線性可分的數(shù)據(jù)并不常見。因此,必須對(duì)非線性特征進(jìn)行轉(zhuǎn)換,這可以通過(guò)增加特征的數(shù)量來(lái)完成,以便數(shù)據(jù)可以在更高維度上線性分離。
10. 基于自變量,統(tǒng)計(jì)分析模型旨在預(yù)測(cè)準(zhǔn)確的概率結(jié)果。在高維數(shù)據(jù)集上,這可能會(huì)導(dǎo)致模型在訓(xùn)練集上過(guò)度擬合,夸大訓(xùn)練集預(yù)測(cè)的準(zhǔn)確性,從而阻止模型準(zhǔn)確預(yù)測(cè)測(cè)試集上的結(jié)果。當(dāng)模型在少量具有許多特征的訓(xùn)練數(shù)據(jù)上進(jìn)行訓(xùn)練時(shí),這是最常見的。應(yīng)該在高維數(shù)據(jù)集上探索正則化策略,以最大限度地減少過(guò)度擬合(但這會(huì)使模型變得復(fù)雜)。如果正則化參數(shù)過(guò)高,模型可能在訓(xùn)練數(shù)據(jù)上欠擬合。
邏輯回歸的應(yīng)用
邏輯回歸涵蓋了所有必須將數(shù)據(jù)分類為多個(gè)組的用例??紤]下圖:
信用卡欺詐檢測(cè)
電子郵件垃圾郵件
Twitter分析中的情緒分析
圖像分割、識(shí)別和分類 – X 射線、掃描
通過(guò)視頻進(jìn)行物體檢測(cè)
手寫識(shí)別
疾病預(yù)測(cè)——糖尿病、癌癥、帕金森等……
手把手教你構(gòu)建邏輯回歸模型就為大家介紹到這里了,歡迎各位同學(xué)報(bào)名<python金融風(fēng)控評(píng)分卡模型和數(shù)據(jù)分析微專業(yè)課>,學(xué)習(xí)更多相關(guān)知識(shí)。

版權(quán)聲明:文章來(lái)自公眾號(hào)(python風(fēng)控模型),未經(jīng)許可,不得抄襲。遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。