KNN直观解释
KNN算法原理
• K近邻(K-nearst neighbors, KNN)是一种基本的机器学习算法,所谓k近邻,就是 k 个最近的邻居的意思,说的是每个样本都可以用它最接近的 k 个邻居来代表。比如:判断一个人的人品,只需要观察与他来往最密切的几个人的人品好坏就可以得出,即“近朱者赤,近墨者黑”;KNN算法既可以应用于分类应用中,也可以应用在回归应用中。
• KNN在做回归和分类的主要区别在于最后做预测的时候的决策方式不同。KNN在分类预测时,一般采用多数表决法;而在做回归预测时,一般采用平均值法。
• 1. 从训练集合中获取K个离待预测样本距离最近的样本数据;
• 2. 根据获取得到的K个样本数据来预测当前待预测样本的目标属性值。
一个案例了解KNN
-
我们标记电影的类型:爱情片、动作片
-
每个电影有两个特征属性:打斗镜头、接吻镜头
-
预测一个新的电影的电影类型
-
第一步:将训练集中的所有样例画入坐标系,也将待测样例画入
- 第二步:计算待测分类的电影与所有已知分类的电影的欧氏距离
- 第三步:这些电影按照距离升序排序,取前k个电影,假设k=3,那么我们得到的电影依次是 《He’s Not Really Into Dudes》、《Beautiful Woman》和《California Man》。 而这三部电影全是爱情片,因此我们判定未知电影是爱情片。
KNN三要素
在KNN算法中,非常重要的三个因素:
K值的选择、距离的度量、决策规则
• K值的选择:对于K值的选择,一般根据样本分布选择一个较小的值,然后通过交叉验证来选择一个比较合适的最终值;当选择比较小的K值的时候,表示使用较小领域中的样本进行预测,训练误差会减小,但是会导致模型变得复杂,容易过拟合;当选择较大的K值的时候,表示使用较大领域中的样本进行预测,训练误差会增大,同时会使模型变得简单,容易导致欠拟合;
• 距离的度量:一般使用欧氏距离(欧几里得距离);
闵可夫斯基距离本身不是一种距离,而是一类距离的定义。对于n维空间中的两个点x(x1,x2,…xn和y(y1,y2,……yn),x和y之间的闵可夫斯基距离可以表示为:
dxy=∑k=1n(xk−yk)pqd_{xy}=\sqrt[q]{\sum_{k=1}^{n}(x_{k}-y_{k})^p}dxy=q∑k=1n(xk−yk)p