复现经典:《统计学习方法》第 12 章 监督学习方法总结
本文是李航老師的《統計學習方法》[1]一書的代碼復現。
作者:黃海廣[2]
備注:代碼都可以在github[3]中下載。
我將陸續將代碼發布在公眾號“機器學習初學者”,敬請關注。
代碼目錄
第 1 章 統計學習方法概論
第 2 章 感知機
第 3 章 k 近鄰法
第 4 章 樸素貝葉斯
第 5 章 決策樹
第 6 章 邏輯斯諦回歸
第 7 章 支持向量機
第 8 章 提升方法
第 9 章 EM 算法及其推廣
第 10 章 隱馬爾可夫模型
第 11 章 條件隨機場
第 12 章 監督學習方法總結
代碼參考:wzyonggege[4],WenDesi[5],火燙火燙的[6]
第 12 章 監督學習方法總結
1 適用問題
監督學習可以認為是學習一個模型,使它能對給定的輸入預測相應的輸出。監督學習包括分類、標注、回歸。本篇主要考慮前兩者的學習方法。
分類問題是從實例的特征向量到類標記的預測問題;標注問題是從觀測序列到標記序列(或狀態序列)的預測問題。可以認為分類問題是標注問題的特殊情況。 分類問題中可能的預測結果是二類或多類;而標注問題中可能的預測結果是所有的標記序列,其數目是指數級的。
感知機、近鄰法、樸素貝葉斯法、決策樹是簡單的分類方法,具有模型直觀、方法簡單、實現容易等特點;
邏輯斯諦回歸與最大熵模型、支持向量機、提升方法是更復雜但更有效的分類方法,往往分類準確率更高;
隱馬爾可夫模型、條件隨機場是主要的標注方法。通常條件隨機場的標注準確率更事高。
2 模型
分類問題與標注問題的預測模型都可以認為是表示從輸入空間到輸出空間的映射.它們可以寫成條件概率分布或決策函數的形式。前者表示給定輸入條件下輸出的概率模型,后者表示輸入到輸出的非概率模型。
樸素貝葉斯法、隱馬爾可夫模型是概率模型;感知機、近鄰法、支持向量機、提升方法是非概率模型;而決策樹、邏輯斯諦回歸與最大熵模型、條件隨機場既可以看作是概率模型,又可以看作是非概率模型。
直接學習條件概率分布或決策函數的方法為判別方法,對應的模型是判別模型:感知機、近鄰法、決策樹、邏輯斯諦回歸與最大熵模型、支持向量機、提升方法、條件隨機場是判別方法。
首先學習聯合概率分布,從而求得條件概率分布的方法是生成方法,對應的模型是生成模型:樸素貝葉斯法、隱馬爾可夫模型是生成方法。
決策樹是定義在一般的特征空間上的,可以含有連續變量或離散變量。感知機、支持向量機、k 近鄰法的特征空間是歐氏空間(更一般地,是希爾伯特空間)。提升方法的模型是弱分類器的線性組合,弱分類器的特征空間就是提升方法模型的特征空間。
感知機模型是線性模型;而邏輯斯諦回歸與最大熵模型、條件隨機場是對數線性模型;近鄰法、決策樹、支持向量機(包含核函數)、提升方法使用的是非線性模型。
3 ? 學習策略
在二類分類的監督學習中,支持向量機、邏輯斯諦回歸與最大熵模型、提升方法各自使用合頁損失函數、邏輯斯諦損失函數、指數損失函數,分別寫為:
這 3 種損失函數都是 0-1 損失函數的上界,具有相似的形狀。(見下圖,由代碼生成)
import numpy as np import math import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.figure(figsize=(10,8)) x = np.linspace(start=-1, stop=2, num=1001, dtype=np.float) logi = np.log(1 + np.exp(-x)) / math.log(2) boost = np.exp(-x) y_01 = x < 0 y_hinge = 1.0 - x y_hinge[y_hinge < 0] = 0plt.plot(x, y_01, 'g-', mec='k', label='(0/1損失)0/1 Loss', lw=2) plt.plot(x, y_hinge, 'b-', mec='k', label='(合頁損失)Hinge Loss', lw=2) plt.plot(x, boost, 'm--', mec='k', label='(指數損失)Adaboost Loss', lw=2) plt.plot(x, logi, 'r-', mec='k', label='(邏輯斯諦損失)Logistic Loss', lw=2) plt.grid(True, ls='--') plt.legend(loc='upper right',fontsize=15) plt.xlabel('函數間隔:$yf(x)$',fontsize=20) plt.title('損失函數',fontsize=20) plt.show()可以認為支持向量機、邏輯斯諦回歸與最大熵模型、提升方法使用不同的代理損失函數(surrogateloas Punotion)表示分類的損失,定義經驗風險或結構風險函數,實現二類分類學習任務。學習的策略是優化以下結構風險函數,
第 1 項為經驗風險(經驗損失),第 2 項為正則化項,為損失函數,為模型的復雜度,為系數。
支持向量機用范數表示模型的復雜度。原始的邏輯斯諦回歸與最大熵模型沒有正則化項,可以給它們加上范數正則化項。提升方法沒有顯式的正則化項,通常通過早停止(early stopping)的方法達到正則化的效果。
概率模型的學習可以形式化為極大似然估計或貝葉斯估計的極大后驗概率估計。學習的策略是極小化對數似然損失或極小化正則化的對數似然損失。對數似然損失可以寫成:
極大后驗概率估計時,正則化項是先驗概率的負對數。
決策樹學習的策略是正則化的極大似然估計,損失函數是對數似然損失,正則化項是決策樹的復雜度。
邏輯斯諦回歸與最大熵模型、條件隨機場的學習策略既可以看成是極大似然估計(或正則化的極大似然估計),又可以看成是極小化邏輯斯諦損失(或正則化的邏輯斯諦損失)。
樸素貝葉斯模型、隱馬爾可夫模型的非監督學習也是極大似然估計或極大后驗概率估計,但這時模型含有隱變量。
4 學習算法
統計學習的問題有了具體的形式以后,就變成了最優化問題。
樸素貝葉斯法與隱馬爾可夫模型的監督學習,最優解即極大似然估計值,可以由概率計算公式直接計算。
感知機、邏輯斯諦回歸與最大熵模型、條件隨機場的學習利用梯度下降法、擬牛頓法等一般的無約束最優化問題的解法。 支持向量機學習,可以解凸二次規劃的對偶問題。有序列最小最優化算法等方法。
決策樹學習是基于啟發式算法的典型例子。可以認為特征選擇、生成、剪枝是啟發式地進行正則化的極大似然估計。
提升方法利用學習的模型是加法模型、損失函數是指數損失函數的特點,啟發式地從前向后逐步學習模型,以達到逼近優化目標函數的目的。
EM 算法是一種迭代的求解含隱變量概率模型參數的方法,它的收斂性可以保證,但是不能保證收斂到全局最優。
支持向量機學習、邏輯斯諦回歸與最大熵模型學習、條件隨機場學習是凸優化問題,全局最優解保證存在。而其他學習問題則不是凸優化問題。
參考資料
[1] 《統計學習方法》:?https://baike.baidu.com/item/統計學習方法/10430179
[2] 黃海廣:?https://github.com/fengdu78
[3] github:?https://github.com/fengdu78/lihang-code
[4] wzyonggege:?https://github.com/wzyonggege/statistical-learning-method
[5] WenDesi:?https://github.com/WenDesi/lihang_book_algorithm
[6] 火燙火燙的:?https://blog.csdn.net/tudaodiaozhale
往期精彩回顧
那些年做的學術公益-你不是一個人在戰斗
適合初學者入門人工智能的路線及資料下載
吳恩達機器學習課程筆記及資源(github標星12000+,提供百度云鏡像)
吳恩達深度學習筆記及視頻等資源(github標星8500+,提供百度云鏡像)
《統計學習方法》的python代碼實現(github標星7200+)
機器學習的數學精華(在線閱讀版)
備注:加入本站微信群或者qq群,請回復“加群”
加入知識星球(4300+用戶,ID:92416895),請回復“知識星球”
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的复现经典:《统计学习方法》第 12 章 监督学习方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 复现经典:《统计学习方法》第 4 章 朴
- 下一篇: 复现经典:《统计学习方法》第 11 章