机器学习任务中常见的方法有:决策树学习,关联规则学习,人工神经网络,深度学习,归纳逻辑设计,支持向量机,聚类,贝叶斯网络,强化学习,表示学习,相似度和度量学习,稀疏字典学习,遗传算法等。
一、决策树学习
决策树学习就是根据数据的属性采用树状结构建立的一种决策模型,可以用此模型解决分类和回归问题。常见的算法包括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)和循环神经网络(R
NN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等子类。深度学习(deep learning)是一种主要应用于神经网络技术以帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,如自动编码器(AutoEncoder)和生成对抗网络(GAN)。
神经网络主要由三个部分组成:神经元、权重、偏置项。
神经元包含权重和偏置项两部分,收到数据之后,经过计算,然后使用激活函数将数据限制在一个范围内。一个神经元可以看做是一个函数。
权重:作为神经网络最重要的部分,用神经网络解决问题是,必须要对该数值进行学习和处理。
偏置项:偏置代表着当权重和数据计算之后应该添加的内容,随着神经网络的不断训练,该数值逐渐趋近于最佳。
除了以上几种之外,神经网络还有其他概念:超参数、激活函数,层(layer)等。
超参数:超参数必须手动设置,如果将神经网络看做一台机器,改变该机器行为的参数就是超参数。
激活函数:激活函数将输入数据局限在一个有限的范围内,大多数情况下会将特别大的数字转换成较小
的数字。选择激活函数可以大幅度提高网络的性能,如果没有选择正确的激活函数,也会造成网络性能的大幅度下降。常见的激活函数有:Sigmoid函数,Tanh函数,修正线性单元函数(Relu),Leaky relu等。
层(layer):增加层可以增加神经网络的复杂性,每个层都包含一定数量的神经元。大多数情况下,单元的数量取决于任务以及人工设置,层数过多会造成网络过于复杂,有时会降低其准确率。每个神经网络一定有两个层:输入层和输出层,中间额部分称为隐藏层。
神经网络可以应用在很多地方,主要应用领域有图像和视频,语音和语言,医疗和游戏等。
四、深度学习
深度学习是机器学习的一种实现技术,虽然深度学习是机器学习的一种,但是深度学习利用深度的神经网络,将模型处理得更加复杂,从而使模型对数据的理解更加深入。
同机器学习一样,深度机器学习方法也分为有监督和无监督之分。不同的学习框架下简历的学习模型不同。例如卷积神经网络(CNN)就是深度的监督学习下的一种机器学习模型,而深度置信网络(DBN)就是一种无监督学习下的机器学习模型。
五、归纳逻辑程序设计
归纳逻辑程序设计(ILP) 是一种符号规则学习方法,它在一阶规则学习中引入了函数和逻辑表达式嵌套,并以一阶逻辑为表达语言。ILP 让机器学习系统具备更为强大的表达能力,同时它可看作是用机器学习的应用,主要用于解决基于背景知识的逻辑程序归纳,相关规则可被 PROLOG 等逻辑程序设计语言直接使用。
ILP相关设计架构如下:
正面例子+负面例子+背景知识=>假设
ILP所学模型基于一阶逻辑符号规则,而非难以理解的黑箱模型,学习得到的模型可基于个体间的关系建模,而非只对个体的标记进行预测。
六、支持向量机
支持向量机SVM是一种二分类模型,他的基本模型是定义在特征空间上的间隔最大的线性分类器。间隔最大是与感知机之间的差别;SVM还包含核技巧,这使得SVM实质上称为一种非线性模型。由于SVM的学习策略是间隔最大化,所以可以成为一个求解凸二次规划问题,也等价于正则化的合页损失函数的最小化问题。
七、聚类
聚类是一种发现数据中相似体的技术。聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程。一个聚类就是一些数据实例的集合,集合内相似,集合外不同。
八、贝叶斯网络
贝叶斯网络是有一个有向无环图(DAG)和条件概率表(CPT)组成,通过一个有向无环图来表述一组随机变量跟他们的条件依赖关系。它通过条件概率分布来参数化,每一个节点都通过P(node|Pa(node))来参数化,其中Pa(node)表示网络中的父节点。下图为一个简单的贝叶斯网络

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。