机器学习 监督式学习算法基础

本文深入探讨了监督学习的基本概念,包括特征组、标签和损失函数。通过无约束和带模型假设的经验损失最小化算法架构,解释了如何寻找最优模型。以鸢尾花数据集为例,展示了感知器算法在分类问题中的应用,并讨论了L1和L2正则化在防止过拟合中的作用。最后,给出了鸢尾花分类的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.1监督式学习的基本概念

2.1.1 基本概念解释

特征组:将每个对象的 n n n个特征构成的向量 x = ( x 1 , x 2 , . . . , x n ) ∈ R n x=(x_1,x_2,...,x_n)\in\mathbb{R^n} x=(x1,x2,...,xn)Rn称为该对象的特征组,设 X ⊆ R n X\subseteq\mathbb{R^n} XRn是特征组的所有可能取值构成的集合,称 X X X为样本空间

标签:在回归问题中,训练数据含有一个数值标签 y ∈ R y\in\mathbb{R} yR;在 k k k元分类问题中,训练数据含有一个向量标签 y ∈ [ 0 , 1 ] k y\in[0,1]^k y[0,1]k。设 Y Y Y为全体可能的取值,称 Y Y Y为标签空间

特征分布
标签分布
举例说明:特征 X X X(就是变量)是在 [ − 1 , 1 ] [-1,1] [1,1]服从均匀分布,标签 y y y服从分布 N ( x , 0.1 ) N(x,0.1) N(x,0.1)的正态分布。
记均匀分布为 D D D,称 D D D为特征分布,用 x ∼ D x\sim D xD表示 x x x为依特征分布 D D D的一个随机采样

x x x对应的标签 y y y服从 D x D_x Dx,称 D x D_x Dx为特征组 x x x的标签分布,用 y ∼ D x y\sim D_x yDx表示 y y y为依 D x D_x Dx的标签分布
eg. x = 1 x=1 x=1 y y y的标签分布为 N ( 1 , 0.1 ) N(1,0.1) N(1,0.1)

2.1.2损失函数举例

损失函数:设 Y Y Y为标签分布。损失函数时一个从 Y × Y Y\times Y Y×Y映射到正实数的函数 l : Y × Y → R + l:Y\times Y\to \mathbb{R^+} l:Y×YR+,并且要求其具有如下性质:对任意 y ∈ Y y\in Y yY,有
l ( y , y ) = 0 l(y,y)=0 l(y,y)=0
eg. 0-1损失函数
l ( y , z ) = { 0 如 果 z = y 1 如 果 z ≠ y l(y,z) = \begin{cases} 0 & 如果z=y \\ 1 & 如果z\ne y \\ \end{cases} l(y,z)={01z=yz=y
eg. 平方损失函数
l ( y , z ) = ( y − z ) 2 l(y,z)=(y-z)^2 l(y,z)=(yz)2
损失函数就是用来计算模型误差,以此来输出优化模型

2.2经验损失最小化架构

训练数据与经验损失:给定损失函数 l l l以及一组数据
S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
其中, x ( 1 ) , x ( 2 ) , . . . , x ( m ) ∼ D x^{(1)},x^{(2)},...,x^{(m)}\sim D x(1),x(2),...,x(m)D X X X m m m个依特征分布 D D D的独立采样,并且对任意 1 ≤ i ≤ m 1\leq i\leq m 1im y ( i ) ∼ D x ( i ) y^{(i)}\sim D_x^{(i)} y(i)Dx(i)。将 S S S称为训练数据。将 h h h S S S中所有数据的平均损失为 h h h的经验损失,用如下记号表示
L S ( h ) = 1 m ∑ i = 1 m l ( h ( x ( i ) ) , y ( i ) ) L_S(h)=\frac{1}{m} \sum_{i=1}^ml(h(x^{(i)}), y^{(i)}) LS(h)=m1i=1ml(h(x(i)),y(i))
当训练数据的规模足够大时,Hoeffding不等式保证了经验损失能够良好地近似期望损失。
Hoeffding不等式个人理解就是在样本足够大时误差可以足够小

2.2.1无约束经验损失最小化算法架构

无约束经验损失最小化算法架构
给定样本空间 X X X、标签空间 Y Y Y、模型空间 ϕ \phi ϕ和损失函数 l : Y × Y → R + l:Y\times Y\to \mathbb{R^+} l:Y×YR+
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
输出模型: h S = a r g m i n h ∈ ϕ L S ( h ) h_S=\underset{h\in \phi}{argmin}L_S(h) hS=hϕargminLS(h)

无约束经验损失最小化算法的特点在于它精确的拟合了训练数据。实际上可以应用拉格朗日插值法构造一个多项式 h S ( x ) h_S(x) hS(x),使经验损失 L S ( h ) = 0 L_S(h)=0 LS(h)=0。但是这就引出了机器学习中常发生的问题——过度拟合。

下面举例直观感受过度拟合

在这里插入图片描述

在这里插入图片描述

手机
$12

容易看出过下面的模型出现了过度拟合。
由此引出概念——模型假设通过对训练数据的观察以及对背景的理解,可以对模型做出合理假设,从而降低过拟合。

2.2.2带模型假设的经验损失最小化算法架构

模型假设:模型空间 ϕ \phi ϕ的任意一个子集 H H H都称为一个模型假设。
一个带有模型假设的经验损失最小化算法的任务是计算在假定的模型假设中的经验损失最小的那个模型

带模型假设的经验损失最小化算法架构
给定样本空间 X X X、标签空间 Y Y Y、模型空间 ϕ \phi ϕ和损失函数 l : Y × Y → R + l:Y\times Y\to \mathbb{R^+} l:Y×YR+
取定模型假设 H H H
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
输出模型: h S = a r g m i n h ∈ ϕ L S ( h ) h_S={argmin}_{h\in \phi}L_S(h) hS=argminhϕLS(h)

2.3监督式学习与经验损失最小化实例

2.3.1鸢尾花实例

鸢尾花数据集,数据集包含150个样本,分属于3个鸢尾花种:山鸢尾、变色鸢尾以及弗吉尼亚鸢尾。
5个鸢尾花数据集的样本

花萼长花萼宽花瓣长花瓣宽属种
5.13.51.40.2山鸢尾
7.03.24.71.4变色鸢尾
4.83.01.40.3山鸢尾
6.42.85.62.1弗吉尼亚鸢尾
6.23.04.91.8弗吉尼亚鸢尾

区分山鸢尾和非山鸢尾
横坐标花萼长,纵坐标花萼宽
蓝色 山鸢尾+1,黄色非山鸢尾-1
在这里插入图片描述

2.3.2感知器算法

假定一条直线有如下方程: < w , x > + b = 0 <w,x>+b=0 <w,x>+b=0
对平面上的一个点 x ∗ = ( x 1 ∗ , x 2 ∗ ) x^*=(x_1^*,x_2^*) x=(x1,x2)
如果它位于直线上方,则 < w , x ∗ > + b > 0 <w,x^*>+b>0 <w,x>+b>0
如果它位于直线下方,则 < w , x ∗ > + b < 0 <w,x^*>+b<0 <w,x>+b<0
如果它恰巧位于直线上,则 < w , x ∗ > + b = 0 <w,x^*>+b=0 <w,x>+b=0
< w , x ∗ > + b = 0 <w,x^*>+b=0 <w,x>+b=0的直线能够分离训练数据中的正负采样,
则它一定满足如下条件:

y ( i ) = S i g n ( < w , x ( i ) > + b ) , i = 1 , 2 , . . . , m y^{(i)}=Sign(<w,x^{(i)}>+b),i=1,2,...,m y(i)=Sign(<w,x(i)>+b),i=1,2,...,m
这里的 y ( i ) y^{(i)} y(i)就是样本的标签

其中 S i g n Sign Sign是如下符号函数:
S i g n ( z ) = { − 1 如 果 z < 0 0 如 果 z = y + 1 如 果 z > 0 Sign(z) = \begin{cases} -1 & 如果z<0 \\ 0 & 如果z= y \\ +1 & 如果z>0 \end{cases} Sign(z)=10+1z<0z=yz>0

作出假设:取定 w = ( w 1 , w 2 ) ∈ R 2 w=(w_1,w_2)\in \mathbb{R^2} w=(w1,w2)R2以及 b ∈ R b\in \mathbb{R} bR
h w , b = S i g n ( < w , x > + b ) h_{w,b}=Sign(<w,x>+b) hw,b=Sign(<w,x>+b)
并定义模型假设 H = { h w , x : w ∈ R 2 , b ∈ R 2 } H=\{h_{w,x}:w\in \mathbb{R^2},b\in \mathbb{R^2}\} H={hw,x:wR2,bR2}
采用0-1损失函数,有如下形式:
l ( h w , x ( x ( i ) ) , y ( i ) ) = 1 − y ( i ) S i g n ( < w , x ( i ) > + b ) 2 l(h_{w,x}(x^{(i)}),y^{(i)})=\frac{1-y^{(i)}Sign(<w,x^{(i)}>+b)}{2} l(hw,x(x(i)),y(i))=21y(i)Sign(<w,x(i)>+b)
可见经验损失最小化算法的目标应当为:

经验损失最小化算法的目标就是使经验损失函数最小,误差最小

m i n w , b 1 m ∑ i = 1 m 1 − y ( i ) S i g n ( < w , x ( i ) > + b ) 2 \underset{w,b}{min}\frac{1}{m}\sum_{i=1}^m\frac{1-y^{(i)}Sign(<w,x^{(i)}>+b)}{2} w,bminm1i=1m21y(i)Sign(<w,x(i)>+b)
上式经过简单整理,就等价于如下优化问题:

m a x w , b 1 m ∑ i = 1 m y ( i ) S i g n ( < w , x ( i ) > + b ) \underset{w,b}{max}\frac{1}{m}\sum_{i=1}^my^{(i)}Sign(<w,x^{(i)}>+b) w,bmaxm1i=1my(i)Sign(<w,x(i)>+b)

y ( i ) y^{(i)} y(i)是符号函数 S i g n Sign Sign的取值 +1,-1,确切来说是样本的标签,样本本身自带的数据
分离后正采样点应位于直线上方,负采样点位于直线下方

如果存在位于直线下方的正采样点感知器算法将感知空间中的点并朝着这个点旋转,直至该点位于直线上方,在解析几何中,为了使直线 y = < w , x > + 1 y=<w,x>+1 y=<w,x>+1朝着点 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))转动,可以采用如下方法:
w ← w + y ( i ) x ( i ) b ← b + y ( i ) w\gets w+y^{(i)}x^{(i)}\\ b\gets b+y^{(i)} ww+y(i)x(i)bb+y(i)

感知器算法
w w w=(0,0),b=0,done=False
while not done:
   done = True
   for i=1,2,…,m
    if y ( i ) S i g n ( < w , x ( i ) > + b ) ≤ 0 y^{(i)}Sign(<w,x^{(i)}>+b)\leq0 y(i)Sign(<w,x(i)>+b)0:
      w ← w + y ( i ) x ( i ) w\gets w+y^{(i)}x^{(i)} ww+y(i)x(i)
      b ← b + y ( i ) b\gets b+y^{(i)} bb+y(i)
      done = False
return w , b w,b w,b

2.3.3感知器算法实现山鸢尾花分类

在这里插入图片描述
下图为预测
在这里插入图片描述

2.4正则化算法

奥卡姆剃刀法则:如无必要,勿增实体
n n n d d d次多项式可以用 ( n + d n ) \begin{pmatrix}n+d \\ n\\ \end{pmatrix} (n+dn)个实参数 { w a 1 , a 2 , . . . , a n : a 1 , a 2 , . . . , a n ∈ z ≥ 0 , a 1 + a 2 + . . . + a n ≤ d } \{w_{a_1,a_2,...,a_n}:a_1,a_2,...,a_n\in \mathbb{z}_{\ge 0},a_1+a_2+...+a_n \leq d \} {wa1,a2,...,an:a1,a2,...,anz0,a1+a2+...+and}表示。证明方法类似与高中排列组合中学过的隔板法
L 1 L_1 L1范数 ∣ w ∣ \begin{vmatrix}w\end{vmatrix} w定义为:
∣ w ∣ = ∣ w 1 ∣ + ∣ w 2 ∣ + . . . + ∣ w n ∣ \begin{vmatrix}w \end{vmatrix}=\begin{vmatrix}w_1 \end{vmatrix}+\begin{vmatrix}w_2 \end{vmatrix}+...+\begin{vmatrix}w_n \end{vmatrix} w=w1+w2+...+wn

L 2 L_2 L2范数 ∥ w ∥ \begin{Vmatrix}w\end{Vmatrix} w定义为:
∥ w ∥ = w 1 2 + w 2 2 + . . . + w n 2 \begin{Vmatrix}w\end{Vmatrix}=\sqrt{w_1^2+w_2^2+...+w_n^2} w=w12+w22+...+wn2
机器学习中普遍认为范数 w w w越小,模型就越简单

2.4.1 L 1 L_1 L1正则化

L 1 L_1 L1正则化经验损失最小化算法
参数化模型假设 H = { H w : w ∈ R n } H=\{H_w:w\in \mathbb{R^n}\} H={Hw:wRn}
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
计算优化问题模型 w ∗ w^* w:
m i n w ∈ R n L S ( h w ) + λ ∣ w ∣ \underset{w\in \mathbb{R^n}}{min}L_S(h_w)+\lambda \begin{vmatrix}w\end{vmatrix} wRnminLS(hw)+λw
输出:模型 h w ∗ h_w^* hw

2.4.2 L 2 L_2 L2正则化

由于 L 1 L_1 L1范数求解的目标函数不可微,因此使用 L 2 L_2 L2正则化(L1正则化的求解可以使用搜索算法中的随机梯度下降算法求解)

L 2 L_2 L2正则化经验损失最小化算法
参数化模型假设 H = { H w : w ∈ R n } H=\{H_w:w\in \mathbb{R^n}\} H={Hw:wRn}
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
计算优化问题模型 w ∗ w^* w:
m i n w ∈ R n L S ( h w ) + λ ∥ w ∥ 2 \underset{w\in \mathbb{R^n}}{min}L_S(h_w)+\lambda\begin{Vmatrix}w\end{Vmatrix}^2 wRnminLS(hw)+λw2
输出:模型 h w ∗ h_w^* hw

2.4.1 L 1 , L 2 L_1,L_2 L1,L2正则化解释

正则化算法就是在原来的线性模型中,加入一个惩罚项,引导算法在 L S L_S LS接近的情况下选出范数较小的那个(大道至简)
L 1 L_1 L1引导算法参数逐个将为0
m i n L S ( h w ) 约 束 : ∣ w ∣ ≤ R minL_S(h_w)\\ 约束:\begin{vmatrix}w\end{vmatrix}\leq R minLS(hw)wR
模型的约束区间为多面体

L 2 L_2 L2 正则化均匀的降低多项式的系数,输出越来越平滑的模型
m i n L S ( h w ) 约 束 : ∥ w ∥ 2 ≤ R 2 minL_S(h_w)\\ 约束:\begin{Vmatrix}w\end{Vmatrix}^2\leq R^2 minLS(hw)w2R2
约束区间为圆、球…

代码

'''鸢尾花'''
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from perceptron import Perceptron
import matplotlib.pyplot as plt

iris = datasets.load_iris()
X= iris["data"][:,(0,1)]
y = 2 * (iris["target"]==0).astype(np.int) - 1  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=3)

plt.figure(1)
plt.axis([4,8,1,5])
plt.plot(X_train[:, 0][y_train==1], X_train[:, 1][y_train==1], "bs", ms=3)
plt.plot(X_train[:, 0][y_train==-1], X_train[:, 1][y_train==-1], "yo", ms=3)

model = Perceptron()
model.fit(X_train, y_train)

plt.figure(2)
plt.axis([4,8,1,5])
plt.plot(X_train[:, 0][y_train==1], X_train[:, 1][y_train==1]+0.1, "bs", ms=3)
plt.plot(X_train[:, 0][y_train==-1], X_train[:, 1][y_train==-1]-0.1, "yo", ms=3)
x0 = np.linspace(4, 8, 200)
w = model.w
b = model.b
line = -w[0]/w[1] * x0 - b/w[1]
plt.plot(x0, line)

plt.figure(3)
plt.axis([4,8,1,5])
plt.plot(X_test[:, 0][y_test==1], X_test[:, 1][y_test==1], "bs", ms=3)
plt.plot(X_test[:, 0][y_test==-1], X_test[:, 1][y_test==-1], "yo", ms=3)
x0 = np.linspace(4, 8, 200)
line = -w[0]/w[1] * x0 - b/w[1]
plt.plot(x0, line)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喂★借个微笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值