从KNN到Kernel

来源:互联网 发布:淘宝最有创意的店铺 编辑:程序博客网 时间:2024/05/16 06:42

从KNN到Kernel

knn(k nearest neighbour)算法, 是个简单直观的分类算法, 相信大家也都有所了解. 现在我们脑洞大开, 聊一个knn变形的故事.

  1. knn是在一个邻域内, 统计一下哪个类别的点多. 不管离我远还是近, 只要在这个邻域内, 都算是一个点. 那我们能不能使用距离加权呢? 近的点更重要, 远的点作用小, 这么来做一个优化.
  2. 进一步, 这个邻域到底有多大呢? 我们优化一下, 将这个邻域取到无穷大, 即统计所有点的类别. 这个优化得和1配合使用, 不然所有预测结果都一样啦(样本总的先验概率, 特征都失效了).
  3. 如果要计算所有点到这里的距离, 太复杂了. 我们再做一个优化, 用一些”有代表性的点”来代替所有点. 以后我们只要计算跟这些”有代表性的点”之间的距离, 再按距离加权求和就好啦.
  4. 距离, 可长可短. 近的较重要, 远到一定程度就没作用了. 再做一个优化, 给这个(欧式)距离搞个归一化, 近的值大(1.0), 越远越没用(->0). 那么用什么函数呢? Gaussian呀! 万能的Gaussian, 岂不是正合适?
    ##RBF kernel 产生了…
  5. 进一步优化. 现在我们找到了一些”代表性的点”, 并用到它们的距离加权求和(线性)来判别分类. 既然我们知道了这些”到代表性点的距离”, 那么也可以将其作为特征, 套用一个高阶模型(NN)或好搞的线性模型(Linear R, SVM).
0 0
原创粉丝点击