一、统计学习概论
统计学习用于对数据进行预测和分析,统计学习方法包括监督学习、非监督学习、半监督学习和强化学习。
统计学习方法三要素:
方法 = 模型 + 策略 + 算法
一般过程
(1) 首先得到一个有限的训练数据集合(数据集);
(2) 建立所有可能的模型假设空间(模型,条件概率表示的
概率模型或决策函数表示的
非概率模型,或者说生成模型或判别模型);更常见的,比如线性回归、逻辑斯蒂回归、线性分类以及相应的非线性模型
(3) 选择模型(策略,损失函数和风险函数的选择);
(4) 求解最优模型(算法,最优化算法);
(5) 选择最优模型对新数据进行预测和分析(损失最小)。
过拟合应对策略-正则化
在模型的损失函数上加入正则化项或者惩罚项,一般为模型参数向量的L1或L2范数。
生成模型与判别模型
生成方法
由数据学习联合概率分布
P
(
X
,
Y
)
P(X, Y)
P(X,Y),然后求出条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)作为预测,这样的模型为生成模型:
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)
典型的生成模型有朴素贝叶斯法和隐马尔科夫模型。
判别方法
由数据直接学习决策函数
f
(
X
)
f(X)
f(X)或者条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)作为预测,即为判别模型。
典型的判别模型包括,k近邻法、感知机、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机、提升方法和条件随机场等。
监督学习主要解决的几个核心问题,分类、标注和回归。
偏差与方差
模型在训练集上的错误率或者损失越低,则偏差越小,这里偏差可以理解为用于评估模型的拟合能力或者性能。而方差主要用于评估模型在训练集和验证集上的偏差之间的落差幅度。如果训练集损失很低,而验证集损失却很高(过拟合),则说模型的低偏差、高方差;反之,则说高偏差、低方差(欠拟合),另外的情况可能是高偏差、高方差,低偏差、低方差(后两种情况,模型太差了,重新选择模型)。
二、感知机
相应的,总结线性回归、逻辑斯蒂回归、线性分类、逻辑斯蒂分类,包括模型、损失函数的策略和优化损失函数的算法原理推导。
三、损失函数
-
logistic损失函数(交叉熵)
参考博客–简单的交叉熵损失函数,你真的懂了吗
简单总结
正常来讲,比如在分类任务中,一开始很奇怪为什么明明有准确率这样的评估函数了,根据预测结果的准确率高低不久可以训练了吗,为什么还要引入损失函数(或者说代价函数)?
因为准确率不是一个可以优化的函数,相反,准确率依赖于训练(优化)之后的模型才得以预测,进而评估…好吧,当时学模式识别没动脑子了…
另一方面,一个可以优化的函数要求函数本身是“凸函数”,也就是连续可导。所以很常见在很多线性回归任务中用到L2范数作为损失函数(MSE等)。可是在Logistic回归中, g ( z ) = 1 1 + e z g(z)=\tfrac{1}{1+e^{z}} g(z)=1+ez1,这里 g ( z ) g(z) g(z)为预测输出,可验证知道 ( g ( z ) − y ) 2 (g(z)-y)^2 (g(z)−y)2对权重 w w w是不可导的,非凸函数不能用于梯度下降优化。
而logistic函数将输出映射在 ( 0 , 1 ) (0, 1) (0,1)之间,在二分类中表示预测正确的概率。而预测正确分两种, p ( y = 1 ∣ x ) = y ^ p(y=1|x)=\hat{y} p(y=1∣x)=y^(当样本为正类时正确预测的概率), p ( y = 0 ∣ x ) = y ^ p(y=0|x)=\hat{y} p(y=0∣x)=y^(当样本为负类时正确预测的概率)。这样反而把预测问题变得复杂化了,预测只有一个输出,其实我们只是希望不管是正负例,预测的概率越高越好。也就是说,概率高则认为是正样本,反之直接认为是负样本。总而言之就是,
希望将前面两个概率合并起来,简化模型(熟悉极大似然估计的可能会笑话我这么解释哈哈哈哈)。那么合并得到,
p ( y ∣ x ) = y ^ y ( 1 − y ^ ) 1 − y p(y|x)=\hat{y}^y(1-\hat{y})^{1-y} p(y∣x)=y^y(1−y^)1−y
于是我们预测 p ( y ∣ x ) p(y|x) p(y∣x)越大越好,也就是说,当 y = 1 y=1 y=1, y ^ \hat{y} y^也趋于1,越大越好,自然 p ( y ∣ x ) p(y|x) p(y∣x)也是越大越好;而当 y = 0 y=0 y=0, y ^ \hat{y} y^应趋于0,这时候 p ( y ∣ x ) p(y|x) p(y∣x)依然是越大越好。啰嗦了…终于 可以开始引入交叉熵损失函数了...
首先对 p ( y ∣ x ) p(y|x) p(y∣x)函数引入 l o g log log函数,以简化方便求梯度。
log { p ( y ∣ x ) } = y log y ^ + ( 1 − y ) log ( 1 − y ^ ) \log\left\{p(y|x)\right\}=y\log{\hat{y}}+(1-y)\log(1-\hat{y}) log{p(y∣x)}=ylogy^+(1−y)log(1−y^)
这就是损失函数了(为了更直观传统,损失应该越小越好)
L ( w , b ) = − log ( p ( y ∣ x ) ) L(w,b)=-\log{(p(y|x))} L(w,b)=−log(p(y∣x)) -
softmax损失函数(logistic loss的推广)
首先非常非常棒的博文 Softmax回归Ufldl
相关假设与参数说明这里不赘述,参考以上链接博文。
p ( y ( i ) = j ∣ x ( i ) ; θ ) = e θ j T x ( i ) Σ l K e θ l T x ( i ) p(y^{(i)}=j|x^{(i)};\theta)=\tfrac{e^{{\theta^T_j x^{(i)}}}}{\Sigma^K_l{e^{\theta^T_l x^{(i)}}}} p(y(i)=j∣x(i);θ)=ΣlKeθlTx(i)eθjTx(i)
简单总结
(1) 如果样本 x i x_i xi的特征维度是 d d d,那么logistic二分类器的权重矩阵 w w w的维度则是 d × 1 d\times1 d×1。而softmax分类器不同,假设有 k k k类,则权重矩阵维度为 d × k d\times k d×k。
(2) softmax将输出的预测值归一化,从而化为置信度的预测。关键的归一化引子是 Σ l K e θ l T x ( i ) \Sigma^K_l e^{\theta^T_l x^{(i)}} ΣlKeθlTx(i)。
(3) 示性函数 1 { y ( i ) = j ∣ x ( i ) } 1\left\{ y^{(i)}=j|x^{(i)}\right\} 1{y(i)=j∣x(i)},表示当样本 i i i类别标签为 j j j时该函数值为1,否则为0。
(4) softmax是logistic的推广形式,或者说后者是前者的特例。当然他们的损失函数也是同样的关系
logistic loss
log { p ( y ∣ x ) } = y log y ^ + ( 1 − y ) log ( 1 − y ^ ) \log\left\{p(y|x)\right\}=y\log{\hat{y}}+(1-y)\log(1-\hat{y}) log{p(y∣x)}=ylogy^+(1−y)log(1−y^)
softmax loss
J ( θ ) = − 1 m Σ i m Σ j K 1 { y ( i ) = j ∣ x ( i ) } log e θ j T x ( i ) Σ l K e θ l T x ( i ) \boldsymbol J(\theta)=-\tfrac{1}{m}\Sigma^m_i\Sigma^K_j 1\left\{y^{(i)}=j|x^{(i)}\right\} \log\tfrac{e^{{\theta^T_j x^{(i)}}}}{\Sigma^K_l{e^{\theta^T_l x^{(i)}}}} J(θ)=−m1ΣimΣjK1{y(i)=j∣x(i)}logΣlKeθlTx(i)eθjTx(i)
等价于
J ( θ ) = − 1 m Σ i m Σ j = 0 1 1 { y ( i ) = j ∣ x ( i ) } log p ( y ( i ) = j ∣ x ( i ) ; θ ) \boldsymbol J(\theta)=-\tfrac{1}{m}\Sigma^m_i\Sigma^1_{j=0} 1\left\{y^{(i)}=j|x^{(i)}\right\} \log p(y^{(i)}=j|x^{(i)};\theta) J(θ)=−m1ΣimΣj=011{y(i)=j∣x(i)}logp(y(i)=j∣x(i);θ)
(5) 参数 θ j \theta_j θj的梯度 ∇ θ j \nabla_{\theta_j} ∇θj,
∇ θ j = − 1 m Σ i = 1 m x ( i ) { 1 { y ( i ) = j ∣ x ( i ) } − p { y ( i ) = j ∣ x ( i ) ; θ } } \nabla_{\theta_j}=-\frac{1}{m}\Sigma^m_{i=1} x^{(i)} \left\{ 1\left\{ y^{(i)}=j|x^{(i)} \right\} -p\left\{ y^{(i)}=j|x^{(i)}; \theta \right\} \right\} ∇θj=−m1Σi=1mx(i){1{y(i)=j∣x(i)}−p{y(i)=j∣x(i);θ}}
证明如下
关于softmax线性分类器和非线性分类的实现,参考"李航统计学习方法-代码"里我补充的模型实现。