首页 > 代码库 > 机器学习-局部加权回归
机器学习-局部加权回归
Locally weighted regression,局部加权回归
对于线性回归,问题是选取的特征的个数和什么特征会极大影响fit的效果。
比如下图,是分布使用下面几个模型进行拟合的 :
通常会认为第一个模型underfitting(欠拟合),而第三个模型overfitting(过拟合),第二个模型相对比较好的fit到训练集
所以可以看出,找出一个全局的线性模型去fit整个训练集,是个比较困难的工作,因为选择特征成为一个关键的因素。
局部加权线性回归的思路,就是我不需要去fit整个训练集而产生全局的模型,而是在每次predict x的时候,只去拟合x附近的一小段训练集。
无论全局训练集是多么复杂的一个分布曲线,但在局部小段数据上,都可以用线性去逼近。
所以算法如下:
其中
可以看到我们通过weight来选取局部样本点,这里weight定义有点类似高斯分布,虽然这里和高斯分布没有关系,只是恰好相似,但是他的分布曲线确实和高斯分布一样,钟型,所以通过weight,只有距离x很近的样本点才会对于损失函数有作用。局部加权线性回归算法是一种non-parametric algorithm而普通的线性回归是parametric learning algorithm
parametric learning algorithm有一组有限的,固定的参数,一旦完成fit,只需要保存下参数值来做预测,而不需要保存完整的训练集 。
non-parametric algorithm,相反,我们需要保存完整的训练集来进行预测,而不是仅仅保存参数
正式定义为,the amount of stuff we need to keep in order to represent the
hypothesis h grows linearly with the size of the training set.
为了表达假设h而保存的数据随着训练集的size而线性增长。
前面讨论了线性回归问题,
符合高斯分布,使用最小二乘来作为损失函数。下面继续讨论分类问题,分类问题和回归问题不同在于Y的取值是离散的。
我们先讨论最简单的binary classification,即Y的取值只有0和1。
分类问题一般不会使用回归模型,因为回归模型是输出是连续的,而分类问题需要的输出是离散的。但是一定要用也不是不可以,比如这里继续使用线性回归模型,但是不是非常适合,原因如下:
1、首先线性模型的Y取值是连续,且没有限制的,而二元分类的取值为[0,1],对于线性回归模型,参考下图,可以以0.5为分界线,大于则取1,小于则取0,也可以转化为离散的结果。
2、再者,其实只有在分界线周围的样本点对分类模型会有比较大的影响,而比较远的样本点其实对模型没啥影响
但对于线性模型而言,增加任何样本点都会对模型产生相同的影响
所以提出logistic回归模型,这种回归模型可以比较好的解决二元分类问题。
从本质上你仍然可以把他理解为线性模型,你可以看下面给出的H函数,只是在线性回归外面加上logistic函数进行转换,可以理解成把上图的直线转化为那条sigmoid曲线,使其更加符合二元分类的需求。但是本质上可以看成仍然是用那条直线进行划分。
机器学习-局部加权回归