机器学习中,K近邻用于分类。如果把图像看成是像素点组成的一个矩阵,则也可以用K近邻做分类。
K近邻中涉及的两个参数:(1)距离选择,用L1还是L2,或者其他?(2)K的取值?这两个参数称为超参数(hpyer parameters),需要在模型训练时做出选择。
L1距离,又称为Manhattan距离,是两点之间的差的绝对值。L2距离,又称为欧氏距离,是两点之间差的平方开平方根的结果。
Q1:如果用L2距离,模型在训练集上的准确率如何?A1:accuracy=100%
Q2:模型在训练集上的准确率如何?A2:not sure. (之前有做过测试,第一反应是肯定是100%,因为训练集上的数据已经用于训练了,再把它拿来测试,相当于考试出的题目是题库里一模一样的题,必定答对……直到实验过后,才发现并不一定能达到100%的准确率)
Q3:如何设置超参数(best distance? best value of k?)?A3:problem-dependent。穷举所有的K,选择达到最高准确率的那一个K值。可以对训练集做交叉验证,不允许在测试集上调参。
在实际应用中,并不使用KNN做图像分类,原因:(1)在测试集上的效果不好;(2)不同测试集计算出的距离可能相同,也就是说距离并不能作为区分不同类别的依据。