承接昨天的人工智能项目十条建议-理论篇,今天我们来说说人工智能项目的 10 条指导原则。
在制定人工智能项目方案时,确定构建模型的目标至关重要,但这种理解只能提供成功的解决方案。在时真正按照完善的建议交付,人工智能项目团队必须在执行项目时遵循最佳实施路线。为了帮助能按照正确的路径执行,对之前提出的十条建议,现在一起探讨一下执行路径
1. 了解您的问题
解决任何问题的最基本部分是确切地知道你正在解决什么问题。确保你了解你要预测的内容、任何限制以及该项目最终目的是什么。尽早提出问题,并与同行、业务专家和最终用户验证你的理解。如果你发现答案与你的理解一致,那么你就知道你是走在正确的道路上。
2. 了解您的数据
通过了解你的数据的含义,你就能够了解哪种模型运行良好以及使用哪些功能。数据背后的问题将影响哪个模型最成功,计算时间将影响项目成本。通过使用和创建有意义的功能,你可以模仿或改进人工决策。了解每个字段的含义对问题很重要,尤其是在受监管的行业中,数据可能需要匿名化,因此不太清楚。如果你不清楚某个功能的含义,请咨询相关业务专家。
3. 拆分OR清洗您的数据
你的模型将如何处理看不见的数据?如果它不能泛化到新数据,那么它在给定数据上的表现并不是最重要的。我们在训练时不能让你的模型看到部分数据,你可以验证它在未知情况下的表现如何。这种方法对于选择正确的模型架构和调整参数以获得最佳性能是至关重要的。
对于监督学习问题,你需要将数据分成两部分或三部分。
训练数据——模型从中学习的数据——通常是随机选择的原始数据的 75-80%。
测试数据——你评估模型的数据——是剩余的数据。
根据你正在构建的模型类型,你可能还需要第三个称为验证集的保留数据,用于比较已根据测试数据调整的多个监督学习模型。在这种情况下,你需要将非训练数据拆分为两个数据集,即测试和验证。你想使用测试数据比较同一模型的迭代,并使用验证数据比较不同模型的最终版本。
在 Python 中,正确拆分数据的最简单的方法就是使用 Scikit-learn 的 train_test_split 函数。
4. 不要泄露测试数据
重要的是不要将测试数据中的任何信息输入到你的模型中。这可以对整个数据集的训练产生负面影响,也可以像在拆分之前执行转换(例如缩放)一样微妙。例如,如果你在拆分之前对数据进行规范化,则模型正在获取有关测试数据集的信息,因为全局最小值或最大值可能在保留的数据中。
5.使用正确的评估指标
由于每个问题都是不同的,因此必须根据上下文选择适当的评估方法。最幼稚—也可能是最危险的——分类指标的准确性。考虑检测癌症的问题。如果我们想要一个相当准确的模型,我们总是预测“不是癌症”,因为超过 99% 的时间可以验证我们都是正确的。然而,这不是一个非常有用的模型,我们实际上想要检测癌症。注意考虑在分类和回归问题中使用哪种评估指标。
6.保持简单
在处理问题时,重要的是为工作选择正确的解决方案,而不是最复杂的模型。管理层、客户,甚至你可能都想使用“最新最好的”。你需要使用最简单(非最先进)的模型来满足你的需求,即奥卡姆剃刀原理。这不仅会提供更多可见性并缩短培训时间,而且实际上可以提高性能。简而言之,不要用火箭筒射击苍蝇或试图用苍蝇拍杀死哥斯拉。
7. 不要过拟合(或欠拟合)你的模型
过度拟合,也称为方差,会导致模型在未见过的数据上表现不佳。该模型只是简单地记忆训练数据。欠拟合,也称为偏差,是给模型提供的信息太少,无法学习问题的正确表示。平衡这两者——通常被称为“偏差-方差权衡”——是人工智能过程的重要组成部分,不同的问题需要不同的平衡。
我们以一个简单的图像分类器为例。它的任务是对图像中是否有狗进行分类。如果你过拟合此模型,它将无法将图像识别为狗,除非它以前看过该确切图像。如果你对模型进行欠拟合,即使它以前看过该特定图像,它也可能无法将图像识别为狗。
8. 尝试不同的模型架构
大多数时候,为一个问题考虑不同的模型架构是有益的。对一个问题最有效的方法,可能对另一个问题不是很好。尝试混合使用简单和复杂的算法。例如,如果执行分类模型,请尝试像随机森林一样简单和像神经网络一样复杂的事情。有趣的是,极端梯度提升 (XGBoost) 通常远远优于神经网络分类器。一个简单的问题通常最好用一个简单的模型来解决。
9.调整你的超参数
超参数是模型计算中使用的值。例如,决策树的一个超参数是树的深度,即在决定答案之前它会问多少个问题。模型的默认超参数是那些平均提供最佳性能的超参数。但是你的模型不太可能正好落在那个最佳位置。如果选择不同的参数,你的模型就可以表现得更好。调整超参数最常用的方法是网格搜索、随机搜索和贝叶斯优化搜索,当然还有许多其他更高级的技术。
10. 正确比较模型
机器学习的最终目标是开发一个泛化良好的模型。这就是为什么正确比较和选择最佳模型如此重要的原因。如上所述,你需要使用与训练超参数进行评估时使用不同的保持集。此外,你还需要使用适当的统计测试来评估结果。
既然你已经掌握了执行人工智能项目的指导原则,请在你接下来的人工智能项目中尝试一下。我很想知道这些建议是否帮助了你,如果这些建议对你有帮助。请在下面的评论或私信添加你自己的意见!