邏輯斯諦回歸(Logistic Regression)是一種常見的分類算法,它可以用於二元分類和多元分類問題,如信用卡詐騙、疾病診斷等。下面我們將從多個方面闡述邏輯斯諦回歸的基本原理和應用。
一、模型基礎
邏輯斯諦回歸是一種基於概率的分類算法,其本質是在對連續函數進行非線性變換後,利用最大似然估計的方法來估計各變量的係數,從而得到分類函數。
通常我們採用sigmoid函數(也稱為logistic函數),將函數值映射到0~1之間,用於表示輸出屬於某一類的概率。sigmoid函數的定義為:
def sigmoid(x): return 1 / (1 + np.exp(-x))
其中,exp(x)是自然指數函數,np是numpy庫中的函數。sigmoid函數的圖像如下所示:
該函數有如下特點:
- 當x趨近正無窮時,f(x)趨近於1;
- 當x趨近負無窮時,f(x)趨近於0;
- 當x=0時,f(x) = 0.5。
邏輯斯諦回歸的分類函數通常用以下形式表示:
y = f(w.T * x + b)
其中x是輸入特徵向量,w是輸入權重向量(即我們要學習的參數),b是偏置量,f是sigmoid函數。此時,輸出y在0和1之間。我們可以將輸出y表示為樣本屬於某一類的概率。
二、參數估計
邏輯斯諦回歸的參數估計是通過最大似然估計來得到的,即找到一組w和b,使得似然函數L達到最大值。似然函數的定義為:
L(w, b) = ∏i=1N (f(w.T * xi + b))yi (1 – f(w.T * xi + b))1-yi
其中,N是樣本數,xi和yi分別是第i個樣本的特徵向量和分類標籤。
在求解L(w, b)兩側的對數後,我們可以得到似然函數的對數,也稱為對數似然函數,它通常表示為下式:
LL(w, b) = Σi=1N [yilogf(w.T * xi + b) + (1 – yi)log(1 – f(w.T * xi + b))]
此時,對數似然函數為一個凸函數,通常採用梯度下降法或牛頓法等優化算法來最大化對數似然函數,求解參數w和b。
在實現梯度下降法的時候,我們還需要計算似然函數的梯度,即:
def gradient(X, Y, w, b): Z = np.dot(X, w) + b A = sigmoid(Z) dZ = A - Y dw = np.dot(X.T, dZ) / m db = np.mean(dZ) return dw, db
三、模型評估
為了對我們訓練好的邏輯斯諦回歸模型進行評估,我們需要計算模型準確率以及其他指標,比如精確度、召回率和F1分數等。
對於二元分類問題,準確率計算公式如下:
Accuracy = (TP+TN)/(TP+TN+FP+FN)
其中,TP指的是真陽性,TN指的是真陰性,FP指的是假陽性,FN指的是假陰性。精確度和召回率計算公式分別如下:
Precision = TP / (TP + FP)
Recall = TP / (TP + FN)
F1分數則是精確度和召回率的一個加權平均數,計算公式如下:
F1 = 2 * Precision * Recall / (Precision + Recall)
我們可以使用Python中的Sklearn庫實現這些指標的計算,具體代碼如下:
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score y_pred = clf.predict(X_test) acc = accuracy_score(y_test, y_pred) prec = precision_score(y_test, y_pred) rec = recall_score(y_test, y_pred) f1 = f1_score(y_test, y_pred) print("Accuracy: ", acc) print("Precision: ", prec) print("Recall: ", rec) print("F1 Score: ", f1)
四、樣本權重調整
在邏輯斯諦回歸中,我們有時需要通過樣本的權重來調整模型,提高模型的分類準確率。樣本權重可以通過建立一個損失函數,在其中加入樣本權重後進行最小化,從而得到改進後的模型。
以權重為1和0.5的MNIST數據集為例,我們可以給出相應的損失函數,代碼如下:
def sigmoid(z): return 1 / (1 + np.exp(-z)) def loss(w, X, y, l1=0.0, l2=0.0): z = np.dot(X, w[:-1]) + w[-1] prob = sigmoid(z) log_loss = (1 - y) * np.log(1 - prob) + y * np.log(prob) sum_weight = np.sum(instance_weights) return np.mean(sum_weight * log_loss) + l1 * np.sum(np.abs(w)) + 0.5 * l2 * np.sum(w**2)
在模型訓練時,我們可以根據實際情況設定樣本權重。
五、典型應用
邏輯斯諦回歸是一種廣泛應用於分類問題的算法,其中一些典型案例可以列舉如下:
- 信用卡欺詐檢測:通過分析用戶信息、交易信息和支付行為等來識別信用卡欺詐行為;
- 癌症診斷:通過分析病人的生物標誌物、基因突變和家族史等來診斷是否患有癌症;
- 商品推薦系統:根據用戶歷史行為、個人信息以及社交網絡等信息來預測用戶喜好和需求,從而推薦相應的商品。
通過邏輯斯諦回歸算法,我們可以針對不同的應用場景,訓練出相應的模型,從而實現預測、分類和推薦等功能。
原創文章,作者:TXDNF,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/324867.html