一.引言
机器学习中的回归问题属于有监督学习的范畴,回归问题的目标是给定D维输入变量x,并且每一个输入矢量x都有对应的值y,
要求对于新来的数据预测它对应的连续的目标值t。
比如下面这个例子:假设我们有一个包含47个房子的面积和价格的数据集如下:
![](https://camo.githubusercontent.com/f5198c4c49fed874a5c471187c9327c4281527b2/687474703a2f2f696d616765732e636e6974626c6f672e636f6d2f626c6f672f3339323232382f3230313431302f3239313931393431303635353830352e6a7067)
我们可以在Matlab中画出来这组数据集,如下:
![](https://camo.githubusercontent.com/d204051622110c3e4595efa98e86ff4c61369170/687474703a2f2f696d616765732e636e6974626c6f672e636f6d2f626c6f672f3339323232382f3230313431302f3239313932313037323533383234302e6a7067)
看到画出来的点,是不是有点像一条曲线?
我们可以用一条曲线去尽量拟合这些数据点,那么对于新来的输入,我么就可以将拟合的曲线上返回对应的点从而达到预测的目的。
如果要预测的值是连续的比如上述的房价,那么就属于回归问题;如果要预测的值是离散的即一个个标签,那么就属于分类问题。
这个学习处理过程如下图所示:
![](https://camo.githubusercontent.com/44f49f3c024650bbc82a1c507c7ade96d7f7ad5a/687474703a2f2f696d616765732e636e6974626c6f672e636f6d2f626c6f672f3339323232382f3230313431302f3239313932353237393235353130342e6a7067)
上述学习过程中的常用术语:
1). 包含房子面积和价格的数据集称为 "训练集training set"
2). 输入变量x(本例中为面积)为 "特征features"
3). 输出的预测值y(本例中为房价)为 "目标值target"
4). 拟合的曲线,一般表示为y = h(x),称为 "假设模型hypothesis"
二.线性回归模型
线性回归模型假设输入特征和对应的结果满足线性关系。
在上述的数据集中加上一维--房间数量,于是数据集变为:
![](https://camo.githubusercontent.com/e881e4178e202e4a9fa092406199bdeccf60ed05/687474703a2f2f696d616765732e636e6974626c6f672e636f6d2f626c6f672f3339323232382f3230313431302f3239313934323137333632343738322e6a7067)
于是,输入特征x是二维的矢量,比如x1(i)表示数据集中第i个房子的面积,x2(i)表示数据集中第i个房子的房间数量。
于是可以假设输入特征x与房价y满足线性函数,比如:
![](https://camo.githubusercontent.com/835e7d4257ab47c092a9e65ad2ad5aea20c6eee3/687474703a2f2f696d616765732e636e6974626c6f672e636f6d2f626c6f672f3339323232382f3230313431302f3239313934363331393430343730372e6a7067)
这里θi称为假设模型即映射输入特征x与结果y的线性函数h的参数parameters,为了简化表示,我们在输入特征中加入x0 = 1,
于是得到:
参数θ和输入特征x都为矢量,n是输入的特征x的维数(不包含x0)
![](https://camo.githubusercontent.com/bdc1f7a47930c5382d0fae1a60ec4528aa251037/687474703a2f2f696d616765732e636e6974626c6f672e636f6d2f626c6f672f3339323232382f3230313431302f3239313935313232333135363936322e6a7067)
现在,给定一个训练集,我们应该怎么学习参数θ,从而达到比较好的拟合效果呢?一个直观的想法是使得预测值h(x)尽可能接近y。
一种方法是计算它的成本函数(Cost function),即预测出来的值与实际值y之间的方差的大小来决定当前值是否是最优的!
为什么选择方差而不是选择偏差呢?
因为偏差有正有负会相互抵消,因此选择方差更能准确表示两者之间的差异。
因此我们对于每一个参数θ,定义一个代价函数cost function用来描述h(x(i))'与对应的y(i)'的接近程度:
(假设现在只有2个参数θ0和θ1)
![](https://camo.githubusercontent.com/9b486198032d4371e83f37c39d0dbec6e12013dd/687474703a2f2f73747564656e7464656e672e6769746875622e696f2f696d616765732f6d6c2f31322e706e67)
前面乘上的1/2m是为了求导的时候,使常数系数消失。于是我们的目标就变为了调整θ使得代价函数J(θ)取得最小值,
方法有梯度下降法,最小二乘法等。