在监督学习过程中,模型就是所要学习的条件概率分布或决策函数。模型的假设空间(hypothesis space)包含所有可能的条件概率分布或决策函数。
假设空间定义为条件概率的集合
H = { P ∣ P ( X ∣ Y ) } H = \{{P|P(X|Y)}\} H={P∣P(X∣Y)}
其中,$ X 和 Y$ 是定义在输入空间和输出空间上的随机变量。 H H H 通常是有参数向量决定的条件概率分布族:
H = { P ∣ P θ ( X ∣ Y ) , θ ∈ R n } H = \{P|P_{ \theta }(X|Y),\theta \in R^n\} H={P∣Pθ(X∣Y),θ∈Rn}
由条件概率表示的模型为概率模型,它指出了学习的目的是学习 P ( x , y ) P(x,y) P(x,y) 或 P ( y ∣ x ) P(y|x) P(y∣x)
对于 P ( x , y ) P(x,y) P(x,y) 的估计,一般是根据乘法公式 P ( x , y ) = P ( x ∣ y ) P ( y P(x,y) = P(x|y)P(y P(x,y)=P(x∣y)P(y )将其拆解成 P ( x ∣ y ) P(x|y) P(x∣y) , P ( y ) P(y) P(y)分别进行估计。无论是对 P ( x ∣ y ) P(x|y) P(x∣y) 还是 P ( y ) P(y) P(y) 的估计,都是会先假设分布的形式,分布形式固定以后,剩下的就是分布参数的估计问题。常用的估计有极大似然估计(MLE)和极大后验概率估计(MAP)等。
基本概率模型:logistic回归、高斯判别分析、朴素贝叶斯、隐马尔科夫、条件随机场
假设空间定义为觉得函数的集合
H = { f ∣ Y = f ( X ) } H = \{f|Y = f(X)\} H={f∣Y=f(X)}
其中,$ X 和 Y$ 是定义在输入空间和输出空间上的随机变量。 H H H 通常是有参数向量决定的函数族:
H = { f ∣ Y = f θ ( X ) , θ ∈ R n } H = \{f|Y = f_{ \theta }(X),\theta \in R^n\} H={f∣Y=fθ(X),θ∈Rn}
非概率模型指的是直接学习输入空间到输出空间的映射 f f f
学习的过程中基本不涉及概率密度的估计,概率密度的积分等操作,问题的关键在于最优化问题的求解。通常,为了学习假设 $ f(x)$,我们会先根据一些先验知识(prior knowledge) 来选择一个特定的假设空间 H H H (函数空间)。例如,假设决策函数是输入变量的线性函数(形如 L ( x ) = k x , k 为 常 数 L(x) = kx ,k为常数 L(x)=kx,k为常数),那么模型的假设空间就是所有这些线性函数构成的函数集合。
基本非概率模型:感知机、支持向量机、神经网络、k近邻
概率模型 | 非概率模型 |
---|---|
条件概率分布族 | 函数族 |
极大似然估计 | 经验风险最小化 |
极大后验估计 | 结构风险最小化 |
分布参数的先验概率 | 正则化项 |
上面两个模型都可以实现对给定的输入 X X X 预测相应的输出 Y Y Y 的功能。实际上通过条件概率分布 P ( Y ∣ X ) P(Y|X) P(Y∣X) 进行预测也是隐含着表达成决策函数 Y = f ( X ) Y=f(X) Y=f(X) 的形式的。例如有两类 Y = 0 Y = 0 Y=0和 Y = 1 Y = 1 Y=1,那么我们求得了 P ( Y = 0 ∣ X ) P(Y=0|X) P(Y=0∣X) 和 P ( Y = 1 ∣ X ) P(Y=1|X) P(Y=1∣X) ,那么实际上决策函数就可以表示为 Y = P ( Y = 0 ∣ X ) P ( Y = 1 ∣ X ) Y = \frac{P(Y=0|X)}{P(Y=1|X)} Y=P(Y=1∣X)P(Y=0∣X) ,如果Y大于1或者某个阈值,那么X就属于类 Y = 0 Y = 0 Y=0 ,如果小于阈值就属于类 Y = 1 Y = 1 Y=1 。
监督学习的任务是学习模型,对于给定的输入预测相应的输出,模型的一般形式为概率或非概率模型,学习这一模型需要用到判别方法和生成方法,所学到的模型就分别称为判别模型(discriminative model)和生成模型(generative model)。
判别模型分为两种:
(1)直接对输入空间到输出空间的映射进行建模,也就是学习决策函数 f ( x ) f(x) f(x)
f : X → Y , s t . y = f ( x ) f : X \to Y,st. y = f(x) f:X→Y,st.y=f(x)
(2)对条件概率 P ( y ∣ x ) P(y|x) P(y∣x)进行建模
y = a r g m a x y ∈ Y P ( y ∣ x ) y = arg max_{y \in Y} P(y|x) y=argmaxy∈YP(y∣x)
判别模型通过对有限个样本训练,学习一个分类面(即学得一个模型),该分类面可用来区分不同数据分别属于哪一类。
判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,若大于某一阈值确定为山羊,否则为绵羊;或者通过这只羊的某一特征取值(如毛色,卷曲度)来判断,若大于某一阈值确定为山羊,否则为绵羊。
优点:判别方法直接学习的是条件概率 P ( Y ∣ X ) P(Y|X) P(Y∣X) 或决策函数 f ( X ) f(X) f(X) ,直接面对预测,往往学习的准确率更高;由于直接学习 P ( Y ∣ X ) P(Y|X) P(Y∣X) 或 f ( X ) f(X) f(X) ,可以对数据进行各种程度上的抽象(比如降维、构造等)、定义特征并使用特征,因此可以简化学习问题;对分类任务,冗余信息更少,能节省计算资源;可以寻找不同类别之间的最优分类面,反映的是异类数据的差异。
缺点:不能反映训练数据本身的特性;数据缺失或者异常值对预测结果的影响较大。
典型判别模型:k近邻法、感知机、决策树、logistic回归模型、最大熵模型、支持向量机、提升方法和条件随机场等
生成模型是先还原出联合概率分布 P ( X , Y ) P(X,Y) P(X,Y) ,再根据贝叶斯公式求出条件概率分布 P ( X ∣ Y ) P(X|Y) P(X∣Y)作为预测的模型,表示如下
P ( Y ∣ X ) = P ( X , Y ) P ( X ) P(Y|X) = \frac {P(X,Y)}{P(X)} P(Y∣X)=P(X)P(X,Y)
贝叶斯公式:
P ( Y ∣ X ) = P ( X ∣ Y ) P ( Y ) P ( X ) P(Y|X) = \frac {P(X|Y)P(Y)}{P(X)} P(Y∣X)=P(X)P(X∣Y)P(Y)
这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。
生成模型是学得各个类别各自特征(可看成学习多个模型),可用这些特征数据和要进行分类的数据进行比较,看新数据和学得的模型中哪个更相似,进而确定数据属于哪一类。
生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。
优点:生成方法可以还原出联合概率分布 P ( X , Y ) P(X,Y) P(X,Y) ,反应自身数据的相似度;生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快地收敛于真实模型(当样本足够多或无穷多时,得到的 P ( X ) P(X) P(X) 才能很好的描述数据真正的分布);当存在隐变量时,仍可以用生成方法学习,此时判别方法就不能用;能够用于数据不完整的情况,且能检测异常值。
缺点:含有更多的信息,学习和计算过程比较复杂,需要更多的计算资源;仅用于分类任务时,有许多冗余信息。
典型生成模型:朴素贝叶斯法、隐马尔可夫模型、高斯混合模型、贝叶斯网络、马尔可夫随机场
假设存在四个样本:
取值\样本 | sample1 | sample2 | sample3 | sample4 |
---|---|---|---|---|
x | 0 | 1 | 0 | 1 |
y | 0 | 0 | 0 | 1 |
对于判别模型
P ( x , y ) P(x,y) P(x,y) | y=0 | y = 1 |
---|---|---|
x = 0 | 1 | 0 |
x = 1 | 1 2 \frac{1}{2} 21 | 1 2 \frac{1}{2} 21 |
∑ P ( y ∣ x ) = 1 \sum P(y|x) = 1 ∑P(y∣x)=1
对于生成模型
P ( x , y ) P(x,y) P(x,y) | y=0 | y = 1 |
---|---|---|
x = 0 | 1 2 \frac{1}{2} 21 | 0 |
x = 1 | 1 4 \frac{1}{4} 41 | 1 4 \frac{1}{4} 41 |
∑ P ( x , y ) = 1 \sum P(x,y) = 1 ∑P(x,y)=1
有了假设空间,我们需要考虑如何从假设空间中选取最优模型。
损失函数:度量模型一次预测的好坏,或者说是预测错误的程度
对于模型来说损失函数越小,模型越好。
损失函数是 f ( X ) f(X) f(X) 和 Y Y Y 的非负实值函数,记作 L ( Y , f ( X ) ) L(Y,f(X)) L(Y,f(X))。
其中, f ( X ) f(X) f(X) 表示输出的预测值, Y Y Y 表示输出的真实值
统计学习常用的损失函数有以下几种:
(1)0-1损失函数(0-1 loss function)
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X)) = \begin{cases} 1, & Y\neq f(X) \\ 0, & Y = f(X) \end{cases} L(Y,f(X))={1,0,Y̸=f(X)Y=f(X)
该损失函数的意义就是,当预测错误时,损失函数值为1,预测正确时,损失函数值为0。该损失函数不考虑预测值和真实值的误差程度,也就是只要预测错误,预测错误差一点和差很多是一样的。可以看出上述的定义太过严格,如果真实值为1,预测值为0.999,那么预测很可能正确,但是上述定义显然是判定为预测错误,
这个方法的作用更多的是用来衡量其他损失函数的效果,比如计算测试数据集的误差率(error rate)和准确率(accuracy)
误差率(error rate)
e t e s t = 1 N ‘ ∑ i = 1 N ‘ I ( y i ≠ f ^ ( x i ) ) e_{test} = \frac{1}{N^`} \sum_{i=1}^{N^`}I(y_i \neq \hat f(x_i)) etest=N‘1i=1∑N‘I(yi̸=f^(xi))
准确率(accuracy)
r t e s t = 1 N ‘ ∑ i = 1 N ‘ I ( y i = f ^ ( x i ) ) r_{test} = \frac{1}{N^`} \sum_{i=1}^{N^`}I(y_i = \hat f(x_i)) rtest=N‘1i=1∑N‘I(yi=f^(xi))
显然,
e t e s t + r t e s t = 1 e_{test} + r_{test} = 1 etest+rtest=1
(2)平方损失函数(quadratic loss function)
L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y,f(X)) = (Y - f(X))^2 L(Y,f(X))=(Y−f(X))2
主要用于线性回归(Liner Regression),平方损失也可以理解为最小二乘法,即最优拟合曲线应该是是点到回归曲线的距离和最小的直线,也就是平方和最小
(3)绝对损失函数(absolute loss function)
L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X)) = |Y-f(X)| L(Y,f(X))=∣Y−f(X)∣
(4)对数损失函数(logarithmic loss function)或对数似然损失函数(loglikelihood loss function)
L ( Y , f ( X ) ) = − l o g P ( Y ∣ X ) L(Y,f(X)) = -logP(Y|X) L(Y,f(X))=−logP(Y∣X)
主要用于逻辑回归算法(Logistric Regression)
这里的损失函数是单调递减的,即概率越大损失越小
理论上模型f(X)关于联合分布P(X,Y)的平均意义下的损失,称为风险函数(risk function)或期望损失(expected loss)
R e x p = E p [ L ( Y , f ( X ) ) ] = ∫ X × Y L ( y , f ( x ) ) P ( x , y ) d x d y R_{exp} = E_p[L(Y,f(X))] = \int_{X\times Y}L(y,f(x))P(x,y)dxdy Rexp=Ep[L(Y,f(X))]=∫X×YL(y,f(x))P(x,y)dxdy
学习的目标就是选择期望风险最小的模型。由于联合分布P(X,Y)是未知的, R e x p ( f ) R_{exp}(f) Rexp(f)不能直接计算。
给定一个训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T = \{(x_1,y_1),(x_2,y_2),\ldots,(x_N,y_N)\} T={(x1,y1),(x2,y2),…,(xN,yN)}
模型 f ( X ) f(X) f(X)关于训练数据集的平均损失称为经验风险(empirical risk)或经验损失(empirical loss),记作 R e m p R_{emp} Remp:
R e m p ( f ) = 1 N ∑ i = 1 n L ( y i , f ( x i ) ) R_{emp}(f) = \frac{1}{N}\sum_{i=1}^n L(y_i,f(x_i)) Remp(f)=N1i=1∑nL(yi,f(xi))
期望风险 R e x p ( f ) R_{exp}(f) Rexp(f) 是模型关于联合分布的期望损失,经验风险 R e m p ( f ) R_{emp}(f) Remp(f) 是模型关于训练样本集的平均损失。
import time
start = time.time()
#对于绝对损失函数,求平均绝对误差MAE
import numpy as np
y_hat = np.array([0.000, 0.166, 0.333])
y_true = np.array([0.000, 0.254, 0.998])
def mae(predictions, targets):
differences = predictions - targets
absolute_differences = np.absolute(differences)
mean_absolute_differences = absolute_differences.mean()
return mean_absolute_differences
print("y_hat is: " + str(["%.8f" % elem for elem in y_hat]))
print("y_true: " + str(["%.8f" % elem for elem in y_true]))
mae_val = mae(y_hat, y_true)
print ("mae error is: " + str(mae_val))
end = time.time()
print(end - start)
y_hat is: ['0.00000000', '0.16600000', '0.33300000']
y_true: ['0.00000000', '0.25400000', '0.99800000']
mae error is: 0.251
0.0014591217041015625
设 { ξ n } \{\xi_n\} {ξn} 为一随机序列,数学期望 E ( ξ n ) E(\xi_n) E(ξn) 存在,另 ξ n ˉ = 1 n ∑ i = 1 n ξ i \bar{\xi_n} = \frac{1}{n}\sum_{i=1}^n \xi_i ξnˉ=n1∑i=1nξi ,若 lim n → ∞ [ ξ n ˉ − E ( ξ n ˉ ) ] = 0 \lim_{n\to \infty}[\bar{\xi_n} - E(\bar{\xi_n})] = 0 limn→∞[ξnˉ−E(ξnˉ)]=0 ,则称随机序列 { ξ n } \{\xi_n\} {ξn} 服从大数定律
根据大数定律,当样本容量N趋于无穷时,经验风险 R e m p ( f ) R_{emp}(f) Remp(f) 趋于期望风险 R e x p ( f ) R_{exp}(f) Rexp(f)
经验风险最小化最优模型:
m i n f ∈ H 1 N ∑ i = 1 n L ( y i , f ( x i ) ) min_{f\in H}\frac{1}{N}\sum_{i=1}^n L(y_i,f(x_i)) minf∈HN1i=1∑nL(yi,f(xi))
当样本容量足够大的时候,经验风险最小化学习效果良好。
当样本容量很小时,经验风险最小化学习的效果未必很好,会产生“过拟合over-fitting”。
结构风险最小化最优模型:
m i n f ∈ H 1 N ∑ i = 1 n L ( y i , f ( x i ) ) + λ J ( f ) min_{f\in H}\frac{1}{N}\sum_{i=1}^n L(y_i,f(x_i)) + \lambda J(f) minf∈HN1i=1∑nL(yi,f(xi))+λJ(f)
第1项是经验风险,第2项是正则化项, λ ≤ 0 \lambda \leq 0 λ≤0为调整两者之间关系的系数,通过加入正则化项调节模型复杂度,正则化的作用是选择经验风险与模型复杂度同时较小的模型。结构风险小的模型往往对训练数据以及未知的测试数据都有较好的预测。
训 练 集 : J ( f ) ↓ , 过 拟 合 ↓ ; 验 证 集 : λ ↑ 训练集 :J(f) \downarrow , 过拟合 \downarrow;验证集 : \lambda \uparrow 训练集:J(f)↓,过拟合↓;验证集:λ↑
训 练 集 : J ( f ) ↑ , 过 拟 合 ↑ ; 验 证 集 : λ ↓ 训练集 :J(f) \uparrow , 过拟合 \uparrow;验证集 : \lambda \downarrow 训练集:J(f)↑,过拟合↑;验证集:λ↓
模型 f f f越复杂,复杂度 J ( f ) J(f) J(f)就越大;反之,模型 f f f越简单,复杂度 J ( f ) J(f) J(f)就越小
泛化能力是指模型对未知数据的预测能力。泛化误差即为模型对未知数据预测的误差,相当于模型的期望风险。
性质:当样本容量增加,泛化误差上界趋于0;假设空间容量越大,模型就越难学,泛化误差上界越大
泛化误差上界对于二分类问题,当假设空间为有限个函数的集合 F = f 1 , f 2 , … , f d F = {f_1,f_2,\ldots,f_d} F=f1,f2,…,fd,对于任意函数 f ∈ F f \in F f∈F,至少以概率 1 − δ 1- \delta 1−δ,以下不等式成立
R ( f ) ⩽ R ^ ( f ) + ε ( d , N , δ ) R(f) \leqslant \hat R(f) + \varepsilon(d,N,\delta) R(f)⩽R^(f)+ε(d,N,δ)
其中,
ε ( d , N , δ ) = 1 2 N ( l o g d + l o g 1 δ ) \varepsilon(d,N,\delta) = \sqrt{\frac{1}{2N}(logd + log{\frac{1}{\delta}})} ε(d,N,δ)=2N1(logd+logδ1)
不等式左边是泛化误差,右边是泛化误差上界
从泛化误差上界可知,训练误差小的模型,其泛化误差就越小;也可以看做,经验风险越小,期望风险越小
常见的优化求解算法:梯度下降法、牛顿法、拟牛顿、LM、拉格朗日对偶性的约束求解算法
不同的模型对象其优化准则各有不同,为了尽量避免过拟合,通常会加入正则化方法