3.邏輯迴歸
3.1 邏輯迴歸介紹【****】
- 使用場景:
- 一般用於解決二分類問題
- 是否患病, 是不是金融詐騙, 是不是垃圾郵件, 要不要貸款, …
- 原理:
- 邏輯迴歸的輸入是什麼: 線性迴歸的輸出
- 邏輯迴歸的使用的是什麼激活函數, 它的作用是什麼?
- 激活函數: sigmoid
- 作用:
- 把線性迴歸輸出壓縮到(0,1)之間, 作爲這個事件是否發生概率值; 如果概率值大於閾值, 就閾值預測該事件會發生, 如果概率值小於閾值, 預測事件不會發生; 閾值默認是0.5, 也可以根據具體情況進行調整.
- 注意: 閾值默認是0.5, 也可以根據具體情況進行調整.
- 作用:
- 激活函數: sigmoid
- 損失函數:
- 爲了得到一個更好預測結果:
- 提高真實類別爲1的概率值, 降低真實類別爲0的概率值
- 損失函數: 對數似然損失
- 特點:
- 真實類別爲1, 概率值越越大損失越小.
- 真實類別爲0, 概率值越越小損失越小
- 特點:
- 爲了得到一個更好預測結果:
- 優化:
- 通過求解損失函數的最小值, 就可以最近的邏輯迴歸模型
- 步驟:
- 對損失求導
- 使用梯度下降, 不斷優化模型係數
- 得到一個最佳的邏輯迴歸模型.
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:正則化力度
- solver可選參數: ‘liblinear’, ‘sag’, ‘saga’,‘newton-cg’, ‘lbfgs’
3.3 案例
- 步驟:
- 加載數據
- 數據基本處理
- 處理缺失值
- 確定特徵值和目標值
- 分割數據集
- 特徵工程-特徵預處理-標準化
- 機器學習(訓練邏輯迴歸模型)
- 模型評估
- 注意: 只有準確率進行評估, 還不夠.
3.4 分類評估方式[*****]
-
混淆矩陣
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3X6jid4k-1571483307706)(混淆矩陣.png)]
-
準確率: 所有樣本中預測正確的比例
-
精確率: 所有預測爲正例的樣本中, 真實爲正例的比例(查的準不準)
-
召回率: 所有真實爲正例的樣本中, 預測爲正例的比例(查的全不全)
-
F1-Score: 精確率與召回率的結合, 用於衡量模型的穩健性.
- API:
- sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )
- 參數:
- y_true: 真實的目標值
- y_pred: 預測的目標值
- labels: 目標值列表
- target_names: 目標值的名稱列表
- 結果:
- 精確率,召回率, F1-Score
- ROC曲線和AUC指標
- ROC曲線和AUC指標作用:
- 用於解決樣本不均衡下的分類模型評估問題的.
- ROC曲線:
- 縱座標: TPR , 所有真實類別爲1(正例)的樣本中, 預測爲1(正例)的比例
- 橫座標: FPR, 所有真實類別爲0(反例)的樣本中, 預測爲1(正例)比例
- AUC指標:
- AUC在[0.5, 1] 越接近與1說明這個模型評估效果越好, 越接近與0.5 越是是亂猜(效果越差)
- ROC曲線和AUC指標作用:
- 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曲線的繪製【###】
-
繪製過程:
- 訓練一個二分類模型
- 使用這個模型, 對數據進行預測
- 按照預測概率值從大到小排列
- 按照從前往後計算每一個點的TPR(真實爲正例的樣本中, 預測爲正例比例)和FPR(真實爲假例的樣本中, 預測爲正例比例), 在座標系上描點
- 使用線把所有依次鏈接起來; 這個連接起來的線就是ROC曲線
- ROC曲線下面積就是AUC指標的值.
-
AUC指標:
- 概率意義; 隨機選擇一個正樣本和一個負樣本, 正樣本得分大於負樣本得分概率.
- 幾何意義: ROC曲線下面的面積 等價於對ROC求積分.
- AUC指標作用: AUC指標越接近與1說明模型越好, AUC指標越接近與0.5說明模型越接近於亂猜, AUC<0.5亂猜都不如.
4.決策樹
4.1 決策樹算法簡介
- 決策樹: 由多個判斷節點組成樹, 葉子節點就是判斷結果.
4.2 決策樹分類原理
-
信息熵
- 用於描述信息的純度, 信息熵越小, 純度越高, 信息熵越大純度越低
- 公式:
-
信息增益(ID.3)
- 信息增益 = 劃分前信息熵 - 按照某個屬性劃分後信息熵
- 意義:
- 信息增益越大, 說明這個屬性越重要.
- 在進行決策樹屬性劃分的時候, 就選擇信息增益大屬性進行劃分.
-
信息增益率(C4.5決策樹算法):
-
信息增益率概念
- 爲了解決: 解決信息增益傾向於選擇多分支屬性的缺點.
- 計算公式: 屬性的信息增益/屬性的信息分裂度量
-
信息增益率算法流程:
- 計算整體信息熵
- 計算按照每一個屬性劃分的條件熵
- 計算每一個屬性的信息增益
- 計算每一個屬性的信息分裂度量
- 計算每一個屬性的信息增益率
- 選擇信息增益率大的屬性進行劃分.
-
C4.5算法的優點:
- 使用信息增益率來選擇劃分屬性, 避免使用信息增益傾向於選擇多分支屬性的缺點
- 屬性信息增益率 =屬性 信息增益 / 屬性信息分裂度量
- 採用後剪枝的技術, 避免決策樹的過擬合
- 可以處理缺失值.
- 使用信息增益率來選擇劃分屬性, 避免使用信息增益傾向於選擇多分支屬性的缺點
-
-
ID3算法: 使用信息增益作爲劃分屬性的. 缺點: 傾向於選擇多分支屬性
- 基尼指數
- 基尼值: 隨機選擇兩個樣本類別標記不一致概率; 基尼值越小信息純度越高
- 計算公式:
- 基尼指數: 按照某種分割方式劃分的後的基尼值
- 我們在進行決策樹劃分的時候, 就選擇劃分後基尼指數最小的劃分方式進行劃分.
- CART決策樹算法流程:
- 計算每一個屬性的每一個劃分方式的基尼指數
- 選擇基尼指數最小的劃分方式進行劃分 N1, N2
- 如果劃分的節點不純, 重複1,2 繼續劃分
- 直到所有節點都純爲止.
知道邏輯迴歸的損失函數
- 對數似然損失
- 特點:
- 真實類別爲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決策樹一定是一個二叉樹.