[Data Mining] kNN: k-nearest neighbor classification
来源:互联网 发布:java报文加密 编辑:程序博客网 时间:2024/05/16 09:36
最近在跟着赖博做一个图片配诗的小pro,需要用到kNN算法。
先转一篇左耳朵兔子的一篇文章K Nearest Neighbor算法
k-Means算法,主要用来聚类,将相同类别的样本点聚为同一类。
kNN算法,主要用来归类,给定一个待分类的样本点,通过计算样本空间中与自己最近的K个样本来判断这个待分类数据属于哪个分类。
所以这里一个待分类的样本点的类别主要由最近的K个样本中最多的类别,下面这个图是经典的图,说明K的选择不懂,对最终归类结果的影响。
- 如果k=3,最近的3个点中有两个红色一个蓝色,绿色的这个待分类点属于红色类别。
- 如果k=5,最近的5个点中有两个红色三个蓝色,绿色的这个待分类点属于蓝色类别。
Algorithm
上述中k如果取1的话,则待分类点直接被赋予最近点的类别。
Distance Measure
常见的距离公式有以下三种
对于离散变量而言,需要使用Hamming Distance
Distance Metrics in Matlab
考虑一个
- Euclidean distance
d2st=(xs−yt)(xs−yt)′ - Standardized Euclidean distance
d2st=(xs−yt)V−1(xs−yt)′
V是一个n*n的对角阵,对角线的元素是权重的倒数。 - Mahalanobis distance
d2st=(xs−yt)C−1(xs−yt)′
C是一个方差矩阵。 - City block metric
dst=∑j=1n|xsj−ytj| - Minkowski metric
dst=∑j=1n|xsj−ytj|−−−−−−−−−−−⎷p
更多的metric可以参考online decumentation
选择一个最优k的最好方法是观察样本数据。一般来说,虽然一个较大的K会减少噪声的影响,得到较准确的结果,但是并不是说K较大就有保证。
有两个方法保证类别的判定,
- 第一个方法是在一个独立的数据集上测试k的有效性,经验而言,K的选择一般是3-10.
- 第二个方法可以滤除一些错误的待测点,检查,,
Example
我们现在有一堆样本,每个样本包含两个数值变量——age和loan,label只有两类——Default和Non-Default。对于一个未知的样本(Age=48,loan=142000),我们使用kNN来对它进行分类。
使用欧式距离统计
当K=3时,有两个Default = Y 以及一个Default=N,所以未知样本的label是Default = Y
Standardized Distance
为了避免不同样本数据中不同尺度的影响,可以将数据集中归一化。
归一化的方法
上文主要来自这个tutorialKNN
- [Data Mining] kNN: k-nearest neighbor classification
- kNN:k-nearest neighbor classification(K最近邻分类算法,KNN)
- KNN(K-Nearest Neighbor)
- KNN(K-nearest neighbor)理解
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(八) kNN: k-nearest neighbor classification
- 数据挖掘十大经典算法(8) kNN: k-nearest neighbor classification
- k-近邻算法(k-Nearest Neighbor, kNN)
- k-近邻算法(k-Nearest Neighbor,KNN)
- KNN(k-nearest neighbor algorithm)算法
- Python实现kNN(k nearest neighbor algorithm)
- L - Huatuo's Medicine【ccpc】
- 对着阳光笑了笑
- Boostrap实现仿百度百科当前页快捷导航栏效果
- 远程接口对接
- 二叉树
- [Data Mining] kNN: k-nearest neighbor classification
- jpa关系映射
- Ancient Go【ccpc dfs】
- LightOJ - 1125 Divisible Group Sums(DP)
- hihocoder #1096
- navicat for mysql转存数据库
- H - Sudoku【ccpc dfs】
- HDOJ 5522 Numbers(DFS)
- 数据流