监督学习(机器学习)

1、引言php

  本材料参考Andrew Ng大神的机器学习课程 http://cs229.stanford.edu,以及斯坦福无监督学习UFLDL tutorial http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial算法

  机器学习中的回归问题属于有监督学习的范畴。回归问题的目标是给定D维输入变量x,而且每个输入矢量x都有对应的值y,要求对于新来的数据预测它对应的连续的目标值t。好比下面这个例子:假设咱们有一个包含47个房子的面积和价格的数据集以下:机器学习

 

咱们能够在Matlab中画出来这组数据集,以下:函数

  看到画出来的点,是否是有点像一条直线?咱们能够用一条曲线去尽可能拟合这些数据点,那么对于新来的输入,我么就能够将拟合的曲线上返回对应的点从而达到预测的目的。若是要预测的值是连续的好比上述的房价,那么就属于回归问题;若是要预测的值是离散的即一个个标签,那么就属于分类问题。这个学习处理过程以下图所示:性能

  上述学习过程当中的经常使用术语:包含房子面积和价格的数据集称为训练集training set;输入变量x(本例中为面积)为特征features;输出的预测值y(本例中为房价)为目标值target;拟合的曲线,通常表示为y = h(x),称为假设模型hypothesis;训练集的条目数称为特征的维数,本例为47。学习

 

2、线性回归模型测试

  线性回归模型假设输入特征和对应的结果知足线性关系。在上述的数据集中加上一维--房间数量,因而数据集变为:spa

  因而,输入特征x是二维的矢量,好比x1(i)表示数据集中第i个房子的面积,x2(i)表示数据集中第i个房子的房间数量。因而能够假设输入特征x与房价y知足线性函数,好比:blog

 

 

这里θi称为假设模型即映射输入特征x与结果y的线性函数h的参数parameters,为了简化表示,咱们在输入特征中加入x0 = 1,因而获得:get

参数θ和输入特征x都为矢量,n是输入的特征x的个数(不包含x0)。

  如今,给定一个训练集,咱们应该怎么学习参数θ,从而达到比较好的拟合效果呢?一个直观的想法是使得预测值h(x)尽量接近y,为了达到这个目的,咱们对于每个参数θ,定义一个代价函数cost function用来描述h(x(i))'与对应的y(i)'的接近程度:

前面乘上的1/2是为了求导的时候,使常数系数消失。因而咱们的目标就变为了调整θ使得代价函数J(θ)取得最小值,方法有梯度降低法,最小二乘法等。

 

  2.1 梯度降低法

  如今咱们要调整θ使得J(θ)取得最小值,为了达到这个目的,咱们能够对θ取一个随机初始值(随机初始化的目的是使对称失效),而后不断地迭代改变θ的值来使J(θ)减少,知道最终收敛取得一个θ值使得J(θ)最小。梯度降低法就采用这样的思想:对θ设定一个随机初值θ0,而后迭代进行如下更新

直到收敛。这里的α称为学习率learning rate。

  梯度方向由J(θ)对θ 的偏导数决定,因为要求的是最小值,所以对偏导数取负值获得梯度方向。将J(θ)代入获得总的更新公式

这样的更新规则称为LMS update rule(least mean squares),也称为Widrow-Hoff learning rule。

  对于以下更新参数的算法:

因为在每一次迭代都考察训练集的全部样本,而称为批量梯度降低batch gradient descent。对于引言中的房价数据集,运行这种算法,能够获得θ0 = 71.27, θ1 = 1.1345,拟合曲线以下图:

  若是参数更新计算算法以下:

这里咱们按照单个训练样本更新θ的值,称为随机梯度降低stochastic gradient descent。比较这两种梯度降低算法,因为batch gradient descent在每一步都考虑所有数据集,于是复杂度比较高,随机梯度降低会比较快地收敛,并且在实际状况中两种梯度降低获得的最优解J(θ)通常会接近真实的最小值。因此对于较大的数据集,通常采用效率较高的随机梯度降低法。

  2.2 最小二乘法(LMS)

  梯度降低算法给出了一种计算θ的方法,可是须要迭代的过程,比较费时并且不太直观。下面介绍的最小二乘法是一种直观的直接利用矩阵运算能够获得θ值的算法。为了理解最小二乘法,首先回顾一下矩阵的有关运算:

  假设函数f是将m*n维矩阵映射为一个实数的运算,即,而且定义对于矩阵A,映射f(A)对A的梯度为:

所以该梯度为m*n的矩阵。例如对于矩阵A=,并且映射函数f(A)定义为:F(A) = 1.5A11 + 5A122 + A21A22,因而梯度为:

  另外,对于矩阵的迹的梯度运算,有以下规则:

  下面,咱们将测试集中的输入特征x和对应的结果y表示成矩阵或者向量的形式,有:

对于预测模型有,即,因而能够很容易获得:

因此能够获得

  因而,咱们就将代价函数J(θ)表示为了矩阵的形式,就能够用上述提到的矩阵运算来获得梯度:

令上述梯度为0,获得等式:,因而获得θ的值:

。这就是最小二乘法获得的假设模型中参数的值。

  2.3 加权线性回归

  首先考虑下图中的几种曲线拟合状况:

最左边的图使用线性拟合,可是能够看到数据点并不彻底在一条直线上,于是拟合的效果并很差。若是咱们加入x2项,获得,如中间图所示,该二次曲线能够更好的拟合数据点。咱们继续加入更高次项,能够获得最右边图所示的拟合曲线,能够完美地拟合数据点,最右边的图中曲线为5阶多项式,但是咱们都很清醒地知道这个曲线过于完美了,对于新来的数据可能预测效果并不会那么好。对于最左边的曲线,咱们称之为欠拟合--太小的特征集合使得模型过于简单不能很好地表达数据的结构,最右边的曲线咱们称之为过拟合--过大的特征集合使得模型过于复杂。

  正如上述例子代表,在学习过程当中,特征的选择对于最终学习到的模型的性能有很大影响,因而选择用哪一个特征,每一个特征的重要性如何就产生了加权的线性回归。在传统的线性回归中,学习过程以下:

而加权线性回归学习过程以下:

  两者的区别就在于对不一样的输入特征赋予了不一样的非负值权重,权重越大,对于代价函数的影响越大。通常选取的权重计算公式为:

其中,x是要预测的特征,表示离x越近的样本权重越大,越远的影响越小。

 

3、logistic回归与Softmax回归

  3.1 logistic回归

  下面介绍一下logistic回归,虽然名曰回归,但实际上logistic回归用于分类问题。logistic回归实质上仍是线性回归模型,只是在回归的连续值结果上加了一层函数映射,将特征线性求和,而后使用g(z)做映射,将连续值映射到离散值0/1上(对于sigmoid函数为0/1两类,而对于双曲正弦tanh函数为1/-1两类)。采用假设模型为:

而sigmoid函数g(z)为:

   

当z趋近于-∞,g(z)趋近于0,而z趋近于∞,g(z)趋近于1,从而达到分类的目的。这里的

  那么对于这样的logistic模型,怎么调整参数θ呢?咱们假设

,因为是两类问题,即,因而获得似然估计为:

对似然估计取对数能够更容易地求解:

接下来是θ的似然估计最大化,能够考虑上述的梯度降低法,因而获得:

获得相似的更新公式:。虽然这个更新规则相似于LMS获得的公式,可是这两种是不一样算法,由于这里的hθ(x(i))是一个关于θTx(i)的非线性函数。

  3.2 Softmax回归

  logistic回归是两类回归问题的算法,若是目标结果是多个离散值怎么办?Softmax回归模型就是解决这个问题的,Softmax回归模型是logistic模型在多分类问题上的推广。在Softmax回归中,类标签y能够去k个不一样的值(k>2)。所以对于y(i)从属于{1,2,3···k}。

  对于给定的测试输入x,咱们要利用假设模型针对每个类别j估算几率值p(y = j|x)。因而假设函数hθ(x(i))形式为:

其中θ1,θ2,θ3,···,θk属于模型的参数,等式右边的系数是对几率分布进行归一化,使得总几率之和为1。因而相似于logistic回归,推广获得新的代价函数为:

能够看到Softmax代价函数与logistic代价函数形式上很是类似,只是Softmax函数将k个可能的类别进行了累加,在Softmax中将x分为类别j的几率为:

因而对于Softmax的代价函数,利用梯度降低法使的J(θ)最小,梯度公式以下:

表示J(θ)对第j个元素θj的偏导数,每一次迭代进行更新:

  3.3 Softmax回归 vs logistic回归

  特别地,当Softmax回归中k = 2时,Softmax就退化为logistic回归。当k = 2时,Softmax回归的假设模型为:

咱们令ψ = θ1,而且两个参数都剪去θ1,获得:

因而Softmax回归预测获得两个类别的几率形式与logistic回归一致。

  如今,若是有一个k类分类的任务,咱们能够选择Softmax回归,也能够选择k个独立的logistic回归分类器,应该如何选择呢?

  这一选择取决于这k个类别是否互斥,例如,若是有四个类别的电影,分别为:好莱坞电影、港台电影、日韩电影、大陆电影,须要对每个训练的电影样本打上一个标签,那么此时应选择k = 4的Softmax回归。然而,若是四个电影类别以下:动做、喜剧、爱情、欧美,这些类别并非互斥的,因而这种状况下使用4个logistic回归分类器比较合理。

 

4、通常线性回归模型

  首先定义一个通用的指数几率分布:

考虑伯努利分布,有:

  

再考虑高斯分布:

  

通常线性模型知足:1. y|x;θ 知足指数分布族E(η)  2. 给定特征x,预测结果为T(y) = E[y|x]  3. 参数η = θTx 。

  对于第二部分的线性模型,咱们假设结果y知足高斯分布Ν(μ,σ2),因而指望μ = η,因此:

很显然,从通常线性模型的角度获得了第二部分的假设模型。

  对于logistic模型,因为假设结果分为两类,很天然地想到伯努利分布,而且能够获得,因而 y|x;θ 知足B(Φ),E[y|x;θ] = Φ,因此

因而获得了与logistic假设模型的公式,这也解释了logistic回归为什么使用这个函数。