k最近邻分类;matlab_《算法图解》学习记录10--K最近邻算法

98e5da47e53d9751883f47006c37d711.png

本章内容

 学习使用K最近邻算法创建分类系统。

 学习特征抽取。

 学习回归,即预测数值,如明天的股价或用户对某部电影的喜欢程度。

 学习K最近邻算法的应用案例和局限性。


怎么区分不同的类别?

例如区分橙子还是柚子?

31459ba3fced2f1a680a8c7990b01f76.png

fd6756bb2592550ac1201e3ca24aa0bb.png

如何判断这个水果是橙子还是柚子呢?一种办法是看它的邻居。来看看离它最近的三个邻居。

在这三个邻居中,橙子比柚子多,因此这个水果很可能是橙子。祝贺你,你刚才就是使用K最近邻(k-nearest neighbours, KNN)算法进行了分类!这个算法非常简单。

67fc729ce0eb3e6318af70d386021602.png

创建推荐系统

特征抽取

对特征进行量化处理,用数值来表示他们.

例如不同用户对不同类型的电影的评分,用于表现他们对电影的喜爱程度.

f825ef630ab8e9e7496595e67295d04a.png

那么此时Priyanka的特征表示为:

99c7e5a071ad4afaaf3ba73a9b2a792e.png

在数学家看来,这里计算的是五维(而不是二维)空间中的距离,但计算公式不变。

5c4530e32125ac0bdb3c7514ec8f71eb.png

这个距离公式很灵活,即便涉及很多个数字,依然可以使用它来计算距离。你可能会问,涉及5个数字时,距离意味着什么呢?这种距离指出了两组数字之间的相似程度。

357e4cef1afabf3fd6f3367b85a115f3.png

上述计算出来的数字2表示的意思是: Priyanka和Justin的距离。

当两个人计算出的欧氏距离越近,表明他们之间的越相似. 对于推荐电影而言,就可以推荐给他们相似的电影.


回归

假设你不仅要向Priyanka推荐电影,还要预测她将给这部电影打多少分。为此,先找出与她最近的5个人(这里k=5, k也可以选择其它数值,例如10或者200, 根据实际情况来选择)。

dc93a207566cf89a52a4f346e255d185.png

假设你要预测Priyanka会给电影Pitch Perfect打多少分。 它周边的5个人 Justin、 JC、 Joey、 Lance和Chris都给它打了多少分呢?

437bf8fd2be90e3ad19c68b2f4c560a1.png

你求这些人打的分的平均值,结果为4.2。这就是回归(regression)。

你将使用KNN来做两项基本工作——分类和回归:

分类就是编组(划分类别, 分组);

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

基于回归的一个小例子:

假设你在伯克利开个小小的面包店,每天都做新鲜面包,需要根据如下一组特征预测当天该烤多少条面包:

  1. 天气指数1~5(1表示天气很糟, 5表示天气非常好);

2. 是不是周末或节假日(周末或节假日为1,否则为0);

3. 有没有活动(1表示有, 0表示没有)。

如下的历史数据表明了在不同的日子里面售出的面包数量:

57a452a845c283167d9f6428daef4125.png

今天是周末,天气不错。根据这些数据,预测你今天能售出多少条面包呢?我们来使用KNN算法,其中的K为4。首先,找出与今天最接近的4个邻居。

距离如下,因此最近的邻居为A、 B、 D和E。

36ed2297652ebc6309315ce2b3dca5dd.png

将这些天售出的面包数平均,结果为218.75。这就是你今天要烤的面包数!

余弦相似度

前面计算两位用户的距离时,使用的都是距离公式。但是在实际工作中,经常使用余弦相似度(cosine similarity) 。

余弦相似度不计算两个矢量的距离,而比较它们的角度. 因此余弦相似度适合用于计算那些数值上有较大差距,但是实际上却又是非常相似的数据或者特征, 此时用角度来衡量他们的相似程度会更好.

挑选合适的特征

例如对于推荐电影而言,所谓合适的特征,就是:

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

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


机器学习简介

OCR

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

一般而言, OCR算法提取线段、点和曲线等特征。

23932ce322a3a95b2f12b74859dbd804.png

遇到新字符时,可从中提取同样的特征。

与前面的水果示例相比, OCR中的特征提取要复杂得多,但再复杂的技术也是基于KNN等简单理念的。这些理念也可用于语音识别和人脸识别。

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

创建垃圾邮件过滤器

垃圾邮件过滤器使用一种简单算法——朴素贝叶斯分类器(Naive Bayes classifier).

首先使用一些如下的数据进行训练:

ced3a4fa5154a16611f57e7ef0a345ab.png

假设你收到一封主题为“ collect your million dollars now!”的邮件,这是垃圾邮件吗?你可研究这个句子中的每个单词,看看它在垃圾邮件中出现的概率是多少。例如,使用这个非常简单的模型时,发现只有单词million在垃圾邮件中出现过。朴素贝叶斯分类器能计算出邮件为垃圾邮件的概率,其应用领域与KNN相似。


小结

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

 分类就是编组(分组)

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

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值