k近邻算法(KNN)是一种基本的分类和回归算法。
理解:给定一个训练好的数据集,输入一个新的数据,在训练好的数据集中能找到与新的数据最邻近的k个数据。如果做分类的话,那就是这k个数据多数属于某个类,那么这个新的数据就属于某个类;如果做回归的话,就把这k个数据求平均值,结果就是回归的结果。
KNN的三要素:k值的选择,距离度量以及分类决策。
解释:k值就是找最近的数据数量,距离度量有很多种,比如:欧式距离,切比雪夫距离、信息熵(决策树用),决策分类就是用多数表决啊还是什么方法进行决策。
算法:
1.输入训练集:T={(x1,y1),(x2,y2)…(xi,yi)}
xi:x的特征向量,也就是f(x)这种函数里的x
yi: y是x的类别,也就是y=f(x)的y
2.根据距离度量找出和x最近的k个点。涵盖这k个点的领域记作Nk(x)
3.利用分类决策法决定x的类别y:
y=arg max∑I(yi=cj) i=1,2…k j=1,2…k
argmax是一种函数,是对函数求参数(集合)的函数。当我们有另一个函数y=f(x)时,若有结果x0= argmax(f(x)),则表示当函数f(x)取x=x0的时候,得到f(x)取值范围的最大值;若有多个点使得f(x)取得相同的最大值,那么argmax(f(x))的结果就是一个点集。换句话说,argmax(f(x))是使得 f(x)取得最大值所对应的变量点x(或x的集合)。
cj:数据可能的种类
yi:数据集中数据的种类
距离度