如何选择机器学习算法

如何选择机器学习算法

如果您知道要使用哪种算法或算法配置,

你需不需要使用机器学习?
有没有最佳的机器学习算法或算法参数?。
我甚至每天都会看到这些问题:

哪种机器学习算法最好?
机器学习算法和问题之间的映射是什么?
机器学习算法的最佳参数是什么?
这些问题有一个模式。
您通常不会事先知道这些问题的答案。 你必须通过实证研究来发现它。
有一些广泛的启发式回答可以回答这些问题,但即使这些问题可能会让你失望,如果你想从算法或问题中获得最大收益。

在这篇文章中,我想鼓励你摆脱这种思维方式,并采取一种数据驱动的方法,这种方法会随着你接近机器学习而发生改变。

最佳机器学习算法

一些算法比其他算法具有更多的“权力”。 它们非参数化或高度灵活和适应性强,或高度自我调整或以上所有。
通常情况下,这种能力的实现难度很大,需要非常大的数据集,有限的可扩展性或可能导致过度拟合的大量系数。
随着更大的数据集的出现,人们重新关注更简单的方法,这些方法的规模和表现都很好。
哪个算法最好,你应该总是试着花费大量时间学习?

我可以抛出一些名字,但最明智的答案是“无”和“全部”。


没有最好的机器学习算法


您无法事先知道哪种算法最适合您的问题。
再次阅读上面的行。 冥想它。冥想它。

你可以应用你最喜欢的算法。
您可以应用书或纸上推荐的算法。
您现在可以应用赢得大多数Kaggle比赛的算法。
您可以将最适合您的测试平台,基础架构,数据库或其他方法应用于该算法。
这些都是偏见。


他们认为节省时间是捷径。 实际上,有些可能是非常有用的捷径,但是哪些呢?

根据定义,偏见会限制您可以实现的解决方案,您可以实现的准确性以及最终的影响。


算法映射的问题


存在一般问题类别,例如分类和回归的监督问题,以及像流形学习和聚类这样的无监督问题。

在计算机视觉,自然语言处理和语音处理等机器学习的子领域中存在更多这些问题的具体实例。 我们也可以换个角度,更抽象地考虑所有这些问题,作为函数逼近和函数优化的例子。

您可以将算法映射到各种问题,例如,有算法可以处理监督回归问题和监督分类问题,以及这两类问题。

您也可以构建算法目录,这对启发您尝试使用哪种算法可能很有用。

您可以针对某个问题比赛算法并报告结果。 有时这被称为烘烤,并且在一些会议记录中很受欢迎,用于呈现新的算法。

算法结果的有限可转移性


通常,竞速算法是反智力的。它很少科学严谨(苹果对苹果)。


赛车算法的一个关键问题是,你无法轻易将调查结果从一个问题转移到另一个问题。如果您认为这个说法是真实的,那么在论文和博客中阅读算法竞赛并不会告诉您哪种算法可以解决您的问题。


如果算法A杀死问题X上的算法B,那么在问题Y上告诉你关于算法A和B的是什么?您必须努力解决问题X和Y.它们是否具有被研究中的算法利用的相同或相似的属性(属性,属性分布,功能形式)?这是一些艰苦的工作。


对于何时一台机器学习算法比另一台机器学习算法效果更好,我们没有细致的了解。


最佳算法参数


机器学习算法是参数化的,以便您可以针对您的问题量身定制其行为和结果。


问题在于,“如何”剪裁很少(如果有的话)解释。通常情况下,即使算法开发者本身也很难理解。


通常,随机元素的机器学习算法是复杂的系统,必须像这样研究。第一个顺序 - 参数对复杂系统有什么影响可以描述。如果是这样,你可能已经有一些关于如何将算法配置为系统的启发式。


这是第二顺序,它对你的结果会有什么影响,这是未知的。有时候你可以谈论参数对算法作为一个系统的影响,以及它如何转化为问题类,通常不会。


没有最佳算法参数


新算法配置集本质上是新的算法实例,可以让您挑战您的问题(尽管它们可以实现的结果相对受限或相似)。


您无法事先知道您问题的最佳算法参数。


您可以使用开创性论文中使用的参数。
您可以使用书中的参数。
你可以使用“我是怎么做的”kaggle post中列出的参数。
好的经验法则。对?也许,也许不是。


数据驱动的方法


我们不需要陷入绝望。我们成为科学家。


对于算法选择和算法参数选择,您有偏见,可以做出捷径决策。我们认为,他们在很多情况下都能很好地为您服务。


我希望你对此提出挑战,考虑放弃启发式算法和最佳实践,并采用数据驱动的方法来选择算法。


而不是选择你最喜欢的算法,试试10或20个算法。


减少那些表现出更好的表现,健壮性,速度或任何你最感兴趣的问题的迹象。


不是选择常用参数,而是网格搜索数十,数百或数千个参数组合。


成为客观科学家,留下轶事并研究复杂的学习系统和来自问题领域的数据观察的交集。


数据驱动的行动方法


这是一个强大的方法,需要较少的前期知识,但需要更多的后端计算和实验。


因此,您很可能需要使用较小的数据集样本,以便快速获得结果。你会想要一个你可以完全相信的测试装备。


附注:您如何完全信任您的测试设备?


您可以通过以数据驱动的方式选择测试选项来开发信任,从而让您确信所选配置的可靠性。估计方法的类型(split,boosting,k-fold交叉验证等)及其配置(k的大小等)。


快速稳健的结果


你得到很好的结果,速度很快。


如果随机森林是你最喜欢的算法,那么你可能花上几天或几周的时间来煞费苦心地从算法中获得最大的问题,这可能不适合首先使用的方法。采用数据驱动的方法,您可以尽早打折(相对)表现不佳的表演者。你可以快速失败。


它需要纪律,以避免偏见和偏爱的算法和配置。获得好的和可靠的结果是很困难的。


结果是,你不再关心算法炒作,它只是另一种包含在你的现场检查套件中的方法。您不再担心由于不使用算法X或Y或配置A或B(害怕丢失)而错过了它,而是将它们放在混合中。


利用自动化


数据驱动的方法是一个搜索问题。您可以利用自动化。


在开始之前,您可以编写可重复使用的脚本来搜索最可靠的问题测试工具。没有更多的临时猜测。


您可以编写可重复使用的脚本,在各种库和实现中自动尝试10,20,100个算法。没有更喜欢的算法或库。


不同算法之间的界限消失了。一个新的参数

猜你喜欢

转载自blog.csdn.net/qq_37928340/article/details/80763841