机器学习是人工智能下一个较为广泛的分支,涉及NLP自然语言处理、计算机视觉计算软件Vision等交叉领域。简而言之,机器学习ML通过训练计算机模拟人的学习行为,来进行预测和解决更多问题。机器学习通常需要大量的时间和耐心,它的过程就像一场马拉松,不会直接跑到终点,而是在学习中体验一个不断变化、多样化的领域。
那麽,机器学习包含了什么其他的概念?基于难易度和专注的分支,我将其划分为以下几个类别:
逻辑回归法、决策树算法、纳伊夫贝叶斯算法、SVM、分类项目、回归项目、无监督学习法。
升级算法(XGBoost、LightGBM、Catboost)、时序、即刻森林。
确认策略,超参数调整,特征工程,集合学习,叠加和混合。
矩阵式代数,SVD,PCA,处理各种数据,推荐系统,Github。
不难看出,机器学习所涵盖的内容多种多样,其概念从未与其它领域相独立。因此,要想成为ML专家,往往需要尽可能多的探索、研究其他领域的内容,建立一个完整的知识体系;因为很多内容是相通的,有了一定的知识储备,对于以后的学习也能更好地理解。
学习理论的时候,要问自己,这是怎么回事?如何才能真正应用这些呢?在ML领域中的数学看起来很难。为了理解大量的文字内容,我的建议是借助Rademacher模型。结果显示,人们对图像的理解往往比文字要好。在我学习的时候,面对大量的标记性数据,会首先尝试建立一个模型并训练模型,测试它的准确性是差还是一样。但是,这种方法并不推荐在深度学习中尝试,因为神经网络可以对任何数据集,甚至随机标记的数据进行过度的拟合。
对于这个部分,你可以通过任何一个bootcamp或者MOOC'S进行相关的训练。许多平台也提供了这些资源,其中,我比较推荐一个叫做Learnbay的平台。Learnbay是IBM数据科学认证培训机构。使用机器学习模块,您将学到许多我之前提到过的基本概念,例如,监督学习,线性回归,逻辑回归,决策树。除了这些,你还可以参与各种实时活动。
理解了机器学习的基本概念,接下来是学习方法。由于我已经在过去一年半的时间里专注于机器学习领域的computervision,因此对于机器学习的方法,也有自己的一些见解。下一步,我将把机器学习步骤分为基础、理论学习和实践三个步骤。
在没有引入它的前提条件的情况下,机器学习就显得非常可怕。对大多数人来说,虽然这一领域并不要求你成为一个专业的数学家或者高级的程序员,但是对于这些领域的核心技能还需要掌握。只要你有了这些基础,其余的学习都会变得非常简单。实际上,几乎所有的ML都是在数据中应用统计学和计算机科学的概念。对于学前基础,大致可分为三类:
线形与微积分→原始算法的研究需要有线性代数和多元微积分,特别是导数、链式和乘积法则的基础。而且对于这一部分,很多大学里的高数课都有涉及。为了补充英语中这些数字操作的定义和名称,大家也可以去YouTube上许多国外大学的公开课,比如Essenceoflinearalgebra-YouTube。
统计→了解统计,尤其是贝叶斯概率,对于许多机器学习算法来说至关重要。无论是自然语言处理还是机器学习,最重要的一件事就是弄清楚基础。基础知识就是指对概率与线性代数等概念的浅度理解。不必掌握这些主题,但是如果某些算法,如子空间,基础,i.i.d,独立,相关这些术语,要理解它们的含义,而非对其有所了解。我见过一些人,他们在网络上学习了2-3门机器学习课程,在一些数据集上应用了2-3个算法,从github上复制了一些代码,以为自己已经学会了机器学习,并为解决数据科学问题做了准备。虽然目前有一些数据库可以很好地为机器学习ML任务提供非常好的API,并且利用它们执行ML任务,但是,仅仅使用它们,不了解内在,从长期来看是没有帮助的。另外,纯数学知识,如统计学,EDA,线性代数需要掌握。在本文中,概率理论和统计入门IntroductiontoProbility-TheScienceofUncertainty是一个我发现的很好的资源。本文由美国MIT的几位教授共同撰写,内容包括操作讲解都非常清晰。
Python→编程可以说是机器学习的一大基础,没有编程就不能学习机器学习。Python和R类似于下一次战斗时所需的武器,如果前面的数学知识是基础的话。在学习的时候我主要是用R语言,搭配Datacamp学起来真的很方便。作为一个新手,我更推荐Python,因为它容易操作和上手。至于编程部分,我建议同时花几个月时间学习Python代码和其他机器学习概念。后面你会发现很多情况下,你会同时需要他们。当您学习Python代码的时候,您可以练习使用诸如Jupyter和Anaconda等数据科学工具,主要是理解它们的用途以及为什么使用它们。要学习编程语言,网上有很多资源,coursera和网易公开课程都有很多可供选择。此外,您可以尝试ujjwalkarn/DataSciencePython。对大多数项目来说,还需要了解算法设计和分析(课程:AlgorithmDesignandAnalysis)。起初我只是直接使用了算法,然后马上去操作,但是随着学习的逐步深入,我还发现如果花时间去了解所有的东西,结果是非常令人满意的。本系列课程也有很好的讲义,以指导多层前馈人工神经网络的学习。
掌握了一定的数学基础之后,就可以开始阅读一些教材,来了解机器学习的理论知识。推荐一本关于机器学习的基本入门书籍,不要直接阅读那些花哨的书。许多人推荐的西瓜书籍,在我看来其实并不适合入门学习,难度比较大;而且像机器学习这样的实践领域,单是从书本中获得的理论知识,往往不能满足实际生活的应用。对这一部分的理解往往要求例句搭配,有些书中所涵盖的实例早已过时,因此针对这一部分,向您推荐几个机器学习时所用到的课程。
AI团队提供专业的系列课程,整个课程将上述内容按照难易程度分为基础和进阶两个阶段,需要付费使用。课程的收费从7000至20000不等,取决于所学课程的具体情况。这个课程最吸引我的一点就是它所涵盖的知识广泛。不仅仅涉及深度学习、NLP、机器学习等AI领域,还有许多更精细的分支。而最基本的机器学习算法,如分类算法,集成算法,聚类算法,降维算法等,在本课程中也有大量的重点介绍。
如果觉得自学太难可以看一些网上的课程,大多为在线课程,此模式灵活灵活,可随时开课,比较适合上班族或学生党利用零碎的时间进行学习。课件与PPT模式相似,左边显示的小标题很方便进度查询。因是近年来新出的课程,与前面提到的书本教材相比,例题均较新,也有代表性。每堂课还会配上一些主题,帮助大家巩固知识点的概念。本人在做这些题目的时候,感觉不错的是,这些主题都和每小节的课程内容结合得很好,能够即时地进行整合,也可以为以后的学习做铺垫。
这个系列课程可以说是非常全面的涵盖了我上面提到的关于机器学习的各种概念,比如随机森林,逻辑回归,线性回归等等。把机器学习放入人工智能的大框架中进行学习,可以更好地理解某些概念,将已学到的知识串联起来,掌握综合技能。
在学习机器学习ML的过程中,许多有数学背景的人不愿意跳过线性代数、多元微积分和统计。但是有一件事你绝对不能忽略,那就是Python。尽管也有其它语言可用于机器学习,比如R,Scala等等,但是Python是现在最流行的ML语言。贪婪的科技AI课程也为没有编程经验的人提供了Python的基础内容。除理论性内容外,本课程还提供机器学习领域中有代表性的案例,如广告点击率预测,情感分析项目,信用卡欺诈预测,零售场景的用户分层,意图识别等,供学生参考练习。
总的来说,本教材还是比较简明易懂的。相同浏览过中、高级课程后,个人感觉不足,进阶课程难度较大。具有机器学习和数据分析相关知识的人,可能会觉得最初的内容太基础,而高级的部分,特别是高级的部分,会感到有些困难。
其核心团队由国内外AI专家组成,多位合作伙伴和讲师均为行业资深工程师。它的研究人员包括前金融独角兽首席科学家、美国google科学家、ALBERT第一作者、美国微软AI总监等专家;多位合伙人和主讲老师都是业内资深工程师,并在ICML、AAAI、IJCAI、ICDM等会议上发表论文数百次。当我来上课时,导师是亚马逊公司的工程师李文哲老师。他对每个问题的解释都很细致,特别是遇到运算问题,都会一步一步地把具体公式写出来。除了这些,他还常常举一反三,用同样的例子来加深我们的记忆。课外助教对教学也都非常认真和负责,我每次问到的问题都会及时解答,即使现在已经结了课,我们也会经常交流一下最近遇到的问题。
本课程也是在线教学,一大批被分成许多小块,在像coursera,edx等学习网站上都能找到。本课程主要介绍各种数据分析和建模的方法,在课堂上还能锻炼与人的沟通和工作能力。这门课程我们使用R语言,并且学习了R、统计概念和数据分析等技术。举个例子,我暑假学的CS501课程涵盖了大量数据调查的关键技术,如数据处理、清理、抽样、管理、探索分析、回归和分类、预测和数据通信,以及通过运用先进的统计、建模和编程技能,得出预见性的见解。
这三个月里,总体来说,学习很有趣,但是在这个过程中,我发现自己基础上的不足。身为统计专业,也有一定编程基础的学生,我原以为自己对数据的处理和建模应该会信手拈来。可以说这个课程的难度远远超过我的想象。由于前一次学习是以理论为基础,接触实例不多,因此,在接触此类实例的深入分析以及运用一系列连续和离散数学工具练习的项目,将会有些应付不了。该课程提供理解、预测和决策的量化框架,几乎涵盖了我们生活的各个方面,从交通信号灯计时,到疾病传播的控制,从资源管理到体育领域,等等。当然,通过这一系列的课程,你也会像我一样,有一种柳暗花明之后的充实感,而且技巧也会大大提高。
除此之外,哈佛大学也在相应的线上提供证书项目,总共有四个班,总共有两个学期。该项目旨在教学生如何通过高级统计、建模和编程技能,获得预测性洞察力,获取机器学习和计算技术方面的深入知识,并发现从产品设计到金融等一系列行业的重要问题和智慧。
尽管这个项目对机器学习的重视程度比AndrewNg的课程要少一些,但是从数据收集到分析,你将获得更多的数据科学工作流程。如我前面提到的,要尽可能多地掌握、理解机器学习的极端相关领域。因此,相对于系统的学习,这套课程可以帮助您对框架的概念有一个全面的了解,并且扩展许多数据科学的知识。缺乏的是,该教材目前只有英文来源,而且难度较大。