KNN
要求三个事情:1.一组数据记录 2.计算两个记录之间的距离矩阵 3.检索的最近的K个邻居
对未知记录进行分类:1.计算到其他training record的距离 2.识别k个最近的邻居 3.用服从多数原则决定分类
决定分类两种方式:
1.服从多数 2.根据距离权衡投票 weight factor, w = 1/d weight factor, w = 1-d d越小,w占比越大
k的选取:1.太小,容易过拟合,有noise point 2.太大,容易有其他类,欠拟合
属性有可能进行scale缩放,因为不同属性的取值范围不同,有些数值大的对结果影响大。
knn算法的计算步骤
knn算法就是根据距离待分类样本A最近的k个样本数据的分类来预测A可能属于的类别,基本的计算步骤如下:
- 对数据进行标准化,通常是进行归一化,避免量纲对计算距离的影响;
- 计算待分类数据与训练集中每一个样本之间的距离;
- 找出与待分类样本距离最近的k个样本;
- 观测这k个样本的分类情况;
- 把出现次数最多的类别作为待分类数据的类别。
knn算法如何计算距离?
在计算距离之前,需要对每个数值属性进行规范化,这有助于避免较大初始值域的属性比具有较小初始值域的属性的权重过大。
- 对于数值属性,knn算法使用距离公式来计算任意两个样本数据之间的距离。
- 对于标称属性(如类别),knn算法使用比较法,当两个样本数据相等时,距离为0;当两个样本数据不等时,距离是1。
- 对于缺失值,通常取最大的差值,假设每个属性都已经映射到[0,1]区间,对于标称属性,设置差值为1;对于数值属性,如果两个元组都缺失值,那么设置差值为1;如果只有一个值缺失,另一个规范化的值是v,则取差值为 1-v 和 v 的较大者。
KNN的主要缺点:
1.计算量大,尤其是特征数非常多的时候
2.样本不平衡的时候,对稀有类别的预测准确率低