算法图解第十章笔记与习题(KNN算法)

算法图解第十章笔记与习题(KNN算法)


算法图解pdf百度云链接,提取码:jttg


10.1 KNN算法

KNN(k-nearest neighbours)算法,意为:根据K个最近邻居的属性来认定该节点的属性。

KNN算法可以用于分类问题,也可以用于创建推荐系统。假定一个用户可以提取特征为一个节点,那么它的喜好一定与其周围最近的几个邻居相似,我们就可以通过其邻居的喜好来给他推荐事物。


10.2特征提取

由于KNN算法依赖距离的计算,所以必须将节点的属性特征提取为数字,并计算他们的距离。

计算距离的公式为欧氏距离:$ \sqrt{\sum_{i=1}n(x_i-y_i)2}$ 。其中n为特征维数,x,y为两个节点。

计算时,通过欧氏距离选取出离目标节点最近的节点,就可以根据最近的k个节点来为目标节点提供参考。


10.3 回归

KNN算法不仅能够根据邻居节点来给目标节点做出推荐,也同样能够预测它将会做出怎样的选择。如可以预测一个用户对于某电影的评分,以其近邻对这部电影的平均分作为其可能的打分。这被称为回归(regression)。

KNN的两个基本功能:分类和回归。

  • 分类就是编组。
  • 回归就是预测结果(如一个数字)。

这两项也是机器学习中十分重要的两个类别。

余弦相似度:在实际工作中,计算距离的方式不仅仅有欧式距离,还会使用余弦相似度(cosine similarity)。余弦相似度不计算两个矢量的距离,而比较它们的角度,对于属性相似,但数值不同的节点而言,他们也是相似的,但若以欧氏距离计算,他们将不是邻居。

另外,对于一项任务而言,选择合适的特征作为依据十分重要。例如一项电影推荐任务,如果使用的是用户对汽车的喜好作为特征,那么这项电影推荐任务将十分失败。


10.4 小结

  • KNN用于分类和回归,需要考虑最近的邻居。
  • 分类就是编组。
  • 回归就是预测结果(如数字)。
  • 特征抽取意味着将物品(如水果或用户)转换为一系列可比较的数字。
  • 能否挑选合适的特征事关KNN算法的成败。

练习

习题10.1:

  • 在Netflix示例中,你使用距离公式计算两位用户的距离,但给电影打分时,每位用户的标准并不都相同。假设你有两位用户——Yogi和Pinky,他们欣赏电影的品味相同,但Yogi给喜欢的电影都打5分,而Pinky更挑剔,只给特别好的电影打5分。他们的品味一致,但根据距离算法,他们并非邻居。如何将这种评分方式的差异考虑进来呢。

可以使用归一化(normalization)。通过归一化将平均值回调到同一水平线,如3分后,就能基于同样的标准来比较他们间的距离了。这也是机器学习中数据预处理的一部分。


习题10.2:

  • 假设Netflix指定了一组意见领袖。例如,Quentin Tarantino和Wes Anderson就是Netflix的意见领袖,因此他们的评分比普通用户更重要。请问你该如何修改推荐系统,使其偏重于意见领袖的评分呢?

可以给意见领袖分配权重,使其在统计k个邻居时获得更高的权重。如以5个邻居的喜好来统计目标节点的喜好,那么使意见领袖的喜好乘以3,再与其它4个邻居进行平均值计算。就可以使其更偏向于意见领袖的评分了。


习题9.3:

  • Netflix的用户数以百万计,前面创建推荐系统时只考虑了5个最近的邻居,这是太多还是太少了呢?

太少了。这样的情况下,十分容易出现偏差。一个经验之谈是,如果有N个节点,那么考虑 N \sqrt{N} 个邻居。


猜你喜欢

转载自blog.csdn.net/hwl19951007/article/details/89057755