邏輯斯諦回歸:詳細解析

邏輯斯諦回歸(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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TXDNF的頭像TXDNF
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • Python底層邏輯解析

    Python作為一種高級編程語言,越來越受到開發者的青睞。但是作為一名優秀的Python開發者,對Python底層的邏輯也需要有一定了解。本文將從多個方面詳細闡述Python底層邏…

    編程 2025-04-27
  • Python邏輯運算符優先級

    本篇文章將從多個方面對Python邏輯運算符優先級進行詳細闡述,包括優先級規則、優先級示例及代碼實現等內容。 一、優先級規則 在Python中,邏輯運算符的優先級從高到低依次為「n…

    編程 2025-04-27
  • 邏輯回歸對自變量的要求

    邏輯回歸是一種常用的分類算法,它通過訓練樣本數據來建立模型,並通過對新樣本的歸類來預測輸出結果。邏輯回歸對自變量有一定的要求,本文將從多個方面進行闡述。 一、變量的線性關係 邏輯回…

    編程 2025-04-27
  • Cut 幾列: 從數據切片到邏輯建模

    本文將從數據、數據處理、邏輯建模等多個方面詳細闡述 Cut 幾列。同時,提供完整的代碼示例,以便讀者深入理解。 一、數據切片 Cut 幾列是一個常用的數據處理工具,主要用於將數據按…

    編程 2025-04-27
  • if not in case – Python中使用if語句進行邏輯判斷的技巧

    if語句是Python中進行邏輯判斷的基礎語句之一。在if語句中,我們可以使用not關鍵字和in關鍵字來進行更加靈活的判斷。本文將詳細介紹Python中使用if not in ca…

    編程 2025-04-27
  • Python邏輯回歸梯度下降法

    本文將通過Python邏輯回歸梯度下降法,對於邏輯回歸的原理、實現方法和應用進行詳細闡述。 一、邏輯回歸原理 邏輯回歸是一種常用的分類算法,其原理可以用線性回歸模型來描述,將線性回…

    編程 2025-04-27
  • index.html怎麼打開 – 詳細解析

    一、index.html怎麼打開看 1、如果你已經擁有了index.html文件,那麼你可以直接使用任何一個現代瀏覽器打開index.html文件,比如Google Chrome、…

    編程 2025-04-25
  • Resetful API的詳細闡述

    一、Resetful API簡介 Resetful(REpresentational State Transfer)是一種基於HTTP協議的Web API設計風格,它是一種輕量級的…

    編程 2025-04-25
  • neo4j菜鳥教程詳細闡述

    一、neo4j介紹 neo4j是一種圖形數據庫,以實現高效的圖操作為設計目標。neo4j使用圖形模型來存儲數據,數據的表述方式類似於實際世界中的網絡。neo4j具有高效的讀和寫操作…

    編程 2025-04-25
  • 關鍵路徑的詳細闡述

    關鍵路徑是項目管理中非常重要的一個概念,它通常指的是項目中最長的一條路徑,它決定了整個項目的完成時間。在這篇文章中,我們將從多個方面對關鍵路徑做詳細的闡述。 一、概念 關鍵路徑是指…

    編程 2025-04-25

發表回復

登錄後才能評論