• 10-K最近邻算法


    本章内容:

    • 学习使用K最近邻算法创建分类系统
    • 学习特征抽取
    • 学习回归,即预测数值,如明天的股价或用户对某部电影对喜欢程度
    • 学习K最近邻算法的应用案例和局限性

    1.橙子还是柚子


    猜这个水果是柚子,还是橙子?
    如果又红又大,很可能是柚子;反之可能是橙子。
    如何判断这个水果是橙子,还是柚子?
    一种办法是看它的邻居。
    在这三个邻居中,橙子比柚子多,因此这个水果很可能是橙子。这就是K最近邻算法。

    2.创建推荐系统

    假设要为用户创建一个电影推荐系统。从本质上说,这类似于水果问题。
    将所有的用户都放入一个图表中。这些用户在图表中的位置取决于其喜好,因此喜好相似的用户距离较近。假设你要向张翠山推荐电影,可以找出6位与他最接近的用户。

    假设在电影的喜好方面,宋远桥、俞莲舟、俞岱岩、张松溪、殷梨亭、莫声谷都与张翠山差不多,因此它们喜欢的电影很可能张翠山也喜欢。
    有了这样的图表,创建推荐系统就将易如反掌:只要宋远桥喜欢的电影,就将其推荐给张翠山。
    问题:如何确定两位用户的相似度呢?

    2.1特征抽取

    在前面的水果示例中,你根据个头和颜色来比较水果,即比较的特征是个头和颜色。现在假设有三个水果,你可抽取它们的特征。
    再根据这些特征绘图。

    从上图可知,水果A和B比较像。下面来度量它们有多像。要计算两点的距离,可使用毕达哥拉斯公式(sqrt{(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2})}).
    例如A和B的距离如下:(sqrt{(2-2)^{2}+(2-1)^{2})}) = (sqrt{0+1}) = (sqrt{1}) = 1
    A和C的距离如下:(sqrt{(4-2)^{2}+(5-1)^{2})}) = (sqrt{4+16}) = (sqrt{20}) = 4.47

    在电影推荐系统中,需要将每位用户都转换为一组坐标,就像前面对水果所做的那样。在能够将用户放入图表后,就可以计算他们之间的距离了。
    用户注册时,要求它们指出对各种电影的喜欢程度。这样每位用户都将获得一组数字。如

    张翠山宋远桥张松溪
    喜剧片342
    动作片435
    生活片451
    恐怖片113
    爱情片451
    在数学家看来,这里计算的是五维(而不是二维)空间中的距离,但计算公式不变。 $sqrt{(a_{1}-a_{2})^{2}+(b_{1}-b_{2})^{2}+(c_{1}-c_{2})^{2}+(d_{1}-d_{2})^{2}+(e_{1}-e_{2})^{2}}$

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

    张翠山VS宋远桥:(sqrt{(3-4)^{2}+(4-3)^{2}+(4-5)^{2}+(1-1)^{2}+(4-5)^{2}}) = (sqrt{1+1+1+0+1}) = (sqrt{4}) =2
    张翠山VS张松溪:(sqrt{(3-2)^{2}+(4-5)^{2}+(4-1)^{2}+(1-3)^{2}+(4-1)^{2}}) = (sqrt{1+1+9+4+9}) = (sqrt{24}) =4.89
    上述距离表明,张翠山的喜好更趋近于宋远桥而不是张松溪。

    现在要向张翠山推荐电影将易于反掌:只要宋远桥喜欢的电影,就将其推荐给张翠山,反之亦然。这样就创建了一个电影推荐系统。
    系统会不断提醒张翠山:多给电影评分吧,评论的电影越多,给张翠山推荐的内容越准确。即评论的电影越多,系统就越能准确的判断张翠山与哪些用户相似。

    2.2回归

    假设你不仅要向张翠山推荐电影,还要预测她将给这部电影打多少分。为此,先找出与她最近的6个人。
    并非一定就是6个最近的邻居,也可选择2个,10个或者10000个。这就是算法名为K最近邻而不是6最近邻的原因
    假设你要预测张翠山会给电影廊桥遗梦打多少分。

    宋远桥俞莲舟俞岱岩张松溪殷梨亭
    54453
    这些人打算的分数平均值为4.2。这就是回归(regression)。你将使用KNN来做两项基本工作——分类和回归: * 分类就是编组 * 回归就是预测结果(如一个数字)

    回归很有用,如你开了个面包店,每天都做新鲜面包,需要根据如下一组特征预测当天该烤多少条面包:

    • 天气指数1~5(1表示天气很糟,5表示天气非常好)
    • 是不是周末或节假日(周末或节假日为1,否则为0)
    • 有没有活动(1表示有,0表示没有)

    还有一些历史数据,记录了在各种不同的日子里售出的面包数量。
    A:(5,1,0)=300
    B:(3,1,1) =225
    C:(1,1,0)=75
    D:(4,0,1)=200
    E:(4,0,0)=150
    F:(2,0,0)=50
    我们使用K最近邻算法(k-Nearest Neighbor,KNN),其中的K为4

    相似度当天(4,1,0)
    A(5,1,0)$sqrt{(4-5)^{2}+(1-1)^{2}+(0-0)^{2}} = sqrt{1+0+0} =1$
    B(3,1,1)$sqrt{(4-3)^{2}+(1-1)^{2}+(0-1)^{2}} = sqrt{1+0+1} =1.41$
    C(1,1,0)$sqrt{(4-1)^{2}+(1-1)^{2}+(0-0)^{2}} = sqrt{9+0+0} =3$
    D(4,0,1)$sqrt{(4-4)^{2}+(1-0)^{2}+(0-1)^{2}} = sqrt{0+1+1} =1.41$
    E(4,0,0)$sqrt{(4-4)^{2}+(1-0)^{2}+(0-0)^{2}} = sqrt{0+1+0} =1$
    F(2,0,0)$sqrt{(4-2)^{2}+(1-0)^{2}+(0-0)^{2}} = sqrt{4+1+0} =2.25$
    距离最近的为A、B、D、E,将这些天的面包数平均,结果为218.75。这就是今天要烤的面包数。 余弦相似度:前面计算两位用户的距离时,使用的都是距离公式。还有更合适的公式吗?在实际工作中,经常使用余弦相似度。假设有2位品味类似的用户,但其中一位打分时更保守。对于同一部电影,张三给了5星,李四只给了4星。如果你使用距离公式,这两位用户可能不是邻居,虽然他们的品味非常接近。 余弦相似度不计算两个矢量的距离,而比较它们的角度,因此更适合处理前面所说的情况。 ### 2.3挑选合适的特征 * 1.与要推荐的电影紧密相关的特征(给用户一些猫咪的图片打分,这种情况下,你找出的是对小猫图片的欣赏品味类似的用户,而与电影欣赏品味没有多大关系)。 * 2.不偏不倚的特征(例如,如果只让用户给喜剧片打分,就无法判断它们是否喜欢动作片)。

    在挑选合适的特征方面,没有放之四海而皆准的法则,你必须考虑到各种需要考虑的因素。

    3.机器学习简介

    3.1 OCR

    OCR是光学字符识别,这意味着你可拍摄印刷页面的照片,计算机将自动识别出其中的文字。Google使用OCR来实现图书数字化。
    例如如何快速自动识别出7这个数字?
    使用KNN:

    • 1.浏览大量的数字图像,将这些数字的特征提取出来。
    • 2.遇到新图像时,你提取该图像的特征,再找出它最近的邻居都是谁。

    这与前面判断水果是橙子,还是柚子是一样的。
    OCR算法提取线段、点和曲线等特征。遇到新字符时,可从中提取出同样的特征。

    与前面的水果示例相比,OCR中的特征提取要复杂的多,但再复杂的技术也是基于KNN等简单理念的。这些理念也可用于语音识别和人脸识别。你将照片上穿到Facebook时,它能够自动标出照片中的人物,这是机器学习在发挥作用。

    3.2创建垃圾邮件过滤器

    垃圾邮件过滤器使用一种简单算法——朴素贝叶斯分类器,首先需要使用一些数据对这个分类器进行训练。

    主题是不是垃圾邮件
    重置密码不是
    你中了一百万
    给我你的密码
    马云给你一百万
    生日快乐不是
    例如收到一封“百万大奖待领取”的邮件,这是垃圾邮件吗? 可以研究这个句子中的每个单词,看看它在垃圾邮件中出现的概率是多少。例如使用这个非常简单的模型时,发现只有词汇百万在垃圾邮件中出现过。朴素贝叶斯分类器能计算出邮件为垃圾邮件的概率,其应用领域与KNN相似。

    3.3 预测股票市场

    根据以往的数据来预测未来方面,没有万无一失的方法。未来很难预测,由于设计的变数太多,这几乎是不可能完成的任务。

    4.小结

    • KNN用于分类和回归,需要考虑最近的邻居
    • 分类就是编组
    • 回归就是预测结果
    • 特征抽取意味着将物品(如水果或用户)转换为一系列可比较的数字
    • 能否挑选合适的特征事关KNN算法的成败。
  • 相关阅读:
    分布式存储之GlusterFS
    应用中间件服务-weblogic
    生产环境tomcat升级新版本(tomcat漏洞修复)
    代码版本管理工具-gitlab
    链路追踪-skywalking
    去年前端校招面试的一些经验(阿里美团爱奇艺)
    mantis提交问题时报APPLICATION ERROR #27异常
    mantis无法上传附件,core/file_api.php: 1023异常
    centos7.2下安装mantis2.19.0
    linux常用命令
  • 原文地址:https://www.cnblogs.com/csj2018/p/12178049.html
Copyright © 2020-2023  润新知