机器学习 ≠ 算法
当你打开一本教科书或大学教学大纲时,迎接你的往往是一份算法的杂货清单。它们都有听起来很华丽的名字,而且通常会占满整个目录。
这助长了一种误解,即掌握机器学习就是要记住几十种算法。

机器学习不只是一个算法列表。
然而,这根本就不是全貌。在实践中,应用机器学习不是关于算法。它远不止于此。
机器学习是一种解决问题的综合方法。
而单个算法只是拼图的一部分。拼图的其余部分是你如何以正确的方式应用它们。
是什么让机器学习如此特别? (ELI5)
机器学习是教计算机如何从数据中学习模式的做法,通常用于决策或预测。对于真正的机器学习,计算机必须能够学习它没有明确编程的模式来识别。
ELI5:好奇的孩子
尽管听起来很酷、很神秘,但机器学习只是反映了人类自然学习的方式。这里有一个例子,说明我们小时候是如何 "机器学习 "的。

哦,一根蜡烛!
想象一下,一个孩子在家里,在客厅里玩耍。突然,他第一次看到了蜡烛!这激起了他的好奇心。这激起了他的好奇心,他小心翼翼地蹒跚着走过去。
- 由于他不了解情况,他将手伸向了蜡烛的火焰。
- "哎哟!"他大叫一声,一边把手拽了回来。
- "嗯...那红色和明亮那东西真的很疼!"

感谢机器学习
两天后,孩子正在厨房里玩。突然,他有史以来第一次看到了炉灶!这让他感到非常惊讶。他再次小心翼翼地蹒跚着走过去。
- 他又开始好奇了,他想把他的手伸过去。
- 突然间,他注意到,那是又红又亮!
- "啊...... "他心想,"今天不行!"
- 他记得那是又红又亮意味着疼痛,于是他忽略了炉顶。
说白了,这只是机器学习,因为孩子从蜡烛上学会了模式。他学会了"红色和明亮意味着痛苦 "的模式。
另一方面,如果他只是因为父母的警告而忽略了炉灶,那就是 "显式编程 "而不是机器学习。
关键术语
在数据科学的起步阶段,最好是专注于发展实际的直觉,而不是潜心研究技术性问题(你可以在以后重新审视)。因此,我们的术语要清晰简洁,这一点至关重要。
在进一步讨论之前,让我们先确保我们有一个共同的语言来讨论机器学习的工作流程。
- 模型--从数据中学习的一组模式。
- 算法--用于训练模型的特定ML过程。
- 训练数据--算法从中学习模型的数据集。
- 测试数据--用于可靠地评估模型性能的新数据集。
- 特征-- 用于训练模型的数据集中的变量(列)。
- 目标变量--你试图预测的一个特定变量。
- 观测点--数据集中的数据点(行)。
例子
例如,假设你有一个150名小学生的数据集,你希望根据他们的年龄、性别和体重来预测他们的身高。

以下是你如何描述这个问题的。
- 你有150个观察值
- 1个目标变量(身高)
- 3个特征(年龄、性别、体重)
- 然后你可能会把你的数据集分成两个子集。
- 一组120个用于训练几个模型(训练集)。
- 30个用于挑选最佳模型的集合(测试集)。
顺便说一下,我们将解释为什么单独的训练集和测试集在模型训练中是超级重要的。
机器学习的任务
学术上的机器学习通常侧重于分析单个算法。然而,在应用机器学习中,你应该首先为工作挑选合适的机器学习任务。
- 一个任务是你的算法的一个具体目标。
- 只要你选择了正确的任务,算法就可以被换来换去。
- 事实上,你应该总是尝试多种算法 ,因为你很可能不知道哪种算法对你的数据集表现最好。
最常见的两类任务是监督学习和无监督学习。(还有其他的任务,但让我们从最基本的开始吧)。
有监督的学习
监督学习包括"标记 "数据的任务(即你有一个目标变量)。在实践中,它经常被用作预测模型的高级形式。
对于监督学习来说,每个观察都必须被贴上 "正确答案 "的标签。只有这样,你才能建立一个预测模型,因为你必须在训练算法时告诉它什么是 "正确 "的(因此,"监督 "它)。
- 回归是对连续目标变量进行建模的任务。
- 分类是为分类(又称 "类")目标变量建模的任务。

无监督学习
无监督学习包括"无标签 "数据的任务(即你没有目标变量)。在实践中,它经常被用作自动数据分析 或自动信号提取的一种形式。
无标签数据没有预先确定的 "正确答案"。 相反,你会让算法直接从数据中学习模式(没有 "监督")。
- 聚类 是最常见的无监督学习任务,它是为了在你的数据中寻找群体。

有效机器学习的要素
即使有不同类型的ML任务(以及每种任务的许多不同算法),成功的关键因素总是相同的。为了持续建立有效的ML模型,以获得伟大的现实世界的结果,你需要以下三个支柱。

#1:一个熟练的厨师(人类的指导)
首先,尽管我们在 "教计算机自己学习",但人类的指导起着巨大的作用。数据科学家需要在这一过程中做出几十个决定。
例如,你需要多少数据?数据中是否有任何致命的缺陷?什么是适合工作的ML任务?你如何定义成功?这些都是你作为人类 "操作员 "需要做出的关键决定。

#2:新鲜的成分(干净、相关的数据)
第二个基本要素是你的数据的质量。无论你使用哪种算法,垃圾进=垃圾出。这是所有专业的数据科学家都能很快掌握的。
这就是为什么数据科学家把大部分时间花在理解数据、清理数据和设计新功能上。这不是工作中 "最性感 "的部分,但它最终会在模型性能方面发挥最大作用。

#3:不要煮过头(避免过度拟合)
机器学习中最危险的陷阱之一是过度拟合。过度拟合的模型已经*"记住 "了训练集中的噪音*,而不是学习真正的基本模式。
一个对冲基金中的过拟合模型可能会造成数百万美元的损失。在医院里,一个过度拟合的模型可能会导致成千上万的生命损失。对于大多数应用来说,赌注不会那么高,但过度拟合仍然是你必须避免的最大错误。
在《模型训练》中,我们将教你通过(A)选择正确的算法和(B)正确调整算法来防止过度拟合的策略。你还可以通过阅读 "偏差-变异权衡"来了解更多信息。
应用机器学习的工作流程
说完了所有的基础知识和术语,现在是时候谈谈机器学习的工作流程了。记住,作为数据科学家,我们希望有一个一致的过程来获得伟大的结果。这就是机器学习工作流程的意义所在。
有五个核心步骤。
- 探索性分析--首先,"了解 "数据。这一步应该是快速、高效、果断的。
- 数据清理--然后,清理你的数据以避免许多常见的陷阱。 更好的数据胜过更高级的算法。
- 特征工程--接下来,通过创建新的特征,帮助你的算法 "专注 "于重要的东西。
- 算法选择--选择最好的、最合适的算法,不要浪费你的时间。
- 模型训练--最后,训练你的模型。一旦你完成了前四个步骤,这一步就非常公式化了。

当然,也有其他情况下的步骤。
- 项目范围--有时你需要绘制项目的路线图并预测数据需求。
- 数据处理--你可能还需要将你的数据集重组为一个算法可以处理的格式。
- 预处理--先对你的特征进行转换,通常可以进一步提高性能。
- 组合--你可以通过组合多个模型来挤压出更多的性能。
对于初学者,我们建议首先关注这五个核心步骤。这些是使用ML训练一个有效模型的不可商量的步骤。一旦你理解了核心的机器学习工作流程,其他的步骤就很容易上手。