机器学习(二):懒惰学习——近邻分量

来源:互联网 发布:python splinter教程 编辑:程序博客网 时间:2024/05/10 12:04

kNN算法

用于分类的近邻方法是通过knn算法实现的。
理解:对于测试数据集中的每一个记录,knn确定训练数据集中与该记录相似度“最近”的k条记录,其中k是一个预先指定的整数,未标记的测试实例被分配到k个近邻中占比最大的那个类中。
应用例子:肿瘤良性还是恶性的预测

  1. 计算距离
    定义近邻需要一个距离函数或者一个用来衡量两个实例之间相似性的公式。knn算法一般使用欧式距离:即用尺子连接两个实例(类似于二维平面中两个点之间的距离)

  2. 选择一个合适的k
    k是指,我们要在测试点周围选取多少个近邻点进行投票表决(比如k=10,在该点最近的10个近邻点中,有6个点归类于A,4个归类于B,那么测试点就也应该归类于A)k过大或过小都会增大噪声对模型的影响,可能会出现过度拟合的情况(对训练集模拟的非常好,对测试集的结果却表现非常差,类似于,学习学死了那样。。。)。常见做法是,k等于训练集中案例数量的平方根,一般取奇数,尽量避免可能投票表决相等的情况。

  3. 准备算法使用数据
    我们需要一种“收缩”或者重新缩放各种特征的方法,使得每个特征对于距离公式的贡献相对平均。一种传统的方法是min-max标准化:
    x=(x-min(x))/(max(x)-min(x)),另一种是z-score标准化:
    x=(x-mean(x))/标准差。

懒惰学习不是真正在学些什么,而是一字不差地存储训练数据,不利因素是进行预测的过程相对较慢。

备注:提高性能

  • 可以选择使用不同的标准化方法(min-max标准化和z-score标准化)
  • 可以测试其他的k值
0 0
原创粉丝点击