什么是K近邻(KNN)
K近邻(KNN,K-Nearest Neighbors)是最简单的机器学习算法之一,可用于回归和分类。KNN是一种“惰性”学习算法,从技术上讲,它不训练模型来进行预测。K近邻的逻辑是,假设有一个观测值,这个观测值被预测属于离它k个最近观测值中所占比例最大的那一个类。KNN方法是直接尝试使用实际数据来近似条件期望。
对于回归,预测值是K个邻居的均值,估计量(estimator)为
f ^ ( x ) = A v e r a g e [ y i ∣ x i ∈ N k ( x ) ] \hat{f}(x) = Average[y_i | x_i \in N_k(x)] f^(x)=Average[yi∣xi∈Nk(x)]
N k ( x ) N_k(x) Nk(x)是x的 包含k个 最靠近的 观测值的 邻域。
对于分类,所预测的标签是具有“多票者胜”性质的类,即,哪个类在相邻类中最具代表性。这相当于在k个最近的邻居中进行多数投票。对于每一类j = 1,…, K,然后我们计算条件概率
Pr ( G = j ∣ X = x 0 ) = 1 k ∑ i ∈ N k ( x ) I ( y i = j ) \Pr(G = j | X = x_0) = \frac1{k} \sum_{i\in N_k(x)} I(y_i = j) Pr(G=j∣X=x0)=k1i∈Nk(x)∑I(yi=j)
把观察值归类给条件概率最高的那一类。这里的 I ( y i = j ) I(y_i = j) I(yi=j)是指示函数,如果