机器学习算法是复杂的系统,需要研究才能理解。
机器学习算法的静态描述是一个很好的起点,但不足以让人了解算法的行为方式。你需要看到算法实际运行。
通过对运行中的机器学习算法进行实验,你可以建立起对算法参数与在不同类型问题上可获得结果之间因果关系的直觉。
在这篇文章中,你将了解如何调查机器学习算法。你将学习一个简单的5步过程,你可以今天就使用它来设计并完成你的第一个机器学习算法实验。
你将发现机器学习实验并非只为学者而设,你也可以进行实验,并且实验是走向精通的必经之路,因为你将获得的经验性因果知识在其他任何地方都无法获得。
通过我的新书《掌握机器学习算法》来启动你的项目,书中包含分步教程和所有示例的Excel电子表格文件。

调查机器学习算法行为
图片由 美国陆军研发与工程司令部 提供,保留部分权利
什么是调查机器学习算法
你调查机器学习算法的目标是找到能导致在问题和问题类别中普遍适用的良好结果的行为。
你通过对算法行为进行系统研究来调查机器学习算法。这通过设计和执行受控实验来完成。
一旦你完成了一个实验,你就可以解释并呈现结果。这些结果让你对算法的改变、其行为以及你能获得的结果之间的因果关系有所了解。
获取您的免费算法思维导图

方便的机器学习算法思维导图样本。
我创建了一份方便的思维导图,其中包含60多种按类型组织的算法。
下载、打印并使用它。
还可以独家访问机器学习算法电子邮件迷你课程。
如何调查机器学习算法
在本节中,我们将介绍一个你可以用来调查机器学习算法的简单5步过程。
1. 选择一个算法
选择一个你对其有疑问的算法。
这可能是一个你正在认真用于某个问题的算法,或者是一个你在其他情境中表现良好,并可能希望将来使用的算法。
出于实验目的,使用现成的算法实现会很有帮助。这为你提供了一个基准,该基准很可能几乎没有错误。
自己实现算法是了解算法过程的好方法,但也可能为实验引入额外的变量,例如错误以及每个算法实现中必须做出的无数微观决策。
2. 确定一个问题
你必须有一个你正在寻求答案的研究问题。问题越具体,答案就越有用。
一些示例问题包括
- 在kNN中,增加k作为训练数据集大小的一部分,会有什么影响?
- 在支持向量机(SVM)中,选择不同的核函数对二分类问题有什么影响?
- 在二分类问题中,不同属性缩放对逻辑回归有什么影响?
- 在随机森林中,向训练数据集中添加随机属性对分类精度有什么影响?
设计你想要回答的关于算法的问题。考虑列出问题的五个变体,然后聚焦于最具体的一个。
3. 设计实验
从问题中选择构成你实验的元素。
例如,以上述问题为例:“在二分类问题中,不同属性缩放对逻辑回归有什么影响?”
你可以从这个问题中为实验设计挑选的元素有:
- 属性缩放方法。你可以包括归一化、标准化、将属性提升到某个幂次、取对数等方法。
- 逻辑回归。你想使用哪个逻辑回归实现。
- 二分类问题。具有数值属性的不同标准二分类问题。需要多个问题,有些属性都具有相同尺度(如电离层),有些属性具有不同尺度(如糖尿病)。
- 性能。需要一个模型性能分数,例如分类准确率。
花时间仔细选择问题中的元素,以最好地回答你的问题。
4. 执行实验并报告结果
完成你的实验。
如果算法是随机的,你可能需要重复多次实验运行,并取平均值和标准差。
如果你正在寻找不同实验运行(例如不同参数)之间的结果差异,你可能需要使用统计工具来表明差异是否具有统计学意义(例如学生t检验)。
R 和 scikit-learn/SciPy 等一些工具提供了完成这些类型实验的工具,但你需要将它们整合起来并编写实验脚本。其他工具如 Weka 将这些工具内置到图形用户界面中(参阅这篇关于在 Weka 中运行你的第一个实验的教程)。你使用的工具不如问题和实验设计的严谨性重要。
总结你的实验结果。你可能希望使用表格和图表。仅仅展示结果是不够的。它们只是数字。你必须将这些数字与你的问题联系起来,并通过你的实验设计来过滤它们的含义。
结果表明了你的研究问题什么?
戴上你的怀疑帽子。你可以对结果提出哪些漏洞或局限性。不要回避这部分。了解局限性与了解实验结果同样重要。
5. 重复
重复该过程。
继续调查你选择的算法。你甚至可能希望用不同的参数或不同的测试数据集重复相同的实验。你可能希望解决实验中的局限性。
不要止步于一个实验,开始建立知识库并培养对算法的直觉。
借助一些简单的工具、一些好的问题以及良好的严谨性和怀疑精神,你很快就能对算法的行为形成世界级的理解。
算法研究并非只为学术界
你可以调查机器学习算法的行为。
你不需要高学历,不需要受过研究方法训练,也不需要是学者。
对机器学习算法进行细致系统的调查对任何拥有计算机和浓厚兴趣的人都是开放的。事实上,如果你想掌握机器学习,你就必须习惯于对机器学习算法进行系统调查。这些知识根本不存在,你必须自己动手去经验性地收集它们。
你确实需要保持怀疑,并在谈论你的发现的适用性时谨慎。
你不需要有独特的问题。通过调查标准问题,例如一个参数对几个标准数据集的普遍影响,你将获得很多。你很可能会发现对常见最佳实践启发法的局限性或反驳点。
行动步骤
在这篇文章中,你了解了通过受控实验调查机器学习算法行为的重要性。你发现了一个简单的5步过程,可以用于设计和执行你的第一个机器学习算法实验。
付诸行动。使用你在这篇博文中学习到的过程,完成你的第一个机器学习实验。一旦你完成了一个,即使是一个非常小的实验,你也将拥有完成第二个以及更多实验的信心、工具和能力。
我很乐意听听你的第一个实验。留下评论,分享你的结果或你学到的东西。
你好,Jason,感谢这篇精彩的帖子。
这是深入理解机器学习算法并善加利用的好方法。
我想知道你是否可以提供一个详细的例子,说明如何调查机器学习算法的行为?
非常感谢!
谢谢。这是一个好主意。我需要找时间,但我会做的。
我认为一篇展示不同方法(LIME 等)和工具(yellowbrick 等)的帖子是很好的阐述主题。
必须回答的问题
1. 你如何知道模型正在运行/是正确的?
2. 你如何向他人展示?
3. 当模型可能不正确时(超出“知识”限制),你如何发出警报?
4. 你如何警报漂移?
5. 你如何向他人证明(例如在法庭上)?
引用
https://towardsdatascience.com/interpretability-in-machine-learning-70c30694a05f
http://interpretable.ml/
https://distill.pub/2018/building-blocks/
好问题。
你好 Jason,
对于机器学习初学者来说,这是一篇很棒的文章。
感谢分享。
谢谢!
感谢分享!????
很高兴它有帮助。