机器学习的常见模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机器学习任务中常见的方法有:决策树学习,关联规则学习,人工神经网络,深度学习,归纳逻辑设计,支持向量机,聚类,贝叶斯网络,强化学习,表示学习,相似度和度量学习,稀疏字典学习,遗传算法等。
一、决策树学习
决策树学习就是根据数据的属性采用树状结构建立的一种决策模型,可以用此模型解决分类和回归问题。常见的算法包括CART,ID3,C4.5等。可以根据数据集来构建一颗决策树,他的重要任务就是根据数据中所蕴含的知识信息并提取出一系列的规则,这些规则就是树结构的创建过程。
决策树算法
主要是指决策树进行创建中进行树分裂(划分数据集)的时候选取最优特征的算法,他的主要目的就是要选取一个特征能够将分开的数据集尽量的规整,也就是尽可能的纯。最大的原则就是:将无序的数据变得更加有序。
常用的三个方法:
信息增益
增益比率
基尼不纯度
1、信息增益
这里涉及到了信息论的一些概念:某个时间的信息量,信息熵,信息增益等。
a、某事件的信息量:这个事件发生的概率的负对数
b、信息熵就是平均而言,一个事件发生得到的信息量大小,也就是信息量的期望值
c、信息增益
将一组数据集进行划分后,数据的信息熵会发生变化,我们可以通过使用信息熵的计算公式分别计算被划分的子数据集的信息熵并计算他们的平均值(期望值)来作为分割后的数据集的信息熵。新的信息熵相比未划分数据的信息熵的减小值就是信息增益了。假设我们将数据集D划分成k份D1,D2,...,Dk,则划分后的信息熵为:
信息增益就是就两个信息熵的差值
2、增益比率
增益比率是信息增益方法的一种扩展,是为了克服信息增益带来的弱泛化的缺陷。因为按照信息增益的选择,总是会倾向于选择分支多的属性,这样会使得每个子集的信息熵最小。例如给每个数据添加独一无二的ID值特征,则按照这个ID值进行分类是获得信息增益最大的,这样每个自己中的信息熵都是0,但是这样的分类没有任何意义,没有任何泛化能力,类似于过拟合。
因此可以引入一个分裂信息找到一个更合适的衡量数据划分的标准,即增益比率。
分裂信息的公式表示为:
可见如果数据分的越多,分裂信息的值就会越大。这时候把分裂信息的值放到分母上便会中和信息增益带来的弊端。
当然如果分类信息有可能趋近于0这个时候增益比率会变得非常大,所以有时还需要在分母上添加一个平滑函数。
3、基尼不纯度
基尼不纯度的定义:
其中m表示数据集D中类别的个数,pi表示某种类别出现的概率。可见当只有一种类型的时候,基尼不纯度的值为0,此时不纯度最低。
针对划分成k个子数据集的数据集的基尼不纯度可以通过如下式子计算:
由此我们可以根据不纯度的变化来选取最优的树分裂属性。
树分裂
有了选取最佳分类属性的算法就可以根据选择的属性来将数进一步的分裂。所谓的树分裂就是根据选择的属性将数据集划分,然后再划分出数据集中再次利用算法选择子数据
集中的属性。实现的最好方法就是递归。
树分裂停止的条件主要有两个:
一个是遍历完所有的属性,在进行树分裂的时候,如果数据集中已经将所有的属性用尽,便无法继续分裂,这个时候可以选择最终子数据集中的众
数作为最终分类结果放到叶子结点上。
另一个是新划分的数据集中只有一个类型。如果某个节点所有的数据集都是同一个数据类型,那么该类型就作为最终的叶子结点。
二、关联规则学习
关联规则是反映一个事物与其他事物之间的相互依存性和关联性,是数据挖掘的一个重要技术,用于从大量数据中挖掘出有价值的数据项之间的相互关联。简单一句话就是:由于某些事件的发生而引起另外一些事件的发生。
交易号码商品
0豆奶 莴苣
1莴苣 尿布 葡萄酒 甜菜
2豆奶 尿布 葡萄酒 橙汁
3莴苣 豆奶 尿布 葡萄酒
4莴苣 豆奶 尿布 橙汁
评估标准
支持度:几个关联的数据在数据集中出现的次数占总数据集的比重。
例如支持度(豆奶)=0.8;支持度(豆奶,尿布)=0.6
因此可以定义一个最小支持度来排除一些非频繁项集。
置信度:一个数据出现后,另一个数据出现的概率,或者说数据的条件概率,主要定义了某条关联规则的可信程度。
置信度(豆奶->尿布)=支持度(豆奶,尿布)/支持度(豆奶)=0.75,即若某条规则适用于豆奶,则其75%适用于(豆奶,尿布)组合。
提升度:表示含有Y的条件下,同时含有X的概率,与X总体发生的概率之比。
Aprior 算法的简单介绍
输入:数据集D,支持度阈值α
输出:最大的频繁k项集
1、扫描整个数据集,得到所有出现过的数据,作为候选频繁项1项集。k=1,频繁0项集为空集。
2、挖掘频繁k项集
a)扫描数据计算候选频繁k项集的支持度
b)去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集。如果得
到的频繁k项集为空,则直接返回频繁k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
c)基于频繁k项集,连接生成候选频繁k+1项集。
3、令k=k+1,转入步骤二。
从算法中可以看出,每轮迭代都要遍历数据集,所以算法开销很大,尤其是数据集很大,种类很多时,算法效率很低。
三、人工神经网络
目前神经网络有两大主要类型,它们是前馈神经网络(主要是卷积神经网络-CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等子类。深度学习(deep learning)是一种主要应用于神经网络技术以帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,如自动编码器(AutoEncoder)和生成对抗网络(GAN)。
神经网络主要由三个部分组成:神经元、权重、偏置项。
神经元包含权重和偏置项两部分,收到数据之后,经过计算,然后使用激活函数将数据限制在一个范围内。一个神经元可以看做是一个函数。
权重:作为神经网络最重要的部分,用神经网络解决问题是,必须要对该数值进行学习和处理。
偏置项:偏置代表着当权重和数据计算之后应该添加的内容,随着神经网络的不断训练,该数值逐渐趋近于最佳。
除了以上几种之外,神经网络还有其他概念:超参数、激活函数,层(layer)等。
超参数:超参数必须手动设置,如果将神经网络看做一台机器,改变该机器行为的参数就是超参数。
激活函数:激活函数将输入数据局限在一个有限的范围内,大多数情况下会将特别大的数字转换成较小的数字。选择激活函数可以大幅度提高网络的性能,如果没有选择正确的激活函数,也会造成网络性能的大幅度下降。常见的激活函数有:Sigmoid函数,Tanh函数,修正线性单元函数(Relu),Leaky relu等。
层(layer):增加层可以增加神经网络的复杂性,每个层都包含一定数量的神经元。大多数情况下,单元的数量取决于任务以及人工设置,层数过多会造成网络过于复杂,有时会降低其准确率。每个神经网络一定有两个层:输入层和输出层,中间额部分称为隐藏层。