机器学习该怎样入门
简单来说,入门就是数学基础+编程,也可以学一些简单的算法,看一些数据分析课程来提高数据处理能力等等。一些高难的算法可以等到入门后摸索着去学习和理解,当然上来不建议直接读算法书,对于没有基础的小白来说简直就如天书一般。首先,我认为最重要的就是学好数学,打好数学的基本功,这样看机器学习里面那样复杂的公式才不会觉得头疼,学起来才不会觉得吃力。本科阶段是数学的我可以给大家来推荐一些我觉得有必要去学习的数学知识:
总的来说,可以归纳为以下几方面的内容:
1、微积分
讲解之前先给大家介绍一下机器学习的概念,机器学习也被称为统计学习,是关于计算机基于数据构建概率统计模型并运用模型对于数据进行预测与分析的一门学科(到这里可以看出概率统计的学习很重要了,在第三部分我会详细讲到)。
这个概念里面的构建模型,参加过数学建模比赛的伙伴们的应该会有所了解,模型的构建大多是依赖于函数体系。微积分可以说是专门研究函数的一门学科,比如说一元函数里面的极限,导数,泰勒公式,级数,多元函数里面的二重积分,三重积分,曲线曲面积分等等,读到这里很多考研的小伙伴会发现这不就是我每天做的高等数学题吗?没错,微积分可以说是高等数学的一个非常重要的分支,机器学习里面所用到的数学知识基本上就是考研数学一二三的内容和难度了。但是考研数学书更像是为考研考研而准备的一种应试类型的书,想学习更多理论知识的话我给大家推荐华东师范大学数学系编写的《数学分析》,里面对于知识点的讲解很全面很透彻。这也是很多高校数学专业所用的书籍,下面上图:
2、线性代数
线性代数这一部分对于考研的朋友们来说就更不陌生了,高数线代不分家,那么在机器学习中,机器学习算法的输入输出结果往往是由向量和矩阵的形式构成,下图可以详细地看到:
因此线性代数学的不好的话可能连结果都看不懂。最起码要了解最基础的概念,线性代数在概率论中也有应用,比如协方差矩阵,在图论中和应用有图的邻接矩阵等等,这两部分在下文中也会讲到,可以说数学这一部分的学习联系十分紧密。
我认为在线性代数中需要掌握的知识有:向量的范数,矩阵的范数,QR分解,奇异值分解,Cholesky分解等等(感觉后三个方面的内容可以在《数值分析》一书中可以学得更透彻,我推荐大家看由黄明游、冯果忱编写的数值分析的书籍。)
3、概率论与数理统计
这门课程可以说在机器学习的领域是至关重要的,机器学习的概念当中都重点强调了“构建概率统计模型”,我来给大家捋一捋有关概率统计方面的知识点(大部分理工科背景的朋友应该都学过这些,这里主要给偏文科背景的朋友准备):
概率论部分 |
随机事件的概念、随机变量(包括离散型和连续性的) 条件概率的计算(可以引申出全概率公式与贝叶斯公式的推导) 概率密度函数,分布函数(这里要重点了解几个分布:离散型的有二项分布,泊松分布。连续型的有正态分布、指数分布、均匀分布) 还要会一些多维密度函数的求解方法,了解独立性的性质 会计算数学期望,方差,相关系数 了解大数定律(如辛钦大数定律、伯努利大数定律、马尔可夫大数定律)和中心极限定理 |
|
数理统计部分 |
了解统计量的概念(不含未知参数的关于样本的函数) 抽样分布定理,三大抽样分布的特点和性质:卡方分布,t分布,F分布 参数估计的方法:矩估计,极大似然估计,一致最小方差无偏估计(UMVUE),区间估计 假设检验的方法:t分布检验,F分布检验,正态分布检验 方差分析的方法,线性回归与非线性回归 |
掌握上面表格里面的内容就差不多了,在研究机器学习算法的问题时,一般来讲将输入看成一个随机变量,中间部分的算法构造一个概率模型,这里用概率论的好处是可以进行不确定性建模,可以得到一个估计量,然后多次执行该算法,不断减小误差,直到某两次的结果接近为止。最后的输出结果也是一个随机变量的形式,我们可以通过下图来了解这种模式:
4、最优化方法
几乎所有的机器学习算法最终都归结为求解最优化问题,从而最后求出最优结果。
首先来看一下学习最优化方法的知识结构:
这里面比较基础的算法有梯度下降法,最速下降法,牛顿法,拟牛顿法拉格朗日数乘法以及KKT条件,想详细了解这些算法的朋友我推荐孙文瑜等人编写的《最优化方法》,这本书里面有介绍最优化算法的最基本的迭代格式,然后在这个迭代格式的基础上衍生出了很多开头提到的方法。
5、图论
图论大多数是计算机专业的同学会学到,但是本科阶段为计算数学的我也在大三下学期的时候学过数据结构与算法的课程,掌握数据结构中的图论算法就足够了,下面还是给大家列一个表格介绍一下:
图 |
图的基本概念 |
有向图,无向图,连通图,强连通图,生成树,生成森林,路径 |
||
图的存储以及基本操作 |
邻接矩阵法,邻接表法,十字链表(有向图),邻接多重表(无向图) |
|||
图的遍历 |
广度优先搜索遍历(BFS),广度优先生成树,深度优先搜索遍历(DFS),深度优先生成树,森林。 |
|||
图的应用 |
最小生成树两种算法:Prim算法,Kruskal算法,Dijkstra算法求单源最短路径,Floyd求各顶点之间最短路径,拓扑排序,关键路径。 |
|||
图论可以模拟成神经网络模型,神经网络算法在机器学习,甚至在深度学习中都是一个很重要的算法,它的主要原理是模仿人脑神经元的工作方式来处理信息。
机器学习入门编程语言:Python
对于入门的小白来说,学习Python我推荐这本书:
这三本书号称Python学习的“三剑客”,入门到实践这本书首先详细讲解了Python的搭建环境,对于小白来说很容易上手,只看书上的安装方法就够了,不用再去网上找那些五花八门的安装包了,介绍了最基本的变量类型,字符类型,数组,if条件语句,for循环语句,基本的函数等等,和我在本科学习C语言时的流程很相似。
第二本书介绍了一些实战项目,可以在这本书里面体会Python编程的思想,机器学习算法的步骤其实就是用编程语言来进行“翻译”,在学习这些项目时可以多体会每个项目步骤之间函数语句的衔接。
第三本书更多介绍的是Python在办公方面的内容,虽然也涉及到了一些数据处理但是有些偏商业化,对于学习机器学习来说,掌握前两本书的内容就可以了,第三本书更多是在为求职的朋友做准备的,关于数据处理方面大家可以去看一看相关的数据分析课程。
贪心科技数据分析课程-培养数据处理能力
机器学习很重要的一步处理数据,在用机器学习算法解决实际问题时,数据量是非常大的,比如我们日常生活中的淘宝,京东,微信活跃用户都达到了几亿这些电商平台运营的背后也离不开机器学习、人工智能算法的支持,因此数据处理能力在机器学习算法的学习中是很重要的,数据处理的内容一般包括数据清洗,冗余剔除等等。
这里我给大家推荐一门数据处理的课程-贪心科技的数据分析课程,里面有一个章节详细讲述了数据处理的方法,并且还举了一个例子来详细说明数据处理的过程,老师讲课的风格幽默风趣,语言也通俗易懂,对于小白来说很容易上手。而且用的编程语言是Python,更加符合机器学习所要掌握的编程语言,下面给大家看一个有关数据清洗课程的例子:
这里先把无效的数据剔除,然后把剩下的数据进行整理,也就是数据清洗的过程,可以看到老师在数据清洗这一部分有详细的代码讲解,对于入门的小白来说按照老师的思路都会理解。
机器学习入门算法推荐
掌握好了上文提到的内容之后,这里给大家推荐一些机器学习入门级的算法,也是让大家对机器学习的基本算法提前有一个了解,机器学习算法分为两大块,监督学习和无监督学习。
监督学习:
是指从标注数据中学习预测模型的机器学习问题,本质是学习输入到输出的映射统计规律。
常见的入门级算法有:
感知机模型:对于输入实例的特征向量进行分类的线性分类模型
K邻近法:简单的分类与回归方法,三要素为距离度量,k值的选择和分类决策规则。
朴素贝叶斯算法:典型的生成学习算法,由训练数据学习联合概率分布 ,然后求得后验概率分布 。
决策树模型:表示基于特征对实例进行分类的树形结构,也可以看作是定义在特征空间划分上的类的条件概率分布。
无监督学习:
是指从无标记的数据中学习数据的统计规律或者说内在结构的机器学习,无监督学习可以用作数据分析或者监督学习的前处理。
聚类:针对给定的样本,依据他们的属性相似度或者距离,将其归纳到若干个“类”或“族”的数据分析问题。
主成分分析:利用正交变换把由线性相关变量表示的观测数据转化为少数几个由线性无关变量表示的数据。
潜在语义分析:主要用于文本的话题分析,其特点是通过矩阵分解发现文本与单词之间的基于话题的语义关系。
全文总结
前文一共说了机器学习入门的几个要点,我认为从重要性大到小的顺序排列的话,应该是:数学基础,Python编程基础,掌握一定的数据处理能力,等这三项都掌握得差不多了之后,可以看一下我在上一段提出的一些机器学习入门算法,这些算法在机器学习领域是比较常用的,之后进阶的高难算法也是在这些入门算法的基础之上延伸的,写入门算法这一块的目的就是大家也有所了解机器学习都在主要研究哪些算法,在入门阶段一定要先把前三项的基本功打好,再去看算法,这样学习起来不吃力,并且效率会很高。