本文探讨的是监督学习中的kNN算法。在监督学习中,训练数据包含已知的类别标签,而非监督学习则没有。监督学习的目标是从输入数据中学习一个模型,以便对新输入的数据进行预测。这种学习可以应用于连续变量或离散变量的输入和输出。
如果输入和输出都是连续变量,这种方法被称为回归;如果输出是有限的离散变量,则称为分类;如果是变量序列,则称为标注。
kNN算法的核心理念是:在训练集中选择与待预测数据点最近的k个邻居,然后根据这k个邻居中出现频率最高的类别来预测该数据点的类别。
假设训练集T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中每个样本点的类别yi属于{c1,c2,⋯,cK}。输入待预测的数据点为x,预测类别为y=f(x)。
k邻域记为Nk(x),当yi=cj时指示函数I=1,否则I=0。
kNN的学习模型是输入X,通过学习得到一个决策函数:输出类别Y=f(X)。分类损失函数采用0-1损失函数,即分类正确时不产生损失,分类错误时产生1单位的损失。
如果预测类别为cj,那么kNN模型的误分类率为:
为了最小化误分类率,需要选择适当的k值。
k值的选择对kNN算法影响很大。如果k值过小,模型容易受到噪声样本点的影响。相反,如果k值过大,虽然可以减少噪声的影响,但可能会引入距离较远的样本点,从而导致预测结果不准确。
此外,k邻域内的样本点对预测结果的贡献度通常是均等的,但实际上距离更近的样本点应该具有更高的相似度,因此贡献度也应更大。可以通过引入权重wi=1/∥xi−x∥来调整这一问题。
希望以上内容对你有所帮助,欢迎分享给更多的人。