機器學習(8)- 邏輯迴歸

3.邏輯迴歸

3.1 邏輯迴歸介紹【****】

  1. 使用場景:
    • 一般用於解決二分類問題
    • 是否患病, 是不是金融詐騙, 是不是垃圾郵件, 要不要貸款, …
  2. 原理:
    1. 邏輯迴歸的輸入是什麼: 線性迴歸的輸出
    2. 邏輯迴歸的使用的是什麼激活函數, 它的作用是什麼?
      • 激活函數: sigmoid
        • 作用:
          • 把線性迴歸輸出壓縮到(0,1)之間, 作爲這個事件是否發生概率值; 如果概率值大於閾值, 就閾值預測該事件會發生, 如果概率值小於閾值, 預測事件不會發生; 閾值默認是0.5, 也可以根據具體情況進行調整.
        • 注意: 閾值默認是0.5, 也可以根據具體情況進行調整.
  3. 損失函數:
    • 爲了得到一個更好預測結果:
      • 提高真實類別爲1的概率值, 降低真實類別爲0的概率值
    • 損失函數: 對數似然損失
      • 特點:
        • 真實類別爲1, 概率值越越大損失越小.
        • 真實類別爲0, 概率值越越小損失越小
  4. 優化:
    • 通過求解損失函數的最小值, 就可以最近的邏輯迴歸模型
    • 步驟:
      • 對損失求導
      • 使用梯度下降, 不斷優化模型係數
      • 得到一個最佳的邏輯迴歸模型.

3.2 api介紹

  • sklearn.linear_model.LogisticRegression(solver=‘liblinear’, penalty=‘l2’, C = 1.0)
    • solver可選參數: ‘liblinear’, ‘sag’, ‘saga’,‘newton-cg’, ‘lbfgs’
      • 默認: ‘liblinear’;內部使用了座標軸下降法迭代優化損失, 用於優化問題的算法。
      • 對於小數據集來說,“liblinear”是個不錯的選擇,而“sag”和’saga’對於大型數據集會更快。
      • 對於多類問題,只有’newton-cg’, ‘sag’, 'saga’和’lbfgs’可以處理多項損失;“liblinear”僅限於“one-versus-rest”分類。
    • penalty:正則化的種類
    • C:正則化力度

3.3 案例

  • 步驟:
    1. 加載數據
    2. 數據基本處理
      1. 處理缺失值
      2. 確定特徵值和目標值
      3. 分割數據集
    3. 特徵工程-特徵預處理-標準化
    4. 機器學習(訓練邏輯迴歸模型)
    5. 模型評估
  • 注意: 只有準確率進行評估, 還不夠.

3.4 分類評估方式[*****]

  1. 混淆矩陣

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3X6jid4k-1571483307706)(混淆矩陣.png)]

  2. 準確率: 所有樣本中預測正確的比例

  3. 精確率: 所有預測爲正例的樣本中, 真實爲正例的比例(查的準不準)

  4. 召回率: 所有真實爲正例的樣本中, 預測爲正例的比例(查的全不全)

  5. F1-Score: 精確率與召回率的結合, 用於衡量模型的穩健性.

  • API:
    • sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )
  • 參數:
    • y_true: 真實的目標值
    • y_pred: 預測的目標值
    • labels: 目標值列表
    • target_names: 目標值的名稱列表
    • 結果:
      • 精確率,召回率, F1-Score
  1. ROC曲線和AUC指標
    • ROC曲線和AUC指標作用:
      • 用於解決樣本不均衡下的分類模型評估問題的.
    • ROC曲線:
      • 縱座標: TPR , 所有真實類別爲1(正例)的樣本中, 預測爲1(正例)的比例
      • 橫座標: FPR, 所有真實類別爲0(反例)的樣本中, 預測爲1(正例)比例
    • AUC指標:
      • AUC在[0.5, 1] 越接近與1說明這個模型評估效果越好, 越接近與0.5 越是是亂猜(效果越差)
  2. API:
    • from sklearn.metrics import roc_auc_score
    • sklearn.metrics.roc_auc_score(y_true, y_score)
      • 參數
        • y_true:真實目標值, 反例必須是0, 正例必須是1
        • y_score:預測值
      • 返回值:
        • AUC的指標的值.

3.5 ROC曲線的繪製【###】

  1. 繪製過程:

    1. 訓練一個二分類模型
    2. 使用這個模型, 對數據進行預測
    3. 按照預測概率值從大到小排列
    4. 按照從前往後計算每一個點的TPR(真實爲正例的樣本中, 預測爲正例比例)和FPR(真實爲假例的樣本中, 預測爲正例比例), 在座標系上描點
    5. 使用線把所有依次鏈接起來; 這個連接起來的線就是ROC曲線
    6. ROC曲線下面積就是AUC指標的值.
  2. AUC指標:

    • 概率意義; 隨機選擇一個正樣本和一個負樣本, 正樣本得分大於負樣本得分概率.
    • 幾何意義: ROC曲線下面的面積 等價於對ROC求積分.
    • AUC指標作用: AUC指標越接近與1說明模型越好, AUC指標越接近與0.5說明模型越接近於亂猜, AUC<0.5亂猜都不如.

4.決策樹

4.1 決策樹算法簡介

  • 決策樹: 由多個判斷節點組成樹, 葉子節點就是判斷結果.

4.2 決策樹分類原理

  1. 信息熵

    • 用於描述信息的純度, 信息熵越小, 純度越高, 信息熵越大純度越低
    • 公式: Ent(D)=k=1npklog2pk Ent(D) = -\sum_{k=1}^n p_klog_2p_k
  2. 信息增益(ID.3)

    • 信息增益 = 劃分前信息熵 - 按照某個屬性劃分後信息熵
    • 意義:
      • 信息增益越大, 說明這個屬性越重要.
      • 在進行決策樹屬性劃分的時候, 就選擇信息增益大屬性進行劃分.
  3. 信息增益率(C4.5決策樹算法):

    1. 信息增益率概念

      • 爲了解決: 解決信息增益傾向於選擇多分支屬性的缺點.
      • 計算公式: 屬性的信息增益/屬性的信息分裂度量
    2. 信息增益率算法流程:

      1. 計算整體信息熵
      2. 計算按照每一個屬性劃分的條件熵
      3. 計算每一個屬性的信息增益
      4. 計算每一個屬性的信息分裂度量
      5. 計算每一個屬性的信息增益率
      6. 選擇信息增益率大的屬性進行劃分.
    3. C4.5算法的優點:

      1. 使用信息增益率來選擇劃分屬性, 避免使用信息增益傾向於選擇多分支屬性的缺點
        • 屬性信息增益率 =屬性 信息增益 / 屬性信息分裂度量
      2. 採用後剪枝的技術, 避免決策樹的過擬合
      3. 可以處理缺失值.
  4. ID3算法: 使用信息增益作爲劃分屬性的. 缺點: 傾向於選擇多分支屬性

    1. 基尼指數
    • 基尼值: 隨機選擇兩個樣本類別標記不一致概率; 基尼值越小信息純度越高
      • 計算公式: Gini(D)=1k=1ypk2 Gini(D) = 1 - \sum_{k=1}^{|y|} p_k^2
    • 基尼指數: 按照某種分割方式劃分的後的基尼值
      • 我們在進行決策樹劃分的時候, 就選擇劃分後基尼指數最小的劃分方式進行劃分.
    • CART決策樹算法流程:
      1. 計算每一個屬性的每一個劃分方式的基尼指數
      2. 選擇基尼指數最小的劃分方式進行劃分 N1, N2
      3. 如果劃分的節點不純, 重複1,2 繼續劃分
      4. 直到所有節點都純爲止.
知道邏輯迴歸的損失函數
- 對數似然損失
	- 特點: 
		- 真實類別爲1, 概率值越大, 損失越小
		- 真實類別爲0, 概率值越小, 損失越小
	- 優化:
		- 思想: 提高真實類別爲1概率, 降低真實類別爲0的概率
		- 做法:
			- 通過梯度下降求解損失函數最小值. 

知道邏輯迴歸的優化方法
-  提高真實類別爲1概率, 降低真實類別爲0的概率

知道sigmoid函數
- 作用: 把線性迴歸輸出, 映射到(0,1)之間, 作爲分類概率值, 如果大於閾值就是正例(1), 如果小於等於閾值就是反例(0)

知道邏輯迴歸的應用場景
- 用於二分類的預測
- 常見:
	- 是否患病
	- 是否是垃圾郵件
	- 是否放貸
	- 是不是電子詐騙
	- ...

應用LogisticRegression實現邏輯迴歸預測
- 創建邏輯迴歸評估器
- 調用fit方法訓練模型
- 調用predict方法, 進行預測. 

# 4. 機器學習(訓練邏輯迴歸模型)
estimator = LogisticRegression()
estimator.fit(x_train, y_train)

# 5. 模型評估
y_predict = estimator.predict(x_test)
print('預測值', y_predict)
print('真實值', y_test)

# 計算準確率
score = estimator.score(x_test, y_test)
print('準確率', score)


知道精確率、召回率指標的區別
精確率: 所有預測爲正例的樣本中, 真實爲正例的比例(查的準不準)
召回率: 所有真實爲正例的樣本中, 預測爲正例的比例(查的全不全)

知道如何解決樣本不均衡情況下的評估
- 使用AUC指標, 進行評估

瞭解ROC曲線的意義說明AUC指標大小
- AUC的值就是ROC曲線下面的面積
- AUC越接近1, 模型越好, 越接近與0.5越接近與亂猜. 

應用roc_auc_score實現指標計算
# AUC指標
from sklearn.metrics import roc_auc_score
# 把真實的目標值, 轉換爲0,1
y_true = np.where(y_test==4, 1, 0)
# y_true
# 計算AUC指標
rs = roc_auc_score(y_true, y_predict)
print('AUC指標',rs)

應用classification_report實現精確率,召回率計算
# 精確率, 召回率, F1-Score
from sklearn.metrics import classification_report
ret = classification_report(y_test, y_predict, labels=[2, 4], target_names=['良性', '惡性'])
print(ret)

掌握決策樹實現過程
- 選擇對分類來說最重要屬性進行劃分
- 如果劃分節點不純, 繼續 選擇對分類來說最重要屬性進行劃分
- 直到所有的節點都純了爲止. 

知道信息熵的公式以及作用
- 類別的信息熵 = 這個屬性每一個分支的概率*這個概率值的對數求和, 整體加負號. 

知道信息增益的作用
1. 用於衡量某個屬性對分類重要程度的指標. 
2. 在決策樹中, 選擇信息增益大屬性進行劃分. 

知道信息增益率的作用
1. 用於衡量某個屬性對分類重要程度的指標. 
2. 在決策樹中, 選擇信息增益率大屬性進行劃分. 
3. 避免了信息增益傾向於選擇多值的屬性的缺點


知道基尼指數則作用
基尼指數: 按照某個屬性的某個分割方式分割後的基尼值. 
基尼指數越小, 就說明按照這種分割方式分割後純度越高
在決策樹中, 就選擇基尼指數最小的劃分方式進行劃分. 

知道id3,c4.5,cart算法的區別
id3決策樹算法:
	1. 使用信息增益作爲劃分依據, 傾向於選擇多值屬性
	2. 只能處理的離散屬性, 不能處理的連續屬性

C4.5決策樹
	1. 使用信息增益率作爲劃分依據, 避免使用信息增益傾向於選擇多值屬性的缺點
	2. 可以處理離散屬性和連續屬性
	3. 使用後剪枝技術, 避免了決策樹過擬合
	4. 能夠處理缺失值. 
CART決策樹
	1. 使用基尼指數作爲劃分依據
	2. 可以處理離散屬性和連續屬性
	3. 計算量比較小, 速度比較快. 
	4. CART決策樹一定是一個二叉樹. 


發佈了112 篇原創文章 · 獲贊 316 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章