ML_knowledge

Machine Learning Knowledge

K-th Nearest Neighbor

[Supervised, regression]

已有一个带label的数据集,给定一个样本,求其label。计算与其他所有samples的距离,取前k近的samples,统计这k个samples的label,认为最多的那个为此样本的label。

  • k的选择不能太大,否则没有意义(当k=n是就是一个统计)同时k也不能太小,否则就overfit(当k=1时就近选择,对于测试集没有帮助);可以通过划分验证集的方式来找到合适的k
  • 数据的维度需要归一化,否则某个维度的距离会dominate其他的维度。
  • 时间复杂度高,kd tree

K-means clustering

  1. 选择初始化的k个样本作为初始聚类中心$a=a_1,a_2,…,a_k$
  2. 针对数据集中每个样本$x_i$计算它到k个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中
  3. 针对每个类别$a_j$,重新计算它的聚类中心$a_j=\frac{1}{|c_i|}\sum_{x\in c_i}x$(即属于该类的所有样本的质心)
  4. 重复2,3两步操作,直到达到某个终止条件(迭代次数,最小误差变化等)