爱吧机器人网 » 技术 > 机器学习 > 正文

传统编程遇上机器学习会擦出怎样的火花

在这篇文章中,我们将开发一个使用树状数据结构和协同过滤的自动完成组件来为用户选择最佳的图书标题提供建议。值得注意的是,算法、数据结构和机器学习都在朝着最终的解决方案一起工作,完整的代码和工作应用程序与结果一起提供。
 
问题公式化
 
我们想要从高层次角度来构建一个自动完成的字段,所以当我们键入一些字符时,它建议从这些图书的标题开始。
 
从GUI的角度来看,需要的是一个TextField或者ComboBox,它显示了一些像findTitlesThatStartWith(chars [] ch)这样的服务提供的选项列表。幸运的是,在Swing(也是JavaScript或jQuery)中已经有了现有的GUI组件。对于这篇文章,构建GUI自动完成组件并不是关注的焦点,尽管构建它们可能是一个很大的挑战。
 
另一方面,实现findTitlesThatStartWith(chars [] ch)则更具吸引力,因为它提供了一个机会,可以从数据的角度优化向客户提供的内容。从特定字符开始可能会有一个长列表,所以我们只能返回有限数量的标题,这个短名单中包含的内容尽可能多地从用户的角度来理解。
 
这有一些选项:
 
按照一些标准(字母顺序)对列表进行排序,然后只返回前10位(或任何有意义的数字)
 
计算用户获得标题的次数,只显示前10个最高的标题
 
显示最受用户欢迎的10大标题
 
根据当前的用户偏好显示最感兴趣的前10名
 
一旦我们在高层次上表明什么样的服务将返回,就是时候研究如何在相当大的标题集合中搜索标题。
 
同样,这也有各种各样的选择:
 
我们搜索所有的列表/数组和每个标题,我们看看ut是否从这些字符开始:

\
 
如果N代表列表的大小,k是单词的长度,我们需要θ(N * k)时间来搜索。插入新标题需要一定的时间(θ(1)),虽然有添加新电影,但情况相当少。
 
由于这是一个搜索问题,HashTable可能是一个选项,因为它的访问和插入速度非常快(θ(1))。不幸的是,HashTables只能查找整个单词匹配,而不是匹配前缀(即以......开始的标题)。
 
同样,我们可以考虑一个平衡良好的二叉树。因为它给了我们θ(log(N),即所有标题的大小乘以搜索和插入的复杂度。同样,二叉树没有帮助,因为它们找不到前缀匹配而是精准匹配。
 
幸运的是,现有的数据结构已经准备好用于查找前缀匹配。关于这个数据结构的好处是,只要稍作修改,它就会给你提供搜索时间复杂度θ(k),其中k是前缀的长度。是的,有一个小问题:你可能需要更多的存储空间。
 
尝试
 
在本节中,我们将探讨试图如何在标题(单词)列表中搜索前缀匹配。一旦你理解了单词的插入方式,就相当容易理解:

\
接下来让我们看看如何搜索以“te”开头的标题:

\
你可能在想,没有那么快!事实上,复杂度是θ(k + M),其中k是前缀的长度,M是建议列表或最后一个节点匹配下的子树的大小(直接子节点保存在HashTable中,因此需要经常查找字符匹配)。 无论如何,我们需要遍历子树来收集建议的单词/标题 - 如果列出的结果很多,则会显著减慢算法的速度。
 
当然,它比θ(k * N)好,其中k是前缀的长度,N是所有列表的大小。但是,我们能做得更好吗? 那么,我们可以稍微增加节点来存储更多的信息,而不仅仅是字符,如下所示:

\
由于该节点已经具有子树包含的单词列表,所以该修改可以极大地帮助避免在最后一个匹配节点下的所有子树。下面看看现在搜索的结果:

\
最终变更
 
在算法准备好实施之前,还有一个小诀窍要做。标题通常是句子而不是一个单词。如果我们只搜索标题的开头部分,这将不是很有用,例如,很多标题以“这”开头。因此,如果用户搜索以其中一个词开头的标题,很可能会搜索不出来。
 
解决方案很简单!我们只是将每个单词分别插入到树中,并将标题的所有句子保存到节点建议列表中。现在,不再只提供单词建议,而是有一个句子列表。这样,我们可以搜索中间的单词,同时能够提出所有的标题句子。
 
推荐系统
 
我们只有极少数的建议,所以涉及到向用户在提出什么样的建议时,我认为最好的选择是展示与用户兴趣更贴近或更接近的东西。这促成推荐系统的形成。
 
推荐系统根据用户偏好和数据趋势提出建议信息。这些系统的主要优点是可以自动学习,更多地了解用户的喜好。基本上,更多的用户与系统交互的越多(即喜欢或点击特定的书籍或电影),系统将提出更多更好的建议(即更接近用户的兴趣)。
 
数据
 
感谢这个来源提供了足够的数据来构建一个有意义的算法。数据集相当大,约有271.000本书、110万的收视率和279,000用户。
 
应用
 
应用程序可以在没有任何Java知识的情况下下载和执行(尽管Java必须安装在你的计算机上,我们可以通过简单地执行RUN类来运行应用程序,或者如果你不想使用IDE打开它,只需运行mvn exec:java。
 
你可以通过对某些书籍进行评分来试用(请注意,如果书籍未先评分,则不会提出建议),然后在该字段中搜索自动填充建议。随意游玩(50个功能不需要太多时间来训练),并注意算法如何根据你的喜好进行调整。对于50种类型,给出预测评级的建议以及算法的误差(均方误差)将不会超过30秒。你还可以将评级数据的规模增加到1,149,000,但请注意培训过程的速度需要放缓。
 
该应用程序使用Swing作为GUI和Spark MLib构建协作过滤算法。运行后,屏幕显示如下:
 
\


上一篇:机器学习:看懂逻辑回归,实现用户分类
下一篇:Graphcore 研发出AI芯片让机器学习提速百倍
精选推荐
这些人型机器人是如此真实,你的肉眼几乎无法区分
这些人型机器人是如此真实,你的肉眼几乎无法区分

[2017-09-03]   我们生活在一个区分现实与幻想变得越来越困难的世界。由于机器人技术的进步,创造人工的人类正在逐渐接近完美的最终目标。我们现在看到的机器人不再只是一块发光二极管,......

机器人工程师具体都做什么?
机器人工程师具体都做什么?

[2017-12-08]  机器人工程师是幕后设计师,负责创建机器人和机器人系统,能够执行人类无法完成或不愿意完成的任务。 通过他们的创造,机器人工程师帮助工作更安全,更轻松,更高效,特别是......

机器人从工业走向家庭  库卡KUKA目标是引领中国市场
机器人从工业走向家庭 库卡KUKA目标是引领中国市场

[2017-12-08]  机器人正在改变着人们的生活方式,而库卡KUKA想要在中国这个大蛋糕中占有一块大份额,库卡公司正在引领市场...

南加州大学机器人学家:机器人更适合粗暴的爱
南加州大学机器人学家:机器人更适合粗暴的爱

[2019-11-07]  图片来自JOHN MADERE GETTY IMAGES打是疼骂是爱,当人类粗暴的将物体从机器人手中敲掉,看似残忍,实际上却能帮助机器人找到最好的握持物 ...

人工神经网络技术解码人类行为和想象时的大脑活动信号
人工神经网络技术解码人类行为和想象时的大脑活动信号

[2017-08-23]  为搜索引擎过滤信息,棋盘游戏对弈,识别图像 人工智能在某些任务中远远超过了人类智能。来自弗莱堡由神经科学家私人讲师Tonio Ball博士领导的几个杰出的BrainLinks-Bra......

MIT用深度学习处理3D点云数据 应用于无人汽车等领域
MIT用深度学习处理3D点云数据 应用于无人汽车等领域

[2019-10-23]  如果你见过自动驾驶汽车,也许会对车顶上那个一直在旋转的圆柱体感到好奇。这是一个雷达传感器,无人驾驶汽车依靠它在现实世界中进行导航。 ...

研究人员融合人类与AI的创造力 显著提高了深度学习的表现
研究人员融合人类与AI的创造力 显著提高了深度学习的表现

[2019-10-12]  由加拿大人工智能领域研究主席、滑铁卢大学系统设计工程教授Alexander Wong领导的一个团队开发了一种新型紧凑型神经网络家族,可以在智能 ...

苹果AI主管透露自动驾驶汽车项目关于机器学习方面的进展
苹果AI主管透露自动驾驶汽车项目关于机器学习方面的进展

[2017-12-11]  苹果隐秘的自动驾驶汽车项目多年来一直在转移焦点,但今年似乎正在加速。 4月份,公司获得了在加利福尼亚州进行自动驾驶汽车测试的许可证,而在6月份,苹果公司首席执行官库......

本周栏目热点

深度学习反向传播算法(BP)原理推导及代码实现

[2017-12-19]  分析了手写字数据集分类的原理,利用神经网络模型,编写了SGD算法的代码,分多个epochs,每个 epoch 又对 mini_batch 样本做多次迭代计算。这其中,非常重要的一个步骤,......

如何在机器学习项目中使用统计方法的示例

[2018-07-23]  事实上,机器学习预测建模项目必须通过统计学方法才能有效的进行。在本文中,我们将通过实例介绍一些在预测建模问题中起关键作用的统计学方法。...

[2017-08-28]  模拟退火(Simulated Annealing,简称SA)是一种通用概率算法,用来在一个大的搜寻空间内找寻命题的最优解。1、固体退火原理:将固体加温 ...

Machine Learning-感知器分类算法详解

[2018-05-31]  今天我们来讲解的内容是感知器分类算法,本文的结构如下:什么是感知器分类算法,在Python中实现感知器学习算法,在iris(鸢尾花)数据集上训练一个感知器模型,自适应线性神......

机器人是怎么深度学习的?

[2016-03-29]      一个人独处时,感觉有点孤单,怎么办?微软亚洲研究院推出的微软小冰,或许 ...