第一章 为什么我们对机器学习感兴趣?(七)
七、学习vs.编程
要在计算机上解决问题,我们需要算法。算法是将输入转换为输出的一系列指令。例如,你可以设计排序算法。数字的集合是输入,其有序列表是输出。对于同一个任务,可能存在多种算法,我们可能会有兴趣找出最高效的那个算法,该算法需要的指令数最少或内存最少,或两者都最少。
然而,对于某些问题,我们没有算法。预测客户行为就是这样一个问题,另一个问题是区分垃圾邮件和正常邮件。我们知道输入是:一个电子邮件文档,最简单的情况下是一个文本邮件。我们知道输出应该是:输出是/否以指示该邮件是否是垃圾邮件。但是我们不知道如何将输入转换成输出。什么邮件会被认定为垃圾邮件随着时间的推移而改变,随着个体的不同而不同。
我们对知识方面的缺乏,可以用数据来弥补。我们可以轻易地编译上千封邮件,我们知道其中有些邮件是垃圾邮件,有些邮件却不是垃圾邮件,我们想要的是从这个样本中“学习”构成垃圾邮件的内容。换句话说,就是我们希望计算机(机器)能够自动为该任务提取出算法。我们没有必要学习排序数字(这方面我们已经有算法),但是很多的应用程序没有算法却有大量的数据。