机器学习知识梳理二

常见模型和算法

一、线性模型 Y=WX + b  简单,易于解释(同时受多个因素的影响),可以被复杂算法使用

1、求解方法,使用最小二乘法(线性回归) 也叫感知机

2、广义线性回归:线性模型的函数 y = g(WX+b)

3、越阶函数 y = 1/(1 + e^-z)   对数线性回归 近似模拟对数几率回归

4、线性判别分析 LDA(linear discriminant analysis) 设法将样本投影到一条直线上,利用协方差和均值的点估计来计算

5、最大熵原理:分布未知时认为是均匀分布(先考虑已知的约束),这时随机变量的不确定性最大,熵最大(信息论里代表信息量最大)。在这种情况下,预测的风险最小。

6、最大熵模型也是对数线性模型,求解时可以使用 拟牛顿法

二、决策树,即树形模型(结果是条件概率的符号模型)

1、本质是把所有的关键情况归纳成规则,比如在某些属性满足什么条件时,做什么事情(很直观的数据符号上的规约)

2、构建的过程:递归的选择属性,拆分条件(树枝),剪枝

3、选择属性的依据,信息增益:对分类的效果影响更大的特征

4、ID3: 每次取信息增益最大的特征来进行分类递归,喜欢使用id等更细的划分,但是会导致过拟合

5、C4.5 对ID3的改进,用信息增益比 作为选择特征的依据 

6、CART算法

三、神经网络,即网状和层次化的模型

1、神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

2、单个神经元 多输入单输出,超过阈值就激活,为了使用导数等微分方法,阶跃函数为 y = 1/(1 + e^-z)

3、感知机: 只有一层输入一层输出

4、多层前馈神经网络:一个输入层,多个隐藏层,一个输出层;层内节点间无连接,前一层全连接后一层,没有跨层连接

multi-layer feedforward neural networks

5、误差逆传播算法 error backpropagation 广义感知器学习规则 递归处理每个参数,使得每一次迭代都更新一遍所有的参数。

一次迭代的过程:使用一个点,从输入层计算到输出层,反向计算误差(从输出层开始),根据误差调整前一层网络的参数值。

6、累积BP算法,一次迭代把所有样本的值都算一遍。

7、证明:隐层足够多,可以以任意精度模拟任意复杂的连续函数;至于需要多少个还不确定

8、表达能力足够,但是有过拟合情况,解决方式:添加一个惩罚项 wi^2

9、跳出局部最小的办法:设置多组初始值;随机梯度;模拟退火;遗传算法(都缺少理论保证)

10、RBF radial basis function 径向基函数,单隐层前馈网络,激活函数为径向

足够多神经元时,可以逼近任意连续函数

ART adaptive resource theary 竞争型学习,赢者通吃

SOM self-organizing map 自组织映射

级联相关网络 网络结构也是变化的(数据少时易过拟合)

elman网络 递归神经网络 可以反向输入,用于实现序列

11、与svm相比,理论不够清楚,实践中有大量技巧(trick)

四、深度学习(特征或表示学习) DBN RBM CNN 图形、声音等的效果很好

1、参数越多,需要的数据越多,计算越复杂,云计算和大数据提供了支撑。

2、层数非常多时没有办法使用BP(不收敛)

3、预训练(每次只训练一层)+BP  先找局部最优,再整体微调

4、卷积神经网络 CNN 利用权共享加速学习  本质是逐层规约,特征表达,最后的形式就变得很简单,可以说是 特征提取的自动化

五、支持向量机(文本处理的效果很好)

1、数据线性可分时,可以通过一个平面来划分所有数据

2、学习策略:间隔最大化 r = min{yi(w.xi + b)/||w||} 

3、支持向量:取到最小几何间隔的那个点

4、数据不满足线性可分,可以投影到高维空间,在高维空间(特征空间)是线性可分的(一定可以找到这样的空间)。

这个到特征空间的映射叫做核函数,核函数的质量决定了整个的效果和效率。

5、常用核函数:线性、多项式、高斯、拉普拉斯、sigmoid

6、数据不满足线性可分(有少数的奇异点),可以添加一个惩罚项

7、支持向量回归(support vector regression):设立一个隔离带

8、svm学习得到的最优模型都可以表示为核函数的线性组合,这种解决和扩展svm的方法叫做 核技巧

六、贝叶斯分类器

1、采用贝叶斯定理来进行分类,困难是后验概率需要多个属性的综合影响

2、朴素贝叶斯:假设各个属性是独立影响结果的分布的

3、半朴素贝叶斯:一个属性只和另外一个属性有关联

4、贝叶斯网络,用有向无环图来描述属性间的依赖关系

5、EM算法:解决观察值不完整的问题,即某些属性的条件是未知的

七、集成学习

1、基本想法是组合多个简单的分类器,要保证简单分类器的准确性和多样性。实际中,因为样本一样,很难同时满足2点。

2、boosting 先训练一个,之后下一个重点关注上一个分类错误的样本,最后线性组合所有分类器

3、bagging:保证独立的方法是数据的独立。思路:每次随机抽取之后放回

4、随机森林:构建决策树时选择的属性不是最优的,而是随机子集里最优的  ---------- 效果很好

5、组合策略:简单平均、加权平均;绝对多数投票、相对多数投票;再次学习法(深度学习)

八、聚类

1、让数据物以类聚,即生成出类别的概念

2、对于有序的属性(如数值类的)可以使用各种距离来标记类;对于无序的数据,使用VDM方法

3、原型聚类:k均值,随机初始化,每次添加完数据之后,重新计算中心;LVQ:假设带标记;高斯混合分布

4、密度聚类:SCAN

5、层次聚类:用树形结构

九、降维与度量

1、k近邻学习:从训练集(假定已经包含所有的类别)周围的k个邻居来划分测试数据的类别

2、降维:数据本身在高维度,实际有用的是低维度,低维度便于计算距离和发现规律。可以使用变换矩阵,特征向量等来表达距离的不变性

3、PCA principal component analysis 主成分分析, 取出前k个特征向量

4、核化线性降维

5、流形学习:利用拓扑学

6、度量学习

十、特征选择与稀疏学习

1、特征(属性)太多,需要先找到那些特征有用?

2、过滤式选择,包裹式选择

十一、深度学习 Unsupervised Feature Learning

http://blog.csdn.net/zouxy09/article/details/8775524

1、人的认知模式:理论认为人的认知模式,处事方式是存储在神经元与神经元之间的连接上的,称为“神经元连接权重”,人脑神经布局类似网状结构,神经元是网的交叉点,权重就是网的连线,这些连线有粗有细,也就是权重的大小不同。而人类的学习能力就是去不断改变权重的值,从而改变自己的认知模式和处事方式,简单的说,不同人对同一个外部事物有不同看法,就是因为同样的初始信号,在不同粗细的神经元连线放大或缩小后,变成了侧重点不同的最终信号

2、人脑大概有亿级层数的神经元(人脑是多任务处理器集合,某些特定的任务如人脸识别,只需用到大脑的某个局部)。于是人们会猜想,更多的隐藏层是否会有更高的学习效果。事实证明的确如此,随着隐藏层数的增加,一些图片,语音的识别率越来越高。(更加抽象的知识的表达)

3、特点:是一个不断迭代、不断抽象的过程,高层的特征是低层特征的组合。1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服。“深度模型”是手段,“特征学习”是目的。

4、神经网络算法:对人类学习能力的一种模拟算法,其特点不是找到函数映射关系或联合分布律,而是将类似于函数映射的关系,通过神经网络的节点权值和偏置来记录和表达,其真正的函数解析式很多时候是无法直接写出的(所以叫做ai黑盒)

5、优势:别的机器学习方法最难的是降维、特征选择和标记等预处理,但是深度学习的特点是自动的提取分类需要的低层次或者高层次特征(用大数据去学习feature)。训练出来的模型就可以很好的表达原始数据了。这时候我们对训练好的数据再在有监督的数据上做进一步训练,就可以满足新的需求。(适合于 图像、语音等 特征不明显的问题)。

6、缺点:隐藏层数越多训练过程也越复杂,且误差会在多层传递的时候衰减,导致Gradient Vanish问题,最终导致训练结果收敛在局部最优或者难以收敛。

7、与神经网络的关系:dl的创造性在自编码和稀疏性,自编码是说dl把输入当作训练数据,输出还是训练数据,这样假如中间节点数比较少的话,相当于对数据起了个压缩的作用(想象输入是文件,中间层相当于rar压缩文件,输出还是输入文件,这样只要知道中间层rar的信息,和整个模型的结构,就可以知道输入是什么了,这个就相当于压缩文件)。另一个是稀疏性,就是说假如我想让中间节点多一点,又不想让训练过于overfit,可以加一个限制,假设每个训练数据都激活尽量少的中间层节点(相当于模拟大脑,大脑对每个输入不可能所有神经元都起反应,肯定也是少量神经元有反应)。

8、BP算法的问题:不能用BP,因为 对于一个deep network(7层以上),残差传播到最前面的层已经变得太小,出现所谓的gradient diffusion(梯度扩散)。

(1)梯度越来越稀疏:从顶层越往下,误差校正信号越来越小;

    (2)收敛到局部最小值:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生);

    (3)一般我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的的数据中学习;

    9、deep learning训练过程

一是每次训练一层网络,二是调优,使原始表示x向上生成的高级表示r和该高级表示r向下生成的x'尽可能一致。方法是:

1)首先逐层构建单层神经元,这样每次都是训练一个单层网络。

2)当所有层训练完后,Hinton使用wake-sleep算法进行调优。

       将除最顶层的其它层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其它层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的结点。比如顶层的一个结点表示人脸,那么所有人脸的图像应该激活这个结点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。

1)wake阶段:认知过程,通过外界的特征和向上的权重(认知权重)产生每一层的抽象表示(结点状态),并且使用梯度下降修改层间的下行权重(生成权重)。也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的”。

2)sleep阶段:生成过程,通过顶层表示(醒时学得的概念)和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”。

10、常用模型或者方法

思路:添加一个encode和decode的过程

1》Sparse Coding稀疏编码:找到稀疏基向量、使用EM算法

2》Denoising AutoEncoders降噪自动编码器:输入数据里添加噪声,让encode泛化能力增强

3》Restricted Boltzmann Machine (RBM)限制波尔兹曼机:隐藏层 和输入层满足概率的分布

4》Deep Belief Networks深信度网络

5》Convolutional Neural Networks(CNN)卷积神经网络 是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。

十二 总结

1、关系:

线性->对数线性->最大熵

决策树->C4.5->CART

神经网络->BP->深度学习->DBN RBM CNN

线性可分->SVM->核技巧 

朴素贝叶斯->半朴素贝叶斯->贝叶斯网络->EM算法

boosting + bagging->随机森林

降维->特征选择与稀疏学习->聚类->深度学习

2、简单概括

svm、贝叶斯、深度学习

SVM:算法复杂、数据依赖小 神经网络:算法不复杂,依赖数据(不是公式化而是类似于形象思维)

猜你喜欢

转载自eric-weitm.iteye.com/blog/2351513