深入理解KNN算法

来源:互联网 发布:godaddy域名申请 编辑:程序博客网 时间:2024/06/03 18:26

1. KNN是个"消极"算法, y = f(x1,x2,........xp, x),其中x1,x2,........xp是训练数据,x是待分类或回归查询实例,y是分类或回归结果.整个过程中没有建立任何数学模型. 

2. 与"积极"算法的一个关键差异:  KNN可以为不同的待分类查询实例建立不同的目标函数逼近.

3. KNN的唯一假设,函数f是平滑的.

4. KNN算法的理论上限: 

   当我们的训练集中观测点的数目很大的时候,可以证明1-NN的误分的概率不劣于我们知道每个类的精确的概率密度函数时误分概率的2倍.换句话说,如果有大量的数据及充分复杂的分类规则,我们最多能减少划分错误到用简单的1-NN规则时的一半.

5. 相比1-NN,高一点的K值(KNN)的优点是提供平滑的分类,避免过拟合到训练数据中的噪声数据.典型应用中,K取值从几到十几,很少成百上千.
6. KNN 的缺点:
    1) 训练集的大小随着尾数的增长以指数增长.
    2) 当维数很多时,真正对分类有用的维度可能被淹没在其中了,造成维度灾难.
    3) 在大训练集中寻找最近邻太费时间,可以通过以下方法进行优化:

    a. 通过降维技术来减少维数,如主成分分析,从而减少计算距离的时间;  

    b.用复杂的数据结构,如搜索树去加速最近邻的确定。这个方法经常通过设定“几乎是最近邻”的目标去提高搜索速度;  

    c.编辑训练数据去减少在训练集中的冗余和几乎是冗余的点,从而加速搜索最近邻.


0 0