1 監(jiān)督學(xué)習(xí)-概述

1.1 統(tǒng)計(jì)學(xué)習(xí)
統(tǒng)計(jì)學(xué)習(xí)包括監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)及強(qiáng)化學(xué)習(xí)。
步驟:
1)得到一個(gè)有限的訓(xùn)練數(shù)據(jù)集合
2)確定包含所有可能的模型的假設(shè)空間,即學(xué)習(xí)模型的集合
3)確定模型選擇的準(zhǔn)則,即學(xué)習(xí)的策略
4)實(shí)現(xiàn)求解最優(yōu)模型的算法,即學(xué)習(xí)的算法
5)通過學(xué)習(xí)方法選擇最優(yōu)模型
6)利用學(xué)習(xí)的最優(yōu)模型對(duì)新數(shù)據(jù)進(jìn)行預(yù)測或分析

1.2 監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí)(supervised learning)的任務(wù)是學(xué)習(xí)一個(gè)模型,使模型能夠?qū)θ我饨o定的輸入,對(duì)其相應(yīng)的輸出做出一個(gè)好的預(yù)測。從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)模型,對(duì)測試數(shù)據(jù)進(jìn)行預(yù)測。

1.3 統(tǒng)計(jì)學(xué)習(xí)三要素
1)模型
本書中決策函數(shù)表示的模型為非概率模型
條件概率表示的模型為概率模型
2)策略
損失函數(shù)度量模型一次預(yù)測的好壞
a. 0-1損失函數(shù) L(Y, f(X))
b. 平方損失函數(shù)
c. 絕對(duì)損失函數(shù)
d. 對(duì)數(shù)損失函數(shù)
風(fēng)險(xiǎn)函數(shù)度量平均意義下的模型預(yù)測好壞
3)算法

1.4 模型估計(jì)與模型選擇
訓(xùn)練誤差:模型關(guān)于訓(xùn)練數(shù)據(jù)集的平均損失
測試誤差:模型關(guān)于測試數(shù)據(jù)集的平均損失
過擬合

1.5 模型選擇方法:正則化與交叉驗(yàn)證
1)正則化是結(jié)構(gòu)風(fēng)險(xiǎn)最小化策略的實(shí)現(xiàn),是在經(jīng)驗(yàn)風(fēng)險(xiǎn)上加上一個(gè)正則化項(xiàng)或罰項(xiàng)。正則化的作用是選擇經(jīng)驗(yàn)風(fēng)險(xiǎn)與模型復(fù)雜度同時(shí)較小的模型。
2)交叉驗(yàn)證
一種簡單的模型選擇方法是隨機(jī)的將數(shù)據(jù)集切分為訓(xùn)練集、驗(yàn)證集和測試集,訓(xùn)練集用于訓(xùn)練模型,驗(yàn)證集用于模型選擇,測試集用于最終對(duì)學(xué)習(xí)方法的評(píng)估。
在實(shí)際應(yīng)用中,數(shù)據(jù)不是充足的,為了選擇好的模型,采用交叉驗(yàn)證?;舅枷胧侵貜?fù)的使用數(shù)據(jù);把給定的數(shù)據(jù)切分,將切分的數(shù)據(jù)集組合為訓(xùn)練集和測試集,在此基礎(chǔ)上反復(fù)訓(xùn)練、測試及模型選擇。
簡單交叉驗(yàn)證、S折交叉驗(yàn)證、留一交叉驗(yàn)證。

1.6 泛化能力
學(xué)習(xí)方法的泛化能力是由該方法學(xué)習(xí)到的模型對(duì)未知數(shù)據(jù)的預(yù)測能力,是學(xué)習(xí)方法本質(zhì)上重要的性質(zhì)。
泛化誤差是所學(xué)習(xí)到的模型的期望風(fēng)險(xiǎn)。

1.7 生成模型與判別模型
生成方法由數(shù)據(jù)學(xué)習(xí)聯(lián)合概率分布P(X,Y),然后求出條件概率分布P(Y|X)作為預(yù)測的模型,即生成模型,典型的生成模型:樸素貝葉斯法和隱馬爾可夫模型。
判別方法由數(shù)據(jù)學(xué)習(xí)決策函數(shù)f(X)或者條件概率分布P(Y|X)作為預(yù)測的模型,即判別模型,典型的判別模型:k近鄰法、感知機(jī)、決策樹、邏輯斯諦回歸模型、最大熵模型、支持向量機(jī)、提升方法、條件隨機(jī)場等。

1.8 分類問題

1.9 標(biāo)注問題

1.10 回歸問題

練習(xí)
例題1.1 數(shù)據(jù)擬合

import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.optimize import leastsq

# 目標(biāo)函數(shù) sin2πx
def real_func(x):
    return np.sin(2 * np.pi * x)

# 擬合函數(shù) 多項(xiàng)式
def fit_func(p, x):
    f = np.poly1d(p)
    return f(x)

# 殘差
def residuals_func(p, x, y):
    ret = fit_func(p, x) - y
    return ret

x = np.linspace(0, 1, 10)   #0~1之間10個(gè)數(shù)字
x_points = np.linspace(0, 1, 1000)
# 增加正態(tài)分布噪音的目標(biāo)函數(shù)值
y_ = real_func(x)
y = [np.random.normal(0, 0.1) + y1 for y1 in y_]  #正態(tài)分布均值0,標(biāo)準(zhǔn)差0.1


def fitting(m=0):
    # m是多項(xiàng)式次數(shù)
    # 隨機(jī)初始化多項(xiàng)式參數(shù)
    p_init = np.random.rand(m + 1)  #隨機(jī)生成[0,1)之間的m+1個(gè)數(shù),返回多項(xiàng)式的次數(shù)就是m
    # 最小二乘
    p_lsq = leastsq(residuals_func, p_init, args=(x, y))   #args數(shù)據(jù)點(diǎn)
    # 可視化
    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()
    plt.show()
    return p_lsq

p_lsq_0 = fitting(m=0)
p_lsq_0

m=0


image.png

m=1


image.png

m=3


image.png

m=9


image.png

m=9出現(xiàn)了過擬合,加入正則化項(xiàng),降低過擬合

regularization = 0.0001

def residuals_func_regularization(p, x, y):
    ret = fit_func(p, x) - y
    ret = np.append(ret,
                    np.sqrt(0.5 * regularization * np.square(p)))  # L2范數(shù)作為正則化項(xiàng)
    return ret

# 最小二乘法,加正則化項(xiàng)
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_regularization[0], x_points),
    label='regularization')
plt.plot(x, y, 'bo', label='noise')
plt.legend()
plt.show()
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容