《Arduino家居安全系统构建实战》——2.8 我们学到了什么?

本节书摘来异步社区《机器学习项目开发实战》一书中的第2章,第2.8节,作者:【美】Mathias Brandewinder(马蒂亚斯·布兰德温德尔),更多章节内容可以访问云栖社区“异步社区”公众号查看

2.8 我们学到了什么?

我敢肯定,用这个模型还可以做得更多,毕竟,我们距离完美还有1.7%!但是,我将把这个问题留给读者作为兴趣练习,而将篇幅留给本章关键点的回顾。

首先,我们讨论了贝叶斯定理和独立性的概念。我觉得这一成果特别有趣,原因至少有两个。首先,贝叶斯定理的通用公式相当简单。其次,它很强大:贝叶斯定理提供了描述和量化两部分不完善信息之间关系的通用框架。它本身就是统计学和机器学习的一个关键成果,因为这两个学科都试图从不完整的样本中得出结论,找出数据之间的模式。也就是说,找出不独立的数据并加以利用。

当然,简单贝叶斯分类器本身在贝叶斯定理应用中微不足道:我们在文本信息的工作方式上做了一些简化的假设,以便使数学方法可行,只是为了展示应用贝叶斯定理的结果。文本标记化的过程可能比分类器本身更有趣。机器学习算法通常需要一组特征,原始的文本块并不能很好地适应这些模式。通过将文本分解为标志,识别和计算出现在一个文档中的单词数量,我们就能将文本转换为更方便的结构。

最后,我们花费很多时间改进基本模型,通过提取新特征加以完善。关键的要点是,我们始终使用相当简单的算法,但是仅仅花费时间理解数据、使用所得到的知识稍作重整,就能将模型的预测能力从中等提高到很好的水平。决定使用哪一个算法无疑是机器学习的重要部分之一,但是构建一个好的模型通常不是寻找唯一算法、魔法般地解决问题,而更多的是凭借对问题域的更深入理解,使用这些知识提取更好的特征。

在这个特例中,出现了几个模式。首先,数据并不总是越多越好。有些特征包含许多信息,有些则不然。找出信息量大的特征、消除其余特征可以为模型提供携带信号较多、噪声较少、更容易利用的信息。然后,我们看到了两个相反的现象,最终使用了保持单词大小写的标记化程序。我们意识到,原来使用的特征过于粗糙,因此将它们分解为多个更具体的特征(例如,“FREE”和“free”)。相反,我们注意到有许多电话号码,将其聚合成单个之前不存在的首要特征,以便观察其作用。同样,了解问题域和数据绝对是很重要的:如果好的算法以错误的方式观察特征,也不会走得太远,对特征的小更改往往能将一个普通的模型转化为出色的模型。

上一篇:软件开发必修课:你该知道的GRASP职责分配模式


下一篇:基于PolorDB,LAMP以及开源的PbootCMS搭建门户网站