日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

复现经典:《统计学习方法》第1章 统计学习方法概论

發布時間:2025/3/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 复现经典:《统计学习方法》第1章 统计学习方法概论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是李航老師的《統計學習方法》[1]一書的代碼復現。

作者:黃海廣[2]

備注:代碼都可以在github[3]中下載。

我將陸續將代碼發布在公眾號“機器學習初學者”,敬請關注。

代碼目錄

  • 第 1 章 統計學習方法概論

  • 第 2 章 感知機

  • 第 3 章 k 近鄰法

  • 第 4 章 樸素貝葉斯

  • 第 5 章 決策樹

  • 第 6 章 邏輯斯諦回歸

  • 第 7 章 支持向量機

  • 第 8 章 提升方法

  • 第 9 章 EM 算法及其推廣

  • 第 10 章 隱馬爾可夫模型

  • 第 11 章 條件隨機場

  • 第 12 章 監督學習方法總結

代碼參考:wzyonggege[4],WenDesi[5],火燙火燙的[6]

第 1 章 統計學習方法概論

1.統計學習是關于計算機基于數據構建概率統計模型并運用模型對數據進行分析與預測的一門學科。統計學習包括監督學習、非監督學習、半監督學習和強化學習。

2.統計學習方法三要素——模型、策略、算法,對理解統計學習方法起到提綱挈領的作用。

3.本書主要討論監督學習,監督學習可以概括如下:從給定有限的訓練數據出發, 假設數據是獨立同分布的,而且假設模型屬于某個假設空間,應用某一評價準則,從假設空間中選取一個最優的模型,使它對已給訓練數據及未知測試數據在給定評價標準意義下有最準確的預測。

4.統計學習中,進行模型選擇或者說提高學習的泛化能力是一個重要問題。如果只考慮減少訓練誤差,就可能產生過擬合現象。模型選擇的方法有正則化與交叉驗證。學習方法泛化能力的分析是統計學習理論研究的重要課題。

5.分類問題、標注問題和回歸問題都是監督學習的重要問題。本書中介紹的統計學習方法包括感知機、近鄰法、樸素貝葉斯法、決策樹、邏輯斯諦回歸與最大熵模型、支持向量機、提升方法、EM 算法、隱馬爾可夫模型和條件隨機場。這些方法是主要的分類、標注以及回歸方法。它們又可以歸類為生成方法與判別方法。

使用最小二乘法擬和曲線

高斯于 1823 年在誤差獨立同分布的假定下,證明了最小二乘方法的一個最優性質: 在所有無偏的線性估計類中,最小二乘方法是其中方差最小的!對于數據

擬合出函數

有誤差,即殘差:

此時范數(殘差平方和)最小時,?和??相似度最高,更擬合

一般的為次的多項式,

為參數

最小二乘法就是要找到一組??,使得?(殘差平方和) 最小

即,求?


舉例:我們用目標函數, 加上一個正態分布的噪音干擾,用多項式去擬合【例 1.1 11 頁】

import numpy as np import scipy as sp from scipy.optimize import leastsq import matplotlib.pyplot as plt %matplotlib inline
  • ps: numpy.poly1d([1,2,3]) 生成?*

# 目標函數 def real_func(x):return np.sin(2*np.pi*x)# 多項式 def fit_func(p, x):f = np.poly1d(p)return f(x)# 殘差 def residuals_func(p, x, y):ret = fit_func(p, x) - yreturn ret # 十個點 x = np.linspace(0, 1, 10) x_points = np.linspace(0, 1, 1000) # 加上正態分布噪音的目標函數的值 y_ = real_func(x) y = [np.random.normal(0, 0.1) + y1 for y1 in y_]def fitting(M=0):"""M 為 多項式的次數"""# 隨機初始化多項式參數p_init = np.random.rand(M + 1)# 最小二乘法p_lsq = leastsq(residuals_func, p_init, args=(x, y))print('Fitting Parameters:', p_lsq[0])# 可視化plt.plot(x_points, real_func(x_points), label='real')plt.plot(x_points, fit_func(p_lsq[0], x_points), label='fitted curve')plt.plot(x, y, 'bo', label='noise')plt.legend()return p_lsq

M=0

# M=0 p_lsq_0 = fitting(M=0) Fitting Parameters: [0.02515259]

M=1

# M=1 p_lsq_1 = fitting(M=1) Fitting Parameters: [-1.50626624 0.77828571]

M=3

# M=3 p_lsq_3 = fitting(M=3) Fitting Parameters: [ 2.21147559e+01 -3.34560175e+01 1.13639167e+01 -2.82318048e-02]

M=9

# M=9 p_lsq_9 = fitting(M=9) Fitting Parameters: [-1.70872086e+04 7.01364939e+04 -1.18382087e+05 1.06032494e+05-5.43222991e+04 1.60701108e+04 -2.65984526e+03 2.12318870e+02-7.15931412e-02 3.53804263e-02]

當 M=9 時,多項式曲線通過了每個數據點,但是造成了過擬合

正則化

結果顯示過擬合, 引入正則化項(regularizer),降低過擬合

。

回歸問題中,損失函數是平方損失,正則化可以是參數向量的 L2 范數,也可以是 L1 范數。

  • L1: regularization*abs(p)

  • L2: 0.5 * regularization * np.square(p)

regularization?=?0.0001 def residuals_func_regularization(p, x, y):ret = fit_func(p, x) - yret = np.append(ret,np.sqrt(0.5 * regularization * np.square(p))) # L2范數作為正則化項return ret # 最小二乘法,加正則化項 p_init = np.random.rand(9 + 1) p_lsq_regularization = leastsq(residuals_func_regularization, p_init, args=(x, y)) plt.plot(x_points, real_func(x_points), label='real') plt.plot(x_points, fit_func(p_lsq_9[0], x_points), label='fitted curve') plt.plot(x_points,fit_func(p_lsq_regularization[0], x_points),label='regularization') plt.plot(x, y, 'bo', label='noise') plt.legend()

參考資料

[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

關于本站

“機器學習初學者”公眾號由是黃海廣博士創建,黃博個人知乎粉絲23000+,github排名全球前100名(33000+)。本公眾號致力于人工智能方向的科普性文章,為初學者提供學習路線和基礎資料。原創作品有:吳恩達機器學習個人筆記、吳恩達深度學習筆記等。

往期精彩回顧

  • 那些年做的學術公益-你不是一個人在戰斗

  • 適合初學者入門人工智能的路線及資料下載

  • 吳恩達機器學習課程筆記及資源(github標星12000+,提供百度云鏡像)

  • 吳恩達深度學習筆記及視頻等資源(github標星8500+,提供百度云鏡像)

  • 《統計學習方法》的python代碼實現(github標星7200+)

  • 機器學習的數學精華(在線閱讀版)

備注:加入本站微信群或者qq群,請回復“加群

總結

以上是生活随笔為你收集整理的复现经典:《统计学习方法》第1章 统计学习方法概论的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。