Press "Enter" to skip to content

揭开选择完美机器学习算法的秘密!

在解决数据科学问题时,您需要做出的关键决策之一是选择使用哪种机器学习算法。

有成百上千种机器学习算法可供选择,每种算法都有其优点和缺点。某些算法在特定类型的问题或特定数据集上的表现可能优于其他算法。

“没有免费午餐”(NFL)定理指出,没有一种算法适用于每个问题,换句话说,当算法的性能在所有可能的问题上进行平均时,所有算法的性能都是相同的。

揭开选择完美机器学习算法的秘密! 四海 第1张

在本文中,我们将讨论在选择解决方案模型和比较不同机器学习算法时应考虑的主要要点。

关键算法方面

以下列表包含在考虑特定机器学习算法时可能会问自己的10个问题:

  1. 该算法能解决哪些类型的问题?该算法只能解决回归或分类问题,还是两者都能解决?它能处理多类/多标签问题还是仅能处理二元分类问题?
  2. 该算法对数据集有什么样的假设?例如,某些算法假设数据是线性可分的(例如感知机或线性支持向量机),而其他算法则假设数据服从正态分布(例如高斯混合模型)。
  3. 该算法的性能有什么保证?例如,如果该算法试图解决一个优化问题(如逻辑回归或神经网络),它能保证找到全局最优解还是仅能找到局部最优解?
  4. 有效训练模型需要多少数据?与其他算法相比,深度神经网络等某些算法更能充分利用数据。
  5. 该算法是否容易过拟合?如果是,该算法是否提供应对过拟合的方法?
  6. 该算法在训练和预测时的运行时间和内存需求如何?
  7. 为该算法准备数据需要进行哪些数据预处理步骤?
  8. 该算法有多少超参数?具有许多超参数的算法需要更多时间进行训练和调整。
  9. 该算法的结果是否容易解释?在许多问题领域(如医学诊断)中,我们希望能够用人类的语言解释模型的预测结果。某些模型可以很容易地可视化(如决策树),而其他模型则更像黑盒(如神经网络)。
  10. 该算法是否支持在线(增量)学习,即是否可以在不从头开始重新构建模型的情况下对其进行额外的样本训练?

算法比较示例

例如,让我们以两种最流行的算法为例:决策树和神经网络,并根据上述标准进行比较。

决策树

  1. 决策树可以处理分类和回归问题。它们还可以轻松处理多类和多标签问题。
  2. 决策树算法对数据集没有任何特定的假设。
  3. 决策树是使用贪心算法构建的,不能保证找到最优树(即最小化分类所有训练样本所需的测试次数的树)。然而,如果我们保持扩展其节点直到所有叶节点中的样本属于同一类别,决策树可以在训练集上实现100%的准确率。这样的树通常不是好的预测器,因为它们过度拟合训练集中的噪声。
  4. 决策树在小型或VoAGI大小的数据集上表现良好。
  5. 决策树很容易过拟合。然而,我们可以通过树剪枝来减少过拟合。我们还可以使用随机森林等集成方法来组合多个决策树的输出。这些方法不易过拟合。
  6. 构建决策树的时间复杂度为O(n²p),其中n是训练样本数,p是特征数。决策树的预测时间取决于树的高度,通常对数关系于n,因为大多数决策树都相当平衡。
  7. 决策树不需要任何数据预处理。它们可以无缝处理不同类型的特征,包括数值和分类特征。它们也不需要对数据进行归一化处理。
  8. 决策树有几个需要调整的关键超参数,特别是如果使用剪枝,例如树的最大深度以及用于决定如何分割节点的不纯度度量。
  9. 决策树简单易懂,我们可以很容易地可视化它们(除非树非常大)。
  10. 决策树不能很容易地修改以考虑新的训练样本,因为数据集中的细微变化可能导致树的拓扑结构发生大的变化。

 

神经网络

 

  1. 神经网络是存在的最通用和灵活的机器学习模型之一。它们可以解决几乎所有类型的问题,包括分类、回归、时间序列分析、自动生成内容等。
  2. 神经网络对数据集没有假设,但数据需要进行归一化处理。
  3. 神经网络使用梯度下降进行训练。因此,它们只能找到局部最优解。然而,有各种技术可以用来避免陷入局部最小值,例如动量和自适应学习率。
  4. 深度神经网络需要大量的数据进行训练,数量级为数百万样本点。一般来说,网络越大(层数和神经元数越多),我们需要更多的数据来训练它。
  5. 过大的网络可能会记住所有的训练样本,而无法很好地进行泛化。对于许多问题,你可以从一个小网络开始(例如,只有一两个隐藏层),然后逐渐增加其大小,直到开始过拟合训练集。你还可以通过添加正则化来处理过拟合问题。
  6. 神经网络的训练时间取决于许多因素(网络的大小、训练所需的梯度下降迭代次数等)。然而,预测时间非常快,因为我们只需要对网络进行一次前向传播即可获得标签。
  7. 神经网络要求所有特征都是数值型且归一化的。
  8. 神经网络有很多需要调整的超参数,例如层数、每层的神经元数、使用哪种激活函数、学习率等。
  9. 神经网络的预测很难解释,因为它们基于大量神经元的计算,每个神经元对最终预测只有很小的贡献。
  10. 神经网络可以轻松适应包括额外训练样本的情况,因为它们使用增量学习算法(随机梯度下降)。

 

时间复杂度

 

下表比较了一些流行算法的训练和预测时间(n为训练样本数量,p为特征数量)。

  揭开选择完美机器学习算法的秘密! 四海 第2张  

Kaggle竞赛中最成功的算法

 

根据2016年的一项调查,Kaggle竞赛的获奖者最常用的算法是梯度提升算法(XGBoost)和神经网络(参见这篇文章)。

在2015年的29位Kaggle竞赛获奖者中,有8人使用了XGBoost,9人使用了深度神经网络,11人使用了两者的集成模型。

XGBoost主要用于处理结构化数据(例如关系表),而神经网络在处理非结构化问题(例如图像、语音或文本问题)方面更成功。

看看现在的情况是否仍然如此,或者趋势是否有所改变会很有趣(有人愿意接受挑战吗?)

感谢阅读!

    鲁伊·叶胡斯亚博士是波士顿东北大学的教授,负责数据科学硕士项目的教学工作。他在多机器人系统和强化学习方面的研究成果已发表在人工智能领域的顶级期刊和会议上。他还是VoAGI社交平台上的顶级作者,经常发表有关数据科学和机器学习的文章。

  原文。经过许可重新发布。  

Leave a Reply

Your email address will not be published. Required fields are marked *