0.基于实例的学习方法:
KNN属于基于实例的方法,只是简单的把训练样例存储起来。从这些事例中泛化的工作中被推迟到必须分类新的实例时。每当遇到一个新的查询实例,它分析这个新实例与以前存储的实例的关系,并据此把一个目标函数值赋给新实例。 基于实例的方法还包括最近邻算法nearest neighbour和局部加权回归 locally weighted regression法。他们都假定实例可以表示为欧式空间中的点。基于实例的方法有时又被称为消极(lazy)学习方法,因为它们把处理工作延迟到必须分类新的实例时。最近邻算法和局部加权回归法用于逼近实值和离散目标函数。基于实例的方法与其他类型的分类方法具有一个关键的差异就是:基于实例的方法可以为每个不同的待分类查询实例建立不同的目标函数逼近。
1.懒惰学习VS积极学习
懒惰学习和积极学习的区别就再于,学习成本的多少。如KNN就是一种懒惰学习,在学习时几乎不需要成本,但是在查询(分类的时候就需要更多的时间)如下图所示:KNN和线性回归在学习和查询的时间复杂度对比。
鉴于这种特性,在选择学习方法的时候就需要考虑具体的应用场景。(学习次数以及查询次数的多少)
2.懒惰学习之KNN
具体算法原理:通过比较输入向量的相似度,一般是距离(欧氏距离、和曼哈顿距离等),然后找出最相似的K个,并对K个向量的标签进行统计。然后把输入向量归类为统计标签最多的那一类。
具体算法编码参考: 机器学习实战第二章——KNN算法(源码解析)
4.分类vs 回归
基于实例学习的分类(KNN算法)已经说过了,基于实例的学习还可以进行回归,即加权线性回归。它在通过要预测的点与数据集中的点的距离来为数据集中的点赋权值。当某点离要预测的点越远,其权重越小,否则越大。一个比较好的权重函数如下:
高斯核函数:
需要最小化的目标函数:
即比普通线性回归多一个权重
更多详情参考:
1.加权线性回归(Weighted Linear Regression)的公式及其推理
加权最小二乘法与局部加权线性回归
2.线性回归之——最小二乘法
3.Udacity课件
5.维度灾难
简单的说就是随着学习的数据维度增加,使得模型不能很好地泛华。因为维度地增加使得数据分布稀疏,在训练表现得更好的同时,更容易出现过拟合。把高纬度向低维度投影的时候就可以发现,其实就是在低维度上进行复杂的非线性分类,更多地强调训练时分类的准确性。对应的解决办法就是:
1. 增加样本数量。当样本数量趋近无限的时候,维度灾难就不存在。(即使更高维度,也不容易找到简单的分类方式,过拟合就不存在)
2. 交叉检验,检验训练集和测试集的误差,找到最合适的维度。
更多详细参考:
1. 机器学习中的维数灾难
2. 原文:The Curse of Dimensionality in classification