在一种自顶向下的研究机器学习的方法中,理论应立足于何处?
在传统的机器学习教学方案中,理论首先需要足够广泛的数学背景才能理解。在我的机器学习教学方案中,我将从一开始就教你如何解决端到端的问题并做出成果。
那么,理论更适合在哪里出现呢?
在这篇文章中,当我们谈论机器学习中的“理论”时,您将会确切地明白我们正在说什么。提示:都是关于算法的。
您会发现,一旦您能熟练地解决问题,并得出结果,您会不由自主地深入学习,以便更好地理解结果和提交更好的结果。没有人能够阻止你。
最后,您将发现在标准数据集上进行机器学习时可以使用的5种技巧,以逐步增强对机器学习算法的理解。
对开发者来说,教他们如何学习机器学习是没什么用处的。
这种方式是自顶而下的教育。对您来说这没什么用的——如果您是仅想把机器学习作为工具来解决问题的开发人员,而不是想成为研究这个领域的研究人员。
传统学习方式要求您在学习算法理论之前学习线性代数,概率和统计等数学知识。如果您是研究算法的实现或讨论如何端到端地处理问题并提供可运行的,可靠的和准确的预测模型,这样来说的话,您是幸运的。
我在这里将会教您一个自顶而下的学习机器学习的方法。在这个方法中,我们将从1)学习一个系统化流程来处理端到端的问题,2)将流程映射到“最好的”机器学习工具和平台,然后3)在测试数据集上完成有针对性的实践。
您可以在“ 程序员的机器学习:从开发人员到机器学习从业人员的飞跃 ” 这篇文章中了解到更多关于自顶而下学习机器学习的方法。
那么理论应当在哪里融入这个过程呢?
如果要颠倒这个学习的流程,这种情况将在稍后讲到。但是当我们在使用测试数据集训练模型时,我们正在说着什么理论?以及您究竟该如何学习这个理论呢?
我创建了一个方便的且按照类型来组合的内含60多个算法的思维导图。
您可以下载它,打印出来并好好使用。
也可以享受来自电子邮件的迷你机器学习算法课程。
机器学习的领域中充斥着理论。
它是密集的,因为这领域有一个用数学来描述和解释概念的传统。
这是很有用的,因为数学描述可以非常简洁,并减少歧义。他们也可以利用所描述的环境中的技术(例如对过程的概率性理解)进行分析。
许多这些与数学无关紧要的技术常常与机器学习算法的相关描述捆绑在一起。对于一个仅仅想要对一种方法进行较为浅层理解然后能够配置和应用它的人来说,这种感觉让人难以开心起来。而且是如此的令人沮丧。
如果您没有能够解析和理解算法的描述的底子,这会让您很沮丧。此外会让人沮丧的正因为来自计算机科学这样的领域,算法总是被描述,而不同之处在于算法的描述是为了快速理解(例如桌面检查)还是应用。
例如,我们知道,在学习哈希表是什么以及如何使用哈希表时,我们几乎不需要知道在我们的日常工作中哈希函数究竟在干嘛。但是我们也能够知道什么是哈希函数,以及知道在哪里去了解更多关于哈希函数的具体细节以及如何编写自己的哈希函数。那为什么机器学习不能像这样应用呢?
学习机器学习中遇到的大部分“理论”都与机器学习算法有关。如果您去问其他任何的初学者,他们为什么会对理论感到沮丧,那么你将会知道,这与学习如何理解或使用特定的机器学习算法有关。
在这里,研究算法比创建预测模型的过程更广泛。它指的是和选择特征,设计新特征,转换数据和估计模型在不可见数据(例如交叉验证)上的准确性的算法过程。
所以,最后学习理论意味着学习机器学习算法。
我通常建议有针对性地练习众所周知的机器学习数据集。
因为众所周知的机器学习数据集,就会好像UCI机器学习库中的那些数据集一样易于使用。而且他们往往很小,所以他们不需要太多内存,因此也就可以在工作站上处理。他们也可以拿来进行很好的理解和研究,因此,您可以有一个比较的基准。
您可以在“ 用UCI机器学习库中的小型低消耗内存的数据库进行机器学习实践 ”文章中了解更多有关机器学习数据集实践的信息。
了解机器学习算法在这个过程的应用。原因在于当您追求获得标准机器学习算法的结果,将会遇到局限。你会想知道如何从给定的算法中获得更多的信息,或者知道如何更好地配置它,或者知道如何实际工作。
这种需要更多的知识和好奇心,而这些东西将促使您学习机器学习算法的理论。为了得到一个更好的结果,您将被迫将一些对算法的理解拼凑起来。
我们也看到了来自不同背景的年轻开发人员的相同效果,他们最终研究开源项目,教科书甚至研究论文的代码,以磨练他们的手艺。驱使他们这样去做的正是成为一个更好的,更有能力的程序员的需求。
如果您很好奇并且有想要成功的动力,您不能不去学习这个理论。
您的目标实践的一部分时间将用来钻研机器学习算法
届时,您可以使用一些技巧和模板来缩短流程。
在本节中,您将发现5种技巧,可以用来快速理解机器学习算法的理论。
当您刚开始学习的时候,你可能会被大量可用的算法所淹没。
即使现场尝试测试算法,你可能仍不能确定哪些算法将包含在你的混合算法中(提示,是多种多样的)。
跟踪您读到的算法是一个在你开始时就可以使用的很好的技巧。这些列表可以像算法的名称一样简单,也可以随着您的兴趣和好奇心的增加来增加复杂性。
您也可以捕获细节,如合适的问题类型(分类或回归),相关算法和分类的类(决策树,内核等)。当你看到新的算法的名字时,把它添加到你的列表中。当你开始一个新的问题,您可以尝试一些您以前从未使用过的算法。又或者在之前使用的算法旁边打勾等等。
控制列表中算法的名称可以提供强大的力量。这种看似可笑的简单策略可以帮助您摆脱压力。您的简单的算法列表可以为您节省大量时间和挫折,例如:
而您首先得创建算法列表,请打开一个电子表格并开始创建。
更多关于这个技巧的信息请参阅“ 通过创建机器学习算法的目标列表进行控制 ”这篇文章。
当你想了解更多关于某一个机器学习算法的知识时,您需要开始研究它。
而学习如何配置这个算法和如何让它生效应当是您会有兴趣研究算法的主要原因。
要记住,这研究不只是为了学术。一些简单的窍门可以在收集给定机器学习算法的信息方面给您很大帮助。
关键点是信息来源的多样性。以下是您可以参考的您正在研究的算法的信息的来源类型的简短列表。
您不必是博士,也不需要成为机器学习算法专家。
你可以节省你的时间,从你之前试图找出的集合了机器学习算法的资源中选择其中的一些。把重点放在你可以应用或者理解的实际细节上,然后将其余的抛开。
有关研究机器学习算法的更多信息,请参阅“ 如何研究机器学习算法 ”一文。
您会在研究中发现机器学习算法的描述往往是不完整的且不一致的。
而您可以使用的方法就是把您自己的迷你算法描述集合起来。这是另一个非常简单和非常强大的策略。
您可以设计一个标准算法描述模板,其中只包含那些对您充分利用算法(如启发式算法惯例,伪代码列表,参数范围和资源列表)的有用的细节。
然后,您可以在多个关键算法中使用相同的算法描述模板,并开始构建您自己的可以在未来的项目中参考的小算法百科全书。
以下是您可能会希望在自己的算法描述模板中使用的一些问题:
您将会惊讶于这些描述的有用性和实用性。例如,我曾用这种方法写了一本我知道几年以后照样可以参考的自然界启发式的算法描述书。
有关如何创建有效的算法描述模板的更多信息,请参阅“ 如何学习机器学习算法 ”一文。
有关使用标准算法描述模板描述的算法书的更多信息,请参阅“ 高级算法:自然编程的食谱 ”。
机器学习算法是复杂的系统,而有时他们在实际数据集上的行为能帮您最好地理解它们。
通过使用小型数据集设计机器学习算法的小型实验,您可以了解到算法是如何工作的,和它的局限性,以及如何通过可能转移到其他问题的异常结果的方式进行配置。
您可以使用一个简单的程序来研究机器学习算法,如下所示:
这是应用机器学习的真正令人兴奋的方面之一,通过您自己的简单研究,您可以得到令人惊讶和最先进的成果。
有关如何从这些算法的行为中学习算法的更多信息,请参阅“ 如何研究机器学习算法行为 ”一文。
您不能比完全实现一个机器学习算法还要熟悉它了。
在从零开始实现机器学习算法时,您将面临进入给定实现的无数微观决策。您可以决定是否用一些经验法则来把它们全部作为参数呈现给用户。
以下是您可以用来从头开始实现机器学习算法的可重复的过程。
从小处着手,建立信心。
例如,您从头开始选择作为您的第一个机器学习算法实现的3个算法是:
有关如何实现机器学习算法的更多信息,请参阅文章“ 如何实现机器学习算法 ”。
另见帖子:
机器学习不仅仅是为了数学精英准备的。您可以了解机器学习算法如何工作,以及如何在不深入多元统计的情况下充分利用机器学习算法。
您不需要擅长数学。
正如我们在上述技巧部分可以知道的,您可以从算法列表开始,并逐渐深入到算法研究,描述和算法行为中。
你可以用这些方法走得很远,而不会因为数学造成太大的影响。
你不需要成为一名学术型研究员。
研究不只是为了学术。任何人都可以阅读书籍和论文,并编撰自己对某个主题的理解,如特定的机器学习算法的描述。
而当您扮演“ 科学家 ” 的角色时,您将开始您自身的最大突破,并开始机器学习算法的实验,好像他们是需要研究的复杂系统一样。您会发现算法行为中的各种有趣的特性,即使那些甚至可能不会被记录下来。
选择上面列出的技巧之一,并开始你的行动。
我的意思是今天开始,现在开始。
不确定从哪里开始?
以下是您可以从哪里开始的5个好点子:
你有没有采取行动?喜欢这个帖子?在下面留言。