机器学习远远超出了 sklearn 中简略的 fit 和 predict 办法。
背景:
当初大家都习惯说掉包侠这个词,尤其是人工智能畛域。我的一个敌人就讥笑我,说:“你这么久学会了什么?只是几个模型,我一周就学会了。”那是他的原话。我只是对他微笑,并询问他学到了什么。他通知了几种机器学习算法的名称。我问他确切地学到了什么,而后得出了应用 Sklearn 的拟合(fit)和预测(predict)办法的显著回答,并简要概述了该算法的工作原理。
我脸上露出邪恶的笑容,我问他要如何获得最佳参数?模型如何学习最佳权重?当咱们有低提早要求时咱们该怎么办?只管这些问题并不简单,但他坐在那里静静地看着我的脸,我笑到了最初。
从故事中得出的论断是,机器学习远远超出了简略的拟合和预测办法。
咱们大多数人只是在 bi 站上观看了一些视频,并宣称咱们理解机器学习,只是很快就意识到了咱们的谬误。对于所有自学的人来说,请记住,有成千上万的人像您和我一样学习机器学习 / 数据迷信 。请记住,咱们将与领有硕士 / 博士学位的人竞争。在与数据迷信相干的畛域。因而,要与他们竞争,咱们必须在根底方面 真正扎实。
围绕机器学习的话题很多,新的课程每天都在涌现,目前有比理论工作更多的课程。领有如此宏大的资源,就呈现了抉择正确路线的难题。
坦率地说,这些课程大多数都是平庸的(比方某些营销号中的广告),因而不会深入探讨。嗯,那里没有好课程,然而每门课程都提供不同的课程。很少波及数学局部,很少擅长于写代码局部等等。因而,明天我不会特地提及任何课程。我将分享我在故事中向同一个敌人提出并倡议的办法。我置信它也能够帮忙您进行数据迷信之旅。
在咱们进入算法局部之前,让我告诉您在机器学习我的项目中确切地在哪里应用它们。实现机器学习我的项目波及多个阶段,每个阶段都同样重要。
建模 是咱们的机器学习算法进入的阶段,它只是机器学习生命周期中的重要阶段之一。
好吧,让咱们深入研究机器学习算法的次要主题。
对于每种算法,咱们须要留神一些重要的事件。
1. 算法的背地的思维(或者说外延)是什么?
最后,我已经学习过一种算法,并且过了一段时间就遗记了,每当我回来批改它时,我都会发现很难了解过后我曾经学到的算法。随着工夫的流逝,我意识到,如果人类太过理论化,咱们将无奈真正记住它们;如果通过可视化来学习它,咱们很可能会长工夫记住它。这就是几何帮忙咱们以最简略的形式可视化算法外围的中央。如果咱们对这些算法有一些很酷的现实生活例子,那么咱们更偏向于更深刻地了解它。
一旦从任意抉择的课程中学习了算法,就关上一个新选项卡,而后开始搜寻该算法的相干内容。置信我,互联网上有很多很酷的解释。对于初学者来说,CSDN 和知乎是最好的终点。
2. 算法如何工作?
一旦理解了它的直觉,请尝试一下并尝试察看算法的理论工作原理。您须要查看的另一件事是该算法如何解决各种模式的数据,例如文本 / 类别 / 数字。
在此阶段中,尝试多种因素并查看算法的工作原理,您能够参考 Scikit-Learn 提供的现有算法。查看算法的参数,而后尝试应用它们,看看它们如何影响模型的性能。
3. 在哪里能够应用 / 在哪里不能应用?
这是大多数人常常错过的最重要因素,而他们更多地关注其作用和工作形式。深刻理解该算法十分重要,它为何无效或为何有效。
尝试试验并理解它如何解决大型数据集和高维数据。如果容易出现异常值或数据集不均衡。
在面试中,最辣手的问题不是什么(what)和如何(who),而是 为什么(why)。 假如今天您在学习算法后创立了一个集体我的项目,并且应用了特定的 X 算法来解决它,那么面试官最有可能问:为什么你要用 X 算法为什么不必 Y 算法?换句话说,为什么您认为 X 算法比其余办法更无效?
好家伙!这就是为什么您应该晓得它在哪里起作用以及在哪里不起作用的起因。
例如,您须要提出相似这样的回答:因为咱们的数据是高维的,并且实质上是非线性的,因而因为种种原因,算法 X 偏向于比 Y 更好地解决非线性数据。
4. 为什么算法的可解释性很重要
这是关键步骤之一,之所以如此重要,是因为作为数据科学家,您可能须要向可能齐全没有技术常识的客户展现模型。在此期间,您可能须要压服他们他们的模型正在预测正确的后果,并且须要提供一些很好的理由让他们适应。您根本无法对它们施加准确性。如果您的算法是可解释的,那么您能够向他们展现模型预测的起因。可解释性只不过意味着算法的性能重要性。
例如:如果您正在从事医疗保健我的项目,则您的模型能够预测一个人的疾病为阳性 / 阴性。这是一个十分敏感的问题,他们无奈承当可解释性呈现时的谬误。如果您的模型向您显示了(因为 X 特色(体内某些程度)大于 x 值之类的起因),作为踊跃 / 消极的人,这将变得更加容易和有意义。
5. 为什么要学习算法的工夫 / 空间复杂性?
当咱们进行实时工作时,咱们可能必须解决大量数据,并且如果须要低提早,那么时空复杂度能够帮忙您抉择正确的算法。
如果您的模型占用更多内存,那么实时运行它会十分低廉,尤其是当您应用云基础架构来运行模型时。有时,一些业务问题会带来较低的提早要求,其中有些算法提供了较高的准确性,但因为其工夫 / 空间复杂度的限度而无奈满足要求。
百度,CSDN,博客园,知乎,简书是获取每种算法的所有这些相干信息的好资源。
6. 为什么咱们须要理解算法背地的数学原理?
再次提到数学?是的,是的,我明确了。即便不理解数学,咱们也能够应用算法,只需从 Sklearn 这个库中导入即可,然而从久远来看,不倡议这样做。(这就是很多人被称为掉包侠的起因,只会调用库函数)好吧,无论咱们是否承受,咱们相对都须要数学以更好地理解汽车引擎盖下的理论状况。这可能会让一些人悲观,但我失去一个好消息,咱们无奈防止应用数学运算,但能够简化它并防止进行严格的数学运算。
简而言之,大多数机器学习算法的工作是最小化理论输入与预测输入之间的差别(LOSS)。
算法 = 最小化(损失)+ 正则项
例如,咱们应该将逻辑回归的对数损失和 SVM 等的 Hinge 损失最小化。
留神:并非每种机器学习算法都如此,这仅实用于多数算法。
为了最大水平地缩小这种损失,这些算法在外部应用了诸如梯度降落、牛顿法拟牛顿法等等其余最优化实践。因而,如果您对本人数学不太称心,那么只需尝试理解每种算法的损失函数及其梯度降落,就能够防止所有其余严格的数学运算并放弃指标不变。一旦感到本人数学还 OK,您就能够深入研究更多的数学知识。
7. 为什么从头开始施行(可选):
如果假如您正在学习吉他,则首先要从根底开始,而后缓缓尝试复制他人曾经创作的音乐,在此阶段,如果您理解他们如何创作音乐和进行调音,则能够下一步就是创立本人的音乐了吗?
同样,通过从头复制现有算法来实现它们,咱们能够更分明地理解现有算法。您将学到一些重要的知识点,能够帮忙您未来建设更好的模型。请记住,因为某些问题,咱们可能无奈始终在咱们的我的项目中应用 Sklearn 中算法的版本。在这种状况下,您必须筹备以满足您要求的形式优化或批改算法。
这说起来容易做起来难,然而要花很多工夫能力达到这一点,这就是为什么我将此标记为可选。至多尝试实现一种算法以理解其理论工作原理。如果您发现很难编写代码,请将算法合成为多个局部,而后先编写伪代码,而后再尝试将其转换为理论代码。(用面向对象的思维去解决问题,把每个局部当做一个函数或办法对待)
论断:
不要焦急,破费本人的工夫并尽可能最好地学习它,而不是学习一半而后每次都屡次援用它。请记住,指标不是完满,而是松软的根底,请置信我,咱们永远无奈欠缺指标,总是每天都会变得更好。如果您能了解算法的要旨并理解算法的工作原理,那么从久远来看,未来的你肯定感激当初致力的本人。(有点像鸡汤 hhh)
在此过程中,如果您听不懂或被卡住,请将其放在一边,而后持续进行其余主题。不要只是坚持下去,节约您贵重的工夫。稍后以簇新的心态返回并再次查看,请置信我,您会感到诧异。如果您依然无奈了解某些内容,请搜寻其余资源以更轻松的形式对其进行解释。
最初一步,将您所有的学习利用于不同数据类型和大小的多个数据集以取得真正的学习,实际就是所有。通过做这些事件,您将学到很多货色,而不是简略的浏览,所以请筹备好入手。
如果您读了那么多书,您必定有学习机器学习的激情,这是学习任何技能的最重要因素。一直学习,不要放弃。