文档章节

《算法图解》——第十章 K最近邻算法

o
 osc_mervd488
发布于 2018/04/24 14:39
字数 807
阅读 24
收藏 0

精选30+云产品,助力企业轻松上云!>>>

       第十章    K最近邻算法

1  K最近邻(k-nearest neighbours,KNN)——水果分类


 

 

2  创建推荐系统

利用相似的用户相距较近,但如何确定两位用户的相似程度呢?

①特征抽取

对水果分类来说:个头和颜色就是特征

再根据这些特征绘图,然后根据毕达哥拉斯公式(欧氏距离呗)计算距离

对于推荐系统而言,同样是如此。

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

归一化(normalization)

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

权重问题。

 

②回归

KNN中回归就是预测结果。

如果要使用KNN的话,一定要研究余弦相似度(cosine similarity),余弦相似度不计算两个矢量的距离,而比较它们的角度。

 

③挑选合适的特征

特征的标准:与要推荐的电影紧密相关的特征;

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

 

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

太少了。如果考虑的邻居太少,结果很可能存在偏差。一个不错的经验规则是:如果有N位用户,应考虑sqrt(N)个邻居。


 

 

3  机器学习简介

一个🌰:OCR是光学字符识别(optical character recognition),这意味着你可拍摄印刷页面的照片,计算机将自动识别出其中的文字。

OCR如何工作的?如何识别这个数字的?

KNN:①浏览大量的数字图像,将这些数字的特征提取出来。

②遇到新图像时,你提取该图像的特征,再找出它最近的邻居都是谁!

OCR算法提取线段、点和曲线等特征

OCR的第一步是查看大量的数字图像并提取特征,这被称为训练(training)。大多数机器学习算法都包含训练的步骤:要让计算机完成任务,必须先训练它。


 

 

4  小结

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

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

理解Java字符串常量池与intern()方法

String s1 = "Hello";String s2 = "Hello";String s3 = "Hel" + "lo";String s4 = "Hel" + new String("lo");String s5 = new String("Hello");String s6 = s5.intern();String ......

osc_ekw8urc6
11分钟前
14
0
python—sift特征提取

一、SIFT提出的目的和意义 二、SIFT的特征简介 三、SIFT算法实现步骤简述 四、图像集 五、匹配地理标记图像 六、SIFT算法代码实现 代码 结果截图 小结 七、SIFT实验总结 八、实验遇到的问题 ...

osc_z9jr2tjo
12分钟前
15
0
如何在SystemVerilog中手动设置随机化seed

可以产生受约束的随机激励是sv验证语言中最主要的feature,这里有一个常常会被验证工程师忽视的问题,就是随机化种子(seed)。 我们知道,用verilog里面的$random或者sv里面的$urandom产生的...

osc_twlari2q
13分钟前
4
0
带TLS认证的Python GRPC调用

0.生成CA证书及server、client证书,参见https://github.com/grpc/grpc-java/tree/master/examples: openssl genrsa -passout pass:111111 -des3 -out ca.key 4096 openssl req -passin p......

osc_idmmzkjc
14分钟前
17
0
pytest文档33-Hooks函数获取用例执行结果(pytest_runtest_makereport)

前言 pytest提供的很多钩子(Hooks)方法方便我们对测试用例框架进行二次开发,可以根据自己的需求进行改造。 先学习下pytest_runtest_makereport这个钩子方法,可以更清晰的了解用例的执行过程...

osc_2g1pfwhe
15分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部