K最近邻算法

应用场景

  1. 分类。推荐系统的设计,比如电影推荐系统,淘宝购物推荐系统,总之应用广泛,常用于分类,比如将人群分类,构建用户画像;

  2. 回归。面包店明天应该做多少个面包?利用明天的特征来算出一个数字。

  3. OCR,光学字符识别,提取特征,找出最近的邻居。

  4. 垃圾邮件过滤。用到的算法是朴素贝叶斯分类器。

特征抽取

在前面的图表中,相似的用户相距较近,但如何确定两位 用户的相似程度呢?这就需要用到特征抽取了。

对每种类型的喜好都对应着特定的数字,然后每个人都对应着五个数字,之后就可以利用距离公式,计算并表示出人与人之间的相似程度。

回归

假设你不仅要向Priyanka推荐电影,还要预测她将给这部电影打多少分。为此,先找出与她 最近的5个人。 顺便说一句,我老说最近的5个人,其实并非一定要选择5个最近的邻居,也可选择2个、10 个或10 000个。这就是这种算法名为K最近邻而不是5最近邻的原因!

你求这些人打的分的平均值,结果为4.2。这就是回归(regression)。你将使用KNN来做两项 基本工作——分类和回归:

  1. 分类就是编组;

  2. 回归就是预测结果(如一个数字)。

挑选合适的特征

使用KNN时,挑选合适的特征进行比较至关重要。所谓合适的特 征,就是:

  1. 与要推荐的电影紧密相关的特征;

  2. 不偏不倚的特征(例如,如果只让用户给喜剧片打分,就无法判断他们是否喜欢动作片)。

余弦相似度

余弦相似度 前面计算两位用户的距离时,使用的都是距离公式。还有更合适的公式吗?在实际工作中, 经常使用余弦相似度(cosine similarity)。假设有两位品味类似的用户,但其中一位打分时更 保守。他们都很喜欢Manmohan Desai的电影Amar Akbar Anthony,但Paul给了5星,而Rowan只 给4星。如果你使用距离公式,这两位用户可能不是邻居,虽然他们的品味非常接近。 余弦相似度不计算两个矢量的距离,而比较它们的角度,因此更适合处理前面所说的情况。 本书不讨论余弦相似度,但如果你要使用KNN,就一定要研究研究它!

小结

KNN用于分类和回归,需要考虑最近的邻居。

  1. 分类就是编组。

  2. 回归就是预测结果(如数字)。

  3. 特征抽取意味着将物品(如水果或用户)转换为一系列可比较的数字。

  4. 能否挑选合适的特征事关KNN算法的成败。

Last updated

Was this helpful?