ML算法基礎——分類算法-邏輯迴歸

1.邏輯迴歸

1.1 邏輯迴歸簡介

邏輯迴歸(Logistic Regression)是一種用於解決二分類(0 or 1)問題的機器學習方法,用於估計某種事物的可能性。比如某用戶購買某商品的可能性,某病人患有某種疾病的可能性,以及某廣告被用戶點擊的可能性等。 注意,這裏用的是“可能性”,而非數學上的“概率”,logisitc迴歸的結果並非數學定義中的概率值,不可以直接當做概率值來用。該結果往往用於和其他特徵值加權求和,而非直接相乘。

以胃癌病情分析爲例,選擇兩組人羣,一組是胃癌組,一組是非胃癌組,兩組人羣必定具有不同的體徵與生活方式等。因此因變量就爲是否胃癌,值爲“是”或“否”,自變量就可以包括很多了,如年齡、性別、飲食習慣、幽門螺桿菌感染等。自變量既可以是連續的,也可以是分類的。然後通過logistic迴歸分析,可以得到自變量的權重,從而可以大致瞭解到底哪些因素是胃癌的危險因素。同時根據該權值可以根據危險因素預測一個人患癌症的可能性。

1.2 邏輯迴歸與線性迴歸的區別與聯繫

邏輯迴歸(Logistic Regression)與線性迴歸(Linear Regression)都是一種廣義線性模型(generalized linear model)。邏輯迴歸假設因變量 y 服從伯努利分佈,而線性迴歸假設因變量 y 服從高斯分佈。 因此與線性迴歸有很多相同之處,去除Sigmoid映射函數的話,邏輯迴歸算法就是一個線性迴歸。可以說,邏輯迴歸是以線性迴歸爲理論支持的,但是邏輯迴歸通過Sigmoid函數引入了非線性因素,因此可以輕鬆處理0/1分類問題。

1.3 邏輯迴歸公式

Sigmoid函數
Sigmoid函數,也稱爲邏輯函數(Logistic function)

g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}

image

sigmoid函數是一個s形的曲線,它的取值在[0, 1]之間,在遠離0的地方函數的值會很快接近0或者1。它的這個特性對於解決二分類問題十分重要

邏輯迴歸公式:

邏輯迴歸模型所做的假設是
image

這個函數的意思就是在給定x和θ\theta的條件下 y=1 的概率。

hθ(x)=g(θTx)=11+eθTxh_\theta(x)=g(\theta^{T}x)=\frac{1}{1+e^{-\theta^{T}x}}

g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}

輸出:[0,1]區間的概率值,默認0.5作爲閥值

注:g(z)爲sigmoid函數

1.4 邏輯迴歸的損失函數、優化

與線性迴歸原理相同,但由於是分類問題,
損失函數不一樣,只能通過梯度下降求解

對數似然損失函數:
image

完整的損失函數:
image

cost損失的值越小,那麼預測的類別準確度更高

2.邏輯迴歸案例

2.1 sklearn邏輯迴歸API

sklearn.linear_model.LogisticRegression

  • sklearn.linear_model.LogisticRegression(penalty=‘l2’, C = 1.0)

    • Logistic迴歸分類器
    • coef_:迴歸係數

2.2 良/惡性乳腺癌腫瘤預測案例

原始數據的下載地址:
https://archive.ics.uci.edu/ml/machine-learning-databases/

數據描述
(1)699條樣本,共11列數據,第一列用語檢索的id,後9列分別是與腫瘤相關的醫學特徵,最後一列表示腫瘤類型的數值。

(2)包含16個缺失值,用”?”標出。

良/惡性乳腺癌腫分類流程

1、網上獲取數據(工具pandas)
2、數據缺失值處理、標準化
3、LogisticRegression估計器流程

from sklearn.datasets import  load_boston
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
import pandas as pd
import numpy as np

def logistic():
    #構造列標籤
    column_names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
                    'Marginal Adhesion','Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin', 'Normal Nucleoli', 'Mitoses', 'Class']
    # 讀取數據
    data=pd.read_csv('breast-cancer-wisconsin.data',names=column_names)
    print(data)
    # 缺失值進行處理
    data = data.replace(to_replace='?', value=np.nan)

    data = data.dropna()

    #分割
    x_train, x_test, y_train, y_test = train_test_split(data[column_names[1:10]], data[column_names[10]], test_size=0.25)
    #標準化處理
    std=StandardScaler()
    x_train=std.fit_transform(x_train)
    x_test=std.transform(x_test)

    #邏輯迴歸預測
    lg=LogisticRegression(C=1.0)
    lg.fit(x_train,y_train)
    y_predict=lg.predict(x_test)
    print(lg.coef_)
    print("準確率:",lg.score(x_test,y_test))
    print("召回率:", classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "惡性"]))

    return None


logistic()

結果:

準確率: 0.9766081871345029
召回率:               precision    recall  f1-score   support

          良性       0.97      0.99      0.98       111
          惡性       0.98      0.95      0.97        60

   micro avg       0.98      0.98      0.98       171
   macro avg       0.98      0.97      0.97       171
weighted avg       0.98      0.98      0.98       171 

3.LogisticRegression總結

應用:廣告點擊率預測、電商購物搭配推薦

優點:適合需要得到一個分類概率的場景

缺點:當特徵空間很大時,邏輯迴歸的性能不是很好
(看硬件能力)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章