机器学习算法概述

目录

机器学习概述

01 监督学习

02 无监督学习:

03 半监督学习

04 强化学习

机器学习算法介绍

1 回归算法

01线性回归:

02非线性回归

03逻辑回归

2 聚类

01基于层次的聚类

02基于分割(划分)的聚类

03基于密度的聚类

04基于网格的聚类

05基于模型的聚类

3分类:

01 逻辑回归

02 朴素贝叶斯分类器

03 SVM算法:

04 KNN

05 决策树:

06 随机森林

4降维

有监督降维

无监督降维

5 时间序列:

常用算法:AR、MA、ARMA、ARIMA、SARIMA

Prophet模型

LSTM

6深度学习:

01神经网络:

02反向传播:

03前向神经网络(Feedforward Neural Networks, FNN):

04卷积神经网络(Convolutional Neural Networks, CNN)

05循环神经网络(Recurrent Neural Networks ,RNN)

06递归神经网络(Recursive Neural Network )

总结




机器学习概述

机器学习是指机器通过统计学算法,对大量历史数据进行学习,进而利用生成的经验模型指导业务。它是一门多领域交叉学科,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

01 监督学习

监督学习是根据已有数据集,知道输入和输出结果之间的关系,然后根据这种已知关系训练得到一个最优模型。也就是说,在监督学习中,我们的训练数据应该既有特征又有标签,然后通过训练,使得机器能自己找到特征和标签之间的联系,然后在面对没有标签的数据时可以判断出标签。

主要分为:分类任务、回归任务、序列标注任务。

监督学习实例:iris数据集是用来给花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征(前4列),我们需要建立一个分类器,分类器可以通过样本的四个特征来判断样本属于山鸢尾、变色鸢尾还是维吉尼亚鸢尾(这三个名词都是花的品种)。

02 无监督学习:

无监督学习和监督学习最大的不同是监督学习中数据是带有一系列标签。在无监督学习中,我们需要用某种算法去训练无标签的训练集从而能让我们我们找到这组数据的潜在结构。无监督学习大致可以分为聚类和降维两大类。

主要分为:聚类任务、降维任务

有监督学习方法必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律,比如右图实例,可用过聚类算法自动给数据集分类。

03 半监督学习

半监督学习是监督学习和无监督学习相互结合的一种学习方法,通过半监督学习的方法可以实现分类、回归、聚类的结合使用。

半监督分类:是在无类标签的样例的帮助下训练有类标签的样本,获得比只用有类标签的样本训练得到更优的分类;半监督回归:在无输出的输入的帮助下训练有输出的输入,获得比只用有输出的输入训练得到的回归器性能更好的回归;半监督聚类:在有类标签的样本的信息帮助下获得比只用无类标签的样例得到的结果更好的簇,提高聚类方法的精度;半监督降维:在有类标签的样本的信息帮助下找到高维输入数据的低维结构,同时保持原始高维数据和成对约束的结构不变。半监督学习是最近比较流行的方法。

04 强化学习

强化学习是一种比较复杂的机器学习方法,强调系统与外界不断的交互反馈,它主要是针对流程中不断需要推理的场景,比如无人汽车驾驶,它更多关注性能。它是机器学习中的热点学习方法。

机器学习算法介绍

常用的机器学习算法:

1 回归算法

回归分析是一种统计分析方法,用于预测一个连续变量与一个或多个其他变量之间的关系。回归分析通过建立模型来预测因变量(被预测变量)与自变量(预测变量)之间的关系,从而预测因变量的值。回归分析有多种形式,包括线性回归、非线性回归、Logistic回归等。

01线性回归:

线性回归:是回归分析的一种,假设因变量与自变量之间存在线性关系,即因变量与自变量的关系可以用一条直线来描述。它最常见的应用场景是预测数值型变量,如预测房价根据面积、房龄等因素。

其中所有的x都是一次项,所有的x与y都是线性关系。

线性回归主要涉及两个难点:

[if !supportLists]1、[endif]参数的选择:

最简单的方法,我把所有可能的参数值都罗列好,让程序全部执行尝试计算,最终就能选择出最优解,但是这种方式不但耗时还占内存,所以我们就需要其他方法来进行优化,即参数迭代。

参数迭代一般选取梯度下降法:梯度下降法就好比是下山,下一步的方向选的是最陡的方向。梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。梯度下降法的计算过程就是沿梯度下降的方向求解极小值。

其迭代公式为

 其中

代表梯度负方向,

表示梯度方向上的搜索步长。梯度方向我们可以通过对函数求导得到,步长的确定比较麻烦,太大了的话可能会发散,太小收敛速度又太慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标看做是ak+1的函数,然后求满足f(ak+1)的最小值的ak+1即可。

参数迭代算法还包括牛顿迭代法、最速下降法、共轭迭代法、线性规划、非线性规划、遗传算法、模拟退火等等。

[if !supportLists]2、[endif]验证参数选择的正确性:

计算参数是否最优一般通过代价函数:代价函数也称为损失函数,为每个真实值与预测值之前的残差平方之和,即最小二乘法。

线性回归实例:

预测波士顿房价:

房子价格= 0.02×中心区域的距离 + 0.04×城市一氧化氮浓度 + (-0.12×自住房平均房价) + 0.254×城镇犯罪率

案例来源:https://blog.csdn.net/weixin_52733693/article/details/127091657


02非线性回归

非线性回归:非线性回归是线性回归的延伸,假设因变量与自变量之间不存在线性关系,即因变量与自变量的关系不能用一条直线来描述,需要用更复杂的函数模型来描述,回归规律在图形上表现为形态各异的各种曲线。

线性就是每个变量的指数都是1,而非线性就是至少有一个变量的指数不是 1。该方法假设因变量和自变量之间不存在线性关系,而是存在非线性关系。常用的曲线类型有幂函数,指数函数,抛物线函数,对数函数和S型函数。假如我们希望预测某商家的销售额,我们可以使用非线性回归分析,并通过分析广告费用、宣传渠道、季节等因素与销售额之间的关系,从而预测出销售额的变化趋势。非线性回归的模型可以更好地捕捉复杂的非线性关系,并对预测结果产生更大的影响。

非线性函式的求解一般可分为将非线性变换成线性和不能变换成线性两大类。

可线性化问题:处理可线性化处理的非线性回归的基本方法是,通过变数变换,将非线性回归化为线性回归,然后用线性回归方法处理。

不能变换成线性:假定根据理论或经验,已获得输出变数与输入变数之间的非线性表达式,但表达式的係数是未知的,要根据输入输出的n次观察结果来确定係数的值。举例非线性回归模型:

03逻辑回归

Logisic回归:是回归分析的一种,专门用于预测二元分类结果(例如,预测一个人是否患有疾病),而不是连续变量。该模型建立在Sigmoid函数基础上,该函数可以将任意实数值映射到0~1范围内,表示某个事件的概率。

在二分类器中,经常需要一个分界线作为区分两类结果。再次需要一个函数进行曲线平滑化,由此引入Sigmoid 函数进行转化:

经典案例:良/恶性乳腺癌肿瘤预测

机器学习的过程中,经常通过误差大小来评判模型好坏,在训练集上的效果差,成为欠拟合;我们在训练集上的误差较小,但在测试集上的误差较大则成为过拟合。

欠拟合主要是由于学习不足造成的,那么我们可以通过以下方法解决此问题

1、增加新的特征,或者衍生特征(对特征进行变换,特征组合)

2、使用较复杂的模型,或者减少正则项

过拟合的形成原因主要为:

1、样本问题

1)样本量太少:样本量太少可能会使得我们选取的样本不具有代表性,从而将这些样本独有的性质当作一般性质来建模,就会导致模型在测试集上效果很差;

2)训练集、测试集分布不一致:对于数据集的划分没有考虑业务场景,有可能造成我们的训练、测试样本的分布不同,就会出现在训练集上效果好,在测试集上效果差的现象;

3)样本噪声干扰大:如果数据的声音较大,就会导致模型拟合这些噪声,增加了模型复杂度;

2、模型问题

1)参数太多,模型过于复杂,对于树模型来说,比如:决策树深度较大等。

如何防止过拟合?

1)增加样本量:样本量越大,过拟合的概率就越小(不过有的由于业务受限,样本量增加难以实现);

2)减少特征:减少冗余特征;

3)加入正则项:损失函数中加入正则项,惩罚模型的参数,降低模型的复杂度(树模型可以控制深度等);

4)集成学习:练多个模型,将模型的平均结果作为输出,这样可以弱化每个模型的异常数据影响。

2 聚类

聚类是常见的无监督学习算法,也就是只有数据,无明确答案,即训练集没有标签。由计算机自己找出规律,把相似属性的样本放在一起,每个组也成为簇。

聚类方法主要划分为五大类:

01基于层次的聚类

原理:试图在不同层次上对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用“自底向上”的聚合策略和“自顶向下”的拆分策略。

(1)算法流程

以下流程以自下向上为例。

a.将每个对象看作一类,计算两两之间的最小距离;

b. 将距离最小的两个类合并成一个新类;

c. 重新计算新类与所有类之间的距离;

d. 重复b, c, 直到所有类最后合并成一类。(在此我们了已选择我们需要多少个簇)

02基于分割(划分)的聚类

原理:首先要确定一堆散点最后聚成几类,然后挑选几个点作为初始中心点,再然后依据预先定好的启发式算法(heuristic algorithms)给数据点做迭代重置(iterative relocation),直到最后到达“类内的点都足够近,类间的点都足够远”的目标效果。

基于划分的聚类代表方法有:K-means及其变体包括k-medoids、k-modes、k-medians等、CLARA、PAM等算法。

k-means算法流程:

a. 随机地选择k个对象,每个对象初始地代表了一个簇的中心;

b.对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;

c.重新计算每个簇的平均值,更新为新的簇中心;

d.不断重复b, c, 直到准则函数收敛。

03基于密度的聚类

原理:定一个距离半径,最少有多少个点,然后把可以到达的点都连起来,判断为同类。

1)算法流程

a.指定合适的r(点的半径)和M(在一个点半径内至少包含的点的个数);

b.计算所有的样本点,如果点p的r邻域里有超过M个点,则创建一个以p为核心点的新簇;

c.反复寻找这些核心点直接密度可达的点,将其加入到相应的簇,对于核心点发生"密度相连"状况的簇,给予合并;

d.当没有新的点可以被添加到任何簇,算法结束。

04基于网格的聚类

原理:将数据空间划分为网格单元,将数据对象集映射到网格单元中,并计算每个单元的密度。根据预设的阈值判断每个网格单元是否为高密度单元,密度足够大的网格单元形成簇。

(1)算法流程:

a.划分网格;

b.使用网格单元内数据的统计信息对数据进行压缩表达;

c.基于这些统计信息判断高密度网格单元 ;

d.最后将相连的高密度网格单元识别为簇。

05基于模型的聚类

原理:为每簇假定了一个模型,寻找数据对给定模型的最佳拟合,这一类方法主要是指基于概率模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。

这一类方法主要是指基于概率模型的方法和基于神经网络模型的方法,尤其以基于概率模型的方法居多。

这里的概率模型主要指概率生成模型(generative Model),同一”类“的数据属于同一种概率分布,即假设数据是根据潜在的概率分布生成的。

3分类:

分类是在一群已经知道类别标号的样本中,训练一种分类器,让其能够对某种未知的样本进行分类。分类算法属于一种有监督的学习。分类算法的分类过程就是建立一种分类模型来描述预定的数据集或概念集,通过分析由属性描述的数据库元组来构造模型。分类的目的就是使用分类对新的数据集进行划分,其主要涉及分类规则的准确性、过拟合、矛盾划分的取舍等。

常见的分类算法包括:逻辑回归、支持向量机、朴素贝叶斯分类器、决策树、随机森林、KNN。

01 逻辑回归

逻辑回归再回归算法已经做过介绍。

02 朴素贝叶斯分类器

朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素。朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。

贝叶斯分类算法的实质就是计算条件概率的公式。在事件B发生的条件下,事件 A 发生的概率为 P(A | B)来表示


朴素贝叶斯的应用场景:

垃圾文本过滤:垃圾邮件识别、社区评论信息检测.

情感判别:微博的褒贬情绪、电商评论信息的情感判断.

文本分类:新闻文档的自动识别。

03 SVM算法:

支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。

由简至繁SVM可分类为三类:线性可分(linear SVM in linearly separable case)的线性SVM、线性不可分的线性SVM、非线性(nonlinear)SVM。

线性SVM:通俗的讲就是找到一个超平面将数据集分开。SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如下图所示,w x + b = 0  即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。

线性不可分的线性SVM:将原来的输入特征映射到更高维度的空间,使用更高维度的空间建立超平面进行分割。

非线性SVM 中,核函数的选择就是影响 SVM 最大的变量。最常用的核函数有线性核、多项式核、高斯核、拉普拉斯核、sigmoid 核,或者是这些核函数的组合。这些函数的区别在于映射方式的不同。通过这些核函数,我们就可以把样本空间投射到新的高维空间中。

针对非线性的数据,需要用到SVC。在 SVC 中,我们既可以使用到线性核函数(进行线性划分),也能使用高维的核函数(进行非线性划分)

04 KNN

KNN可以说是最简单的分类算法之一,同时,它也是最常用的分类算法之一,注意KNN算法是有监督学习中的分类算法,它看起来和另一个机器学习算法Kmeans有点像(Kmeans是无监督学习算法),但却是有本质区别的。

KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。听起来有点绕,还是看看图吧。

一般来说,KNN分类算法的计算过程:

1)计算待分类点与已知类别的点之间的距离

2)按照距离递增次序排序

3)选取与待分类点距离最小的K个点

4)确定前K个点所在类别的出现次数

5)返回前K个点出现次数最高的类别作为待分类点的预测分类

05 决策树

决策树是一种依托决策而建立起来的一种树。在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某个可能的属性值,而每一个叶子节点则对应从根节点到该叶子节点所经历的路径所表示的对象的值。

决策树示意图:

决策树的生成算法有ID3、C4.5、C5.0、cart等。

ID3 使用信息熵作为选择特征的准则;

C4.5 使用信息增益比作为选择特征的准则;

CART 使用 Gini 指数作为选择特征的准则;

构建决策树还需要剪枝,如果没有剪枝的操作的话,就会长成每一个叶都是单独的一类的样子。这样对我们的训练集是完全拟合的,但是对测试集则是非常不友好的,泛化能力不行。因此,我们要减掉一些枝叶,使得模型泛化能力更强。

06 随机森林

随机森林:构造出n棵决策树,用n棵决策树共同做出决策,对样本进行训练并预测的一种分类器。随机森林有点类似于三个臭皮匠等于一个诸葛亮的做法,虽然这几百棵决策树中的每一棵都很简单(相对于C4.5这种单决策树来说),但是他们组合起来确是很强大。

采样方式:Bootstraping(有放回采样);Bagging(有放回采集k个样本,并行构建分类器,最终组合成一个强分类器)

模型构建(随机):通过样本的随机选择和特征的随机选择,建立多个决策树。

from sklearn.ensemble import RandomForestClassifier  #导入sklearn随机森林算法包

4降维

数据降维算法是机器学习算法中的大家族,与分类、回归、聚类等算法不同,它的目标是将向量投影到低维空间,以达到某种目的如可视化,或是做分类。

目前已经存在大量的数据降维算法,可以从另个不同的维度对它们进行分类。

按照是否有使用样本的标签值,可以将降维算法分为有监督降维和无监督降维;

按照降维算法使用的映射函数,可以将算法分为线性降维与非线性降维;

有监督降维

有监督的降维算法则使用了样本标签值,是一种有监督学习算法,其典型代表是LDA(线性判别分析法);

LDA降维的目标:将带有标签的数据降维,投影到低维空间同时满足三个条件:

尽可能多地保留数据样本的信息(即选择最大的特征是对应的特征向量所代表的的方向)。

寻找使样本尽可能好分的最佳投影方向。

投影后使得同类样本尽可能近,不同类样本尽可能远。

无监督降维

无监督降维算法不使用样本标签值,因此是一种无监督学习算法,其典型代表是:奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA);

主成分分析:

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。

(1)主成分分析试图在力保数据信息丢失最少的原则下,对多个变量进行最佳综合简化,即对高维变量空间进行降维处理。

(2)PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。

(3)PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息。

因子分析:

(1)因子分析是从假设出发,它是假设所有的自变量x出现的原因是因为背后存在一个潜变量f(也就是我们所说的因子),在这个因子的作用下,x可以被观察到。

(2)因子分析是通过研究变量间的相关系数矩阵,把这些变量间错综复杂的关系归结成少数几个综合因子,并据此对变量进行分类的一种统计分析方法。

(3)因子分析就是将原始变量转变为新的因子,这些因子之间的相关性较低,而因子内部的变量相关程度较高。

因子分析可以用于降维,但因子分析的作用远不止降维。

5 时间序列:

时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。经济数据中大多数以时间序列的形式给出。根据观察时间的不同,时间序列中的时间可以是年份、季度、月份或其他任何时间形式。

构成要素:长期趋势,季节变动,循环变动,不规则变动。

1)长期趋势(T)现象在较长时期内受某种根本性因素作用而形成的总的变动趋势。

2)季节变动(S)现象在一年内随着季节的变化而发生的有规律的周期性变动。

3)循环变动(C)现象以若干年为周期所呈现出的波浪起伏形态的有规律的变动。

4)不规则变动(I)是一种无规律可循的变动,包括严格的随机变动和不规则的突发性影响很大的变动两种类型。

这4种因素的综合模式有加法模式、乘法模式和混合模式。若以表示时间序列(=1,2,3,…,表示采样时刻),则加法模式的时间序列是上述4种变动因素的相加,=(T)+(C)+(S)+(I),而乘法模式的则是上述4种变动因素的相乘,=(T)×(C)×(S)×(I)。

常用算法:AR、MA、ARMA、ARIMA、SARIMA

对时间序列数据进行分析和预测的常用模型包括:自回归模型(AR模型)、滑动平均模型(MA模型)、(自回归-滑动平均混合模型)ARMA模型、(差分整合移动平均自回归模型)ARIMA模型、(季节性差分自回归滑动平均模型)SARIMA。

SARIMA是一个用于预测未来趋势的时间序列数据模型。模型是回归分析的一种形式。

AR(Autoregression):显示变量变化的模型,该变量在其自身的滞后/先验值上回归。

I(Integrated):差分时间序列的原始观测数据,使其平稳

MA(Moving average):观察值与移动平均模型的残差之间的依赖关系

1、对于得到的数据,首先应该检查是否有突兀点的存在,分析这些点的存在是因为人为的疏忽错误还有有其它原因。保证所获得数据的准确性是建立合适模型,是进行正确分析的第一步保障。

2、时间序列的预处理时间序列的预处理:平稳性检验和白噪声检验。能够适用ARMA模型进行分析预测的时间序列必须满足的条件是平稳非白噪声序列。

3、模型识别模型识别即从已知的模型中选择一个与给出的时间序列过程相吻合的模型。

SARIMA案例:

https://zhuanlan.zhihu.com/p/127032260

https://zhuanlan.zhihu.com/p/383004983

Prophet模型

Prophet由facebook开源的基于python和R语言的数据预测工具。是一种基于加法模型预测时间序列数据的过程,其中非线性趋势与年、周、日季节性以及假日效应相吻合。它最适用于具有强烈季节效应和几个季节的历史数据的时间序列。Prophet对缺失的数据和趋势的变化是健壮的,通常能很好地处理异常值。

prophet是一个比较自动的时间序列模型,在时间足够长的情况下,可以捕捉到年周期,月周期,季度周期,一周内的周期等,以及长期趋势,它可以通过图直观地展示各个因素对预测结果的影响,也可以在单一的数据序列(例如销量)之外加入其它影响序列的因素,比如说节日的影响,我们可以给各个节日的影响强度自定义数字,以及节日的前期预热,和节日的延续时间窗。

算法模型:y(t) = g(t) + s(t) + h(t) + e(t)

模型整体由三部分组成:growth(增长趋势)、seasonality(季节趋势)、holidays(节假日对预测值的影响)。

其中:

g(t) 表示趋势项,它表示时间序列在非周期上面的变化趋势;

s(t) 表示周期项,或者称为季节项,一般来说是以周或者年为单位;

h(t) 表示节假日项,表示时间序列中那些潜在的具有非固定周期的节假日对预测值造成的影响;

e(t) 即误差项或者称为剩余项,表示模型未预测到的波动, 服从高斯分布;

Prophet 算法就是通过拟合这几项,然后最后把它们累加起来就得到了时间序列的预测值。

LSTM

LSTM代表长短期记忆。它是一种扩展了循环神经网络记忆的模型或体系结构。通常,循环神经网络具有“短期记忆”。LSTM将长期记忆引入循环神经网络。它缓解了梯度消失问题,也就是神经网络停止学习的地方,因为给定神经网络内各种权重的更新变得越来越小。它通过使用一系列“门(Gate)”来实现这一点。

LSTM工作单元内有三种类型的门:Input Gate、Output Gate、Forget Gate。每个门就像一个控制读/写的开关,从而将长期记忆功能整合到模型中

6深度学习:

深度学习是受到人类大脑处理数据和创造用于制定决策的模式而诞生的一系列算法,并拓展和提升一个叫做人工神经网络的单模型结构。

01神经网络:

和人类的大脑一样,神经网络也包括了很多神经元。每个神经元接受输入的信号,然后乘以对应的权重,并求和然后输入到一个非线性函数。这些神经元相互堆积在一起,并按照层进行组织。如下图所示:

02反向传播:

神经网络通过大量的数据以及反向传播这样一个迭代算法来学习到目标函数。我们将数据传入网络中,然后它输出结果,接着我们将输出的结果和预期结果进行比较(通过一个损失函数),然后根据两者的差异来调整权重。

不断重复这个过程。调整权重的办法是通过一个非线性优化技术--随机梯度下降来实现的。

在训练一段时间后,网络将可以输出非常好的结果,因此,训练到此结束。也就是说我们得到了一个近似的函数,当给网络一个未知结果的输入数据,网络会根据学习到的近似函数输出结果。

03前向神经网络(Feedforward Neural Networks, FNN):

前向神经网络通常采用的都是全连接层,也就是说每一层的神经元都和下一层的所有神经元连接在一起。这个结构也被叫做多层感知器,最初诞生于1958 年,如下图所示。单层的感知器只能学习到线性分离模型,但是一个多层感知器能够学习到数据之间的非线性关系。

多层感知器在分类和回归任务上有不错的表现,但相比其他的机器学习算法,多层感知器并不容易收敛。另外,训练数据越多,多层感知器的准确率也越高。

04卷积神经网络(Convolutional Neural Networks, CNN)

卷积神经网络采用了一个卷积函数。没有采用层与层之间的神经元都全部进行连接,卷积层只让两层之间部分的神经元进行连接(也就是感受野)。

在某种程度上,CNN 是尝试在 FNN 的基础上进行正则化来防止过拟合(也就是训练得到的模型泛化能力差),并且也能很好的识别数据之间的空间关系。一个简单的 CNN 的网络结构如下图所示

因为能够很好识别数据之间的空间关系,所以CNN 主要用于计算机视觉方面的应用,比如图像分类、视频识别、医学图像分析以及自动驾驶[7],在这些领域上都取得超过人类的识别精度。

此外,CNN 也可以和其他类型的模型很好的结合在一起使用,比如循环神经网络和自动编码器,其中一个应用例子就是符号语言识别。

应用于图像识别、物体识别等计算机视觉、自然语言处理、物理学和遥感科学等领域。

05循环神经网络(Recurrent Neural Networks ,RNN)

循环神经网络非常适合时间相关的数据,并且应用于时间序列的预测。该网络模型会采用反馈的形式,也就是将输出返回到输入中。你可以把它看成是一个循环,从输出回到输入,将信息传递回网络,因此,网络模型具有记住历史数据并应用到预测中的能力。

为了提高模型的性能,研究者修改了原始的神经元,创造了更复杂的结构,比如GRU 单元[9] 和 LSTM 单元[11],分别如下图所示。

LSTM 在自然语言处理的任务中应用得非常广泛,包括翻译、语音生成、从文本生成语音等。

06递归神经网络(Recursive Neural Network )

递归神经网络是另一种形式的循环神经网络,不同点在于递归神经网络是树状的结构,所以它可以在训练集中建模层次结构。

一般会应用在自然语言处理中的语音转文本和语义分析,因为这些任务和二叉树、上下文还有基于自然语言的分析相关联,但是递归神经网络的速度会比循环神经网络更慢。

https://zhuanlan.zhihu.com/p/115325883

https://zhuanlan.zhihu.com/p/116875577

总结

如何选择合适的算法:

必须考虑下面两个问题:一、使用机器学习算法的目的,想要算法完成何种任务,比如是预测明天下雨的概率还是对投标者按照兴趣分组;二、需要分析或收集的数据是什么。

首先考虑使用机器学习算法的目的。如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。确定选择监督学习算法之后,需要进一步确定目标变量类型,如果目标变量是离散型,如是/否、1/2/3、A/B/C等,则可以选择分类器算法;如果目标变量是连续型 的数值,如0.0~100.00、-999~999等,则需要选择回归算法。

如果不想预测目标变量的值,则可以选择无监督学习算法。进一步分析是否需要将数据划分为离散的组。如果这是唯一的需求,则使用聚类算法;如果还需要估计数据与每个分组的相似程度,则需要使用密度估计算法。

在大多数情况下,上面给出的选择方法都能够帮助选择恰当的机器学习算法,但这也并非一成不变。

其次需要考虑的是数据问题。我们应该充分了解数据,对实际数据了解得越充分,越容易创建符合实际需求的应用程序。主要应该了解数据的以下特性:特征值是离散型变量还是连续型变量,特征值中是否存在缺失的值,何种原因造成缺失值,数据中是否存在异常值,某个特征发生的频率如何(是否罕见得如同海底捞针),等等。充分了解上面提到的这些数据我可以缩短选择机器学习算法的时间。

我们只能在一定程度上缩小算法的选择范围,一般并不存在最好的算法或者可以给出最好结果的算法,同时还要尝试不同算法的执行效果。对于所选的每种算法,都可以使用其他的机器学习技术来改进其性能。在处理输入数据之后,每个算法的相对性能也可能会发生变化。一般说来发现最好算法的关键环节是反复试错的迭代过程。

Pyhton用于机器学习和统计学的库:

statsmodel是python中一个很强大的做回归统计的包。

Scikit-learn(以前称为scikits.learn,也称为sklearn)是针对Python 编程语言的免费软件机器学习库。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和DBSCAN,并且旨在与Python数值科学库NumPy和SciPy联合使用。

你可能感兴趣的:(机器学习算法概述)