top of page

機器學習: 線性回歸(Linear Regression) 到邏輯回歸(Logistic Regression)的逐步解釋

Sep 9, 2024

4 min read

0

41

0



邏輯回歸(Logistic Regression)是一種核心的監督學習技術(Supervised Learning),用於解決分類問題。本文將超越簡單的代碼,首先理解該方法背後的概念,以及它如何從更基本的線性回歸技術中演變而來。


當我們討論解決分類問題時,邏輯回歸應該是我們首先想到的監督學習類算法,並且被許多數據科學家和統計學家廣泛使用。它基礎、強大且易於實現。更重要的是,其基本理論概念對於理解深度學習至關重要。因此,我相信每一位熱衷於機器學習的人都應該對邏輯回歸及其背後的理論有扎實的基礎。現在,讓我們開始揭開回歸的神秘面紗(從簡單線性回歸到邏輯回歸的轉變)!


相信每個人都應該在高中數學課上聽說過或學過線性模型。線性回歸是預測建模分析中最簡單和最廣泛使用的統計技術。它用來解釋因變量(目標)與一個或多個自變量(預測變量)之間的關係,並使用一條直線來表示。

線性回歸有兩種類型:簡單線性回歸和多重線性回歸。

簡單線性回歸的四個假設

  1. 線性:X和Y的均值之間的關係是線性的。

  2. 同方差性:殘差的方差對任何X值都是相同的(誤差的常數方差)。

  3. 獨立性:觀測值彼此獨立。

  4. 正態性:誤差(殘差)遵循正態分布


註:一個解釋變數(x)的簡單線性迴歸:藍點是實際樣本,我們能夠找到姐線(y),所有點都可以使用一條(單)直線與線性迴歸連接。



你可能會問:“如何畫出最接近這些(樣本)點的直線?”

最常用的擬合回歸線的方法是普通最小二乘法,該方法用於最小化觀測值(yi)和預測值(ŷi)之間的平方誤差和(SSE)或均方誤差(MSE)。

從數字到二進位


現在我們有一個分類問題,我們希望預測二元輸出變量Y(兩個值:1或0)。例如,擲硬幣的情況(正面/反面)。響應yi是二元的:如果硬幣是正面則為1,反面則為0。這由伯努利變量表示,其中概率的範圍被限制在0和1之間。


線性回歸僅處理連續變量(continuous variables),而不是伯努利變量(Bernoulli variables)。線性回歸的問題在於,這些預測對於分類來說不合理,因為真實概率必須介於0和1之間,但可能大於1或小於0。注意到分類不符合正態分布,這違反了假設4:正態性。此外,均值和方差都依賴於底層概率。任何影響概率的因素都會改變不僅是均值,還有觀測值的方差,這意味著方差不再保持常數,違反了假設2:同方差性。因此,我們不能直接應用線性回歸,因為它不會是良好的擬合。


那麼,我們如何預測分類問題呢?


相反,我們可以將線性回歸轉換為邏輯回歸曲線!

現在我們尋找一個概率模型,我們應確保模型預測的值在0到1之間。強大的通用線性模型(GLM)滿足這些情況,允許響應變量具有任意分布(而不僅僅是正態分布),並通過使用鏈接函數,使得預測值呈線性變化,而不是假設響應本身必須隨預測變量線性變化。因此,GLM在建模上提供了額外的靈活性。在這種情況下,我們需要應用邏輯函數(也稱為“逆邏輯”或“ sigmoid 函數”)。

邏輯回歸是一種通用線性模型。

在深入邏輯回歸之前,我們需要澄清一些統計術語的基本概念——概率和賠率。

事件發生的概率是你期望在多次試驗中看到該事件的次數的比例。如果事件發生的概率是Y,那麼事件不發生的概率則是1-Y。概率始終在0和1之間。


賠率被定義為事件發生的概率除以事件不發生的概率。與概率不同,賠率不受限於0和1之間,而可以取從零到無限的任何值。


如果成功的概率是P,那麼該事件的賠率為:

Odds = P/(1-P)


Y

1

0

Pr(Y = 1)

P

1-P

註:賠率:成功/失敗


例如:如果成功的概率(P)為0.60(60%),那麼失敗的概率(1-P)為1–0.60 = 0.40(40%)。那麼賠率為0.60 / (1–0.60) = 0.60/0.40 = 1.5。


現在是時候將模型從線性回歸轉變為邏輯回歸,使用邏輯函數。


註:In (odd)=bo+b1x


註: 邏輯函數(也稱為“逆邏輯函數”)


我們可以從上圖中看到,線性回歸的輸出通過sigmoid函數(logit函數),可以將任何實值映射到0和1之間。


邏輯回歸主要用於預測二元變量,而不是預測連續變量




恭喜你! 你已經了解了回歸模型的所有理論概念。覺得無聊嗎?這裡有一個真實案例讓你動手實踐!


想像一下,你是一家蘋果店的經理,這個月你的目標是增加10%的銷售收入。因此,你需要知道誰是潛在客戶,以最大化銷售額。

你擁有的客戶信息包括預估薪資、性別、年齡和客戶ID。




如果現在我們有一個潛在客戶,他37歲,收入67,000美元,我們能否預測他是否會購買iPhone(購買?/不購買?)


編程時間:讓我們用 Scikit-learn 建立一個邏輯迴歸模型來預測潛在客戶是誰!

# import the libraries

import numpy as np

import pandas as pd


# import the dataset

dataset = pd.read_csv('Social_Network_Ads.csv')


# get dummy variables

df_getdummy=pd.get_dummies(data=df, columns=['Gender'])


# seperate X and y variables

X = df_getdummy.drop('Purchased',axis=1)

y = df_getdummy['Purchased']


# split the dataset into the Training set and Test set

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)



# feature scaling

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.transform(X_test)


# fit Logistic Regression to the training set

from sklearn.linear_model import LogisticRegression



classifier = LogisticRegression(random_state = 0)

classifier.fit(X_train, y_train)


# predict the Test set results

y_pred = classifier.predict(X_test)



# make the confusion matrix for evaluation

from sklearn.metrics import confusion_matrix

confusion_matrix(y_test, predictions)


# find accuracy socre (Accuracy = number of times you’re right / number of predictions)

from sklearn.metrics import accuracy_score

accuracy_score(y_true=y_train, y_pred=LogReg_model.predict(X_train))


文章重點

  • 線性回歸的局限性

  • 對“賠率”和“概率”的理解

  • 從線性回歸到邏輯回歸的轉變

  • 邏輯回歸如何在Python中解決分類問題



有關編碼和資料集,請查看此處

Sep 9, 2024

4 min read

0

41

0

Comments

Share Your ThoughtsBe the first to write a comment.
bottom of page