机器学习—KNN

来源:互联网 发布:python怎么多线程并发 编辑:程序博客网 时间:2024/05/23 00:44
       KNN,K近邻算法,是一种常用的监督学习方法,用于分类。
原理:给定测试样本,基于某种距离度量,找出训练集中与其最靠近的K个训练样本,然后基于这K个样本的信息来进行预测。
过程:略
注意:1.“某种距离度量”:这里的距离度量实质是衡量相似性的一种方法,而计算距离的方法有很多种,如欧氏距离、曼哈顿距离(城市街区距离)、马氏距离(协方差距离)、夹角余弦等等,也可以根据具体的问题,自己建模,构造新的距离(相似性)计算方法。采用不同的距离计算方法,不同的样本之间的距离则不同,找出的“近邻”也会有所不同,进而分类结果也会不同。至于如何找到合适的距离测量方法,还要根据具体的问题具体选择。但合适的距离计算方法都是问题本质的反映。
          2.“K”是一个正整数,是一个重要的参数,不同的K值,分类结果有着显著的不同,
          3.“基于近邻样本进行预测”,通常,在分类任务中,使用“投票法”,即选择出现类别最多的标签作为预测结果;在回归任务中,可以使用“平均法”,即用标签的平均值作为预测结果;当然,也可以给输出的标签加权平均,作为最后的预测结果。
错误率:假设样本独立同分布,经过推导(《机器学习》周志华),可以得到,它的泛化错误率不超过贝叶斯最优分类器的错误率的两倍。
优点:精度高、对异常值不敏感
缺点:计算复杂度高(K邻近算法没有训练过程,它在训练阶段仅仅是把训练样本保存起来,没有训练时间,到在测试时,用测试样本和训练样本进行距离计算,这是“懒惰学习”。这样在使用K近邻算法时,就必须保存全部数据,如果训练样本很大,必须使用很大的存储空间,另外,必须对每个数据都进行距离计算,所以,非常耗时),无法给出数据的基础结构信息
参考文献:《机器学习》周志华 著 清华大学出版社
                 《机器学习实战》Peter Harrington 著 李锐 李鹏 曲亚东 王斌 译  中国工信出版集团 人民邮电出版社