K最近邻算法
Last updated
Last updated
分类。推荐系统的设计,比如电影推荐系统,淘宝购物推荐系统,总之应用广泛,常用于分类,比如将人群分类,构建用户画像;
回归。面包店明天应该做多少个面包?利用明天的特征来算出一个数字。
OCR,光学字符识别,提取特征,找出最近的邻居。
垃圾邮件过滤。用到的算法是朴素贝叶斯分类器。
在前面的图表中,相似的用户相距较近,但如何确定两位 用户的相似程度呢?这就需要用到特征抽取了。
对每种类型的喜好都对应着特定的数字,然后每个人都对应着五个数字,之后就可以利用距离公式,计算并表示出人与人之间的相似程度。
假设你不仅要向Priyanka推荐电影,还要预测她将给这部电影打多少分。为此,先找出与她 最近的5个人。 顺便说一句,我老说最近的5个人,其实并非一定要选择5个最近的邻居,也可选择2个、10 个或10 000个。这就是这种算法名为K最近邻而不是5最近邻的原因!
你求这些人打的分的平均值,结果为4.2。这就是回归(regression)。你将使用KNN来做两项 基本工作——分类和回归:
分类就是编组;
回归就是预测结果(如一个数字)。
使用KNN时,挑选合适的特征进行比较至关重要。所谓合适的特 征,就是:
与要推荐的电影紧密相关的特征;
不偏不倚的特征(例如,如果只让用户给喜剧片打分,就无法判断他们是否喜欢动作片)。
余弦相似度 前面计算两位用户的距离时,使用的都是距离公式。还有更合适的公式吗?在实际工作中, 经常使用余弦相似度(cosine similarity)。假设有两位品味类似的用户,但其中一位打分时更 保守。他们都很喜欢Manmohan Desai的电影Amar Akbar Anthony,但Paul给了5星,而Rowan只 给4星。如果你使用距离公式,这两位用户可能不是邻居,虽然他们的品味非常接近。 余弦相似度不计算两个矢量的距离,而比较它们的角度,因此更适合处理前面所说的情况。 本书不讨论余弦相似度,但如果你要使用KNN,就一定要研究研究它!
KNN用于分类和回归,需要考虑最近的邻居。
分类就是编组。
回归就是预测结果(如数字)。
特征抽取意味着将物品(如水果或用户)转换为一系列可比较的数字。
能否挑选合适的特征事关KNN算法的成败。