机器学习2-KNN(转)

转载 2015年11月18日 16:50:08

一、算法概述
1、kNN算法又称为k近邻分类(k-nearest neighbor classification)算法。
最简单平凡的分类器也许是那种死记硬背式的分类器,记住所有的训练数据,对于新的数据则直接和训练数据匹配,如果存在相同属性的训练数据,则直接用它的分类来作为新数据的分类。这种方式有一个明显的缺点,那就是很可能无法找到完全匹配的训练记录。

kNN算法则是从训练集中找到和新数据最接近的k条记录,然后根据他们的主要分类来决定新数据的类别。该算法涉及3个主要因素:训练集、距离或相似的衡量、k的大小。

2、代表论文
Discriminant Adaptive Nearest Neighbor Classification
Trevor Hastie and Rolbert Tibshirani
IEEE TRANSACTIONS ON PAITERN ANALYSIS AND MACHINE INTELLIGENCE, VOL. 18, NO. 6, JUNE 1996
http://www.stanford.edu/~hastie/Papers/dann_IEEE.pdf

3、行业应用
客户流失预测、欺诈侦测等(更适合于稀有事件的分类问题)

二、算法要点

1、指导思想
kNN算法的指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断出你的类别。

计算步骤如下:
1)算距离:给定测试对象,计算它与训练集中的每个对象的距离
2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类

2、距离或相似度的衡量
什么是合适的距离衡量?距离越近应该意味着这两个点属于一个分类的可能性越大。
觉的距离衡量包括欧式距离、夹角余弦等。
对于文本分类来说,使用余弦(cosine)来计算相似度就比欧式(Euclidean)距离更合适。

3、类别的判定
投票决定:少数服从多数,近邻中哪个类别的点最多就分为该类。
加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)

三、优缺点

1、优点
简单,易于理解,易于实现,无需估计参数,无需训练
适合对稀有事件进行分类(例如当流失率很低时,比如低于0.5%,构造流失预测模型)
特别适合于多分类问题(multi-modal,对象具有多个类别标签),例如根据基因特征来判断其功能分类,kNN比SVM的表现要好

2、缺点
懒惰算法,对测试样本分类时的计算量大,内存开销大,评分慢
可解释性较差,无法给出决策树那样的规则。

四、常见问题

1、k值设定为多大?
k太小,分类结果易受噪声点影响;k太大,近邻中又可能包含太多的其它类别的点。(对距离加权,可以降低k值设定的影响)
k值通常是采用交叉检验来确定(以k=1为基准)
经验规则:k一般低于训练样本数的平方根

2、类别如何判定最合适?
投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类,所以加权投票法更恰当一些。

3、如何选择合适的距离衡量?
高维度对距离衡量的影响:众所周知当变量数越多,欧式距离的区分能力就越差。
变量值域对距离的影响:值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准化。

4、训练样本是否要一视同仁?
在训练集中,有些样本可能是更值得依赖的。
可以给不同的样本施加不同的权重,加强依赖样本的权重,降低不可信赖样本的影响。

5、性能问题?
kNN是一种懒惰算法,平时不好好学习,考试(对测试样本分类)时才临阵磨枪(临时去找k个近邻)。
懒惰的后果:构造模型很简单,但在对测试样本分类地的系统开销大,因为要扫描全部训练样本并计算距离。
已经有一些方法提高计算的效率,例如压缩训练样本量等。

6、能否大幅减少训练样本量,同时又保持分类精度?
浓缩技术(condensing)
编辑技术(editing)

参考:
维基百科:
http://zh.wikipedia.org/wiki/%E6%9C%80%E9%82%BB%E8%BF%91%E6%90%9C%E7%B4%A2
百度百科:http://baike.baidu.com/view/1485833.htm

KNN可以用于推荐:
这里我们不用KNN来实现分类,我们使用KNN最原始的算法思路,即为每个内容寻找K个与其最相似的内容,并推荐给用户。

机器学习的路径和职业规划(转)--作为学习过程的参考

机器学习的学习路径和职业规划  一、这个小册子要写什么东西(关于哪些方面的问题进行思考和探讨) 第一部分内容,机器学习由基础到高级,由简单到应用,由理论到应用有哪些资源。如果要学习的话,可以选...
  • hyh102
  • hyh102
  • 2016年04月07日 21:04
  • 1648

成功转型机器学习,多年的经验分享

原址 这个年代,不怕你是大牛,就怕大牛还会写文章。 作为AI100智库专家,智亮总是能在口若悬河中,让人深入浅出地学到一堆堆干货,掏心窝子的干货。 ...
  • u010164190
  • u010164190
  • 2017年06月24日 00:28
  • 831

程序员如何开启机器学习之路

我曾是一名想进入AI行业的软件开发者。为了更快熟悉这里边的门道,我阅读了机器学习的书籍,浏览了不少帖子,还学习了Coursera上关于机器学习的课程。 但是,但是,依然不知道如何开始…… ...
  • SailingLT
  • SailingLT
  • 2017年06月06日 16:09
  • 521

实例详解机器学习如何解决问题

前言 随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的研究各有侧重,学术界侧重于对机器学习...
  • liugallup
  • liugallup
  • 2016年04月07日 09:05
  • 810

iOS C++ 关于深度学习(机器学习) (一)学习概览

参考文章: http://www.leiphone.com/news/201611/cWf2B23wdy6XLa21.html http://blog.csdn.net/songrotek/arti...
  • ws1836300
  • ws1836300
  • 2017年02月21日 22:23
  • 628

机器学习小组知识点25:数据预处理之数据集成与数据变换(Data Integration and Transformation)

数据集成 数据集成 将多个数据源中的数据整合到一个一个一致的存储中 模式集成 整合不同数据源中的元数据 实体识别问题:匹配来自不同数据源的现实世界的实体 检测并解决...
  • Eric2016_Lv
  • Eric2016_Lv
  • 2016年12月06日 15:11
  • 757

机器学习 矩阵的基本运算

矩阵的基本概念 假设 aij∈Ra_{ij} \in \mathfrak{R}, 其中 i=1,2,...,mi=1,2,...,m; j=1,2,...,nj=1,2,...,n. 我们定义如下的...
  • shinian1987
  • shinian1987
  • 2015年05月16日 14:40
  • 2418

机器学习知识体系[转]

随着2016年Alpha Go在围棋击败李世石,2017年初卡内基梅隆大学人工智能系统Libratus在长达20天的鏖战中,打败4名世界顶级德州扑克玩家,这标志着人工智能技术又达到了一个新的高峰。人工...
  • xiangxizhishi
  • xiangxizhishi
  • 2017年12月22日 17:54
  • 42

从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现

卷积神经网络(CNN)实现背景卷积神经网络广泛用于图像检测,它的实现原理与传统神经网络基本上是一样的,因此将普遍意义的神经网络和卷积神经网络的实现合成一篇。神经网络实现思路“扔掉神经元”尽管所有教程在...
  • jxt1234and2010
  • jxt1234and2010
  • 2016年10月28日 02:00
  • 3010

一个框架解决几乎所有机器学习问题

上周一个叫 Abhishek Thakur 的数据科学家,在他的 Linkedin 发表了一篇文章 Approaching (Almost) Any Machine Learning Problem,...
  • aliceyangxi1987
  • aliceyangxi1987
  • 2017年05月02日 11:26
  • 15908
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:机器学习2-KNN(转)
举报原因:
原因补充:

(最多只允许输入30个字)