hlayumi的个人空间 https://blog.eetop.cn/hslogic [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

python代--做-基于噪声的自适应正则化方法的图像重建

已有 2049 次阅读2019-4-22 16:17 |系统分类:芯片设计

机器学习中,决策树是一个预测模型;它代表的是对象属性值与对象值之间的一种映射关系。树中每个节点表示某个对象,每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应具有上述属性值的子对象。决策树仅有单一输出;若需要多个输出,可以建立独立的决策树以处理不同输出。

从数据产生决策树的机器学习技术叫做决策树学习通俗说就是决策树

决策树学习也是数据挖掘中一个普通的方法。在这里,每个决策树都表述了一种树型结构,它由它的分支来对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库的分割进行数据测试。这个过程可以递归式的对树进行修剪。当不能再进行分割或一个单独的类可以被应用于某一分支时,递归过程就完成了。另外,随机森林分类器将许多决策树结合起来以提升分类的正确率。

决策树同时也可以依靠计算条件概率来构造。决策树如果依靠数学的计算方法可以取得更加理想的效果。

1.1 决策树的工作原理

决策树一般都是自上而下的来生成的。

选择分割的方法有多种,但是目的都是一致的,即对目标类尝试进行最佳的分割

从根节点到叶子节点都有一条路径,这条路径就是一条“规则”。

决策树可以是二叉的,也可以是多叉的。

对每个节点的衡量:

1) 通过该节点的记录数;

2) 如果是叶子节点的话,分类的路径;

3) 对叶子节点正确分类的比例。

有些规则的效果可以比其他的一些规则要好。

1.2 ID3算法

1.2.1 概念提取算法CLS

1) 初始化参数C={E}E包括所有的例子,为根;

2) 如果C中的任一元素e同属于同一个决策类则创建一个叶子节点YES终止;否则依启发式标准,选择特征Fi={V1, V2, V3,……, Vn}并创建判定节点,划分C为互不相交的N个集合C1C2C3,……,Cn

3) 对任一个Ci递归。

1.2.2 ID3算法

1) 随机选择C的一个子集W (窗口)

2) 调用CLS生成W的分类树DT(强调的启发式标准在后)

3) 顺序扫描C搜集DT的意外(即由DT无法确定的例子)

4) 组合W与已发现的意外,形成新的W

5) 重复2)4),直到无例外为止。

启发式标准:

只跟本身与其子树有关,采取信息理论用熵来量度。

熵是选择事件时选择自由度的量度,其计算方法为:P=freq(Cj,S)/|S|INFO(S)=-SUM(P*LOG(P))SUM()函数是求j1n的和。Gain(X)=Info(X)-Infox(X)Infox(X)=SUM( (|Ti|/|T|)*Info(X)

为保证生成的决策树最小,ID3算法在生成子树时,选取使生成的子树的熵(Gain(S))最小的特征来生成子树。

ID3算法对数据的要求:

1) 所有属性必须为离散量;

2) 所有的训练例的所有属性必须有一个明确的值;

3) 相同的因素必须得到相同的结论且训练例必须唯一。

1.3 C4.5算法

由于ID3算法在实际应用中存在一些问题,于是Quilan提出了C4.5算法,严格上说C4.5只能是ID3的一个改进算法

C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:

1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;

2) 在树构造过程中进行剪枝;

3) 能够完成对连续属性的离散化处理;

4) 能够对不完整数据进行处理。

C4.5算法有如下优点:

产生的分类规则易于理解,准确率较高。

C4.5算法有如下缺点

在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

分类决策树算法:

C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法。

分类决策树算法是从大量事例中进行提取分类规则的自上而下的决策树。

决策树的各部分是:

根:学习的事例集;

枝:分类的判定条件;

叶:分好的各个类。

1.3.1 C4.5ID3算法的改进

1) 熵的改进,加上了子树的信息。

Split_Infox(X)= -SUM( (|T|/|Ti|)*LOG(|Ti|/|T|))

Gain ratio(X)= Gain(X)/Split_Infox(X);

2) 在输入数据上的改进

① 因素属性的值可以是连续量,C4.5对其排序并分成不同的集合后按照ID3算法当作离散量进行处理,但结论属性的值必须是离散值。

② 训练例的因素属性值可以是不确定的,以?表示,但结论必须是确定的。

3) 对已生成的决策树进行裁剪,减小生成树的规模。

The k-means algorithmk平均算法)

k-means algorithm是一个聚类算法,把n个对象根据它们的属性分为k个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小

假设有k个群组Si, i=1,2,...,k。μi是群组Si内所有元素xj重心,或叫中心点

k平均聚类发明于1956年,该算法最常见的形式是采用被称为劳埃德算法(Lloyd algorithm)的迭代式改进探索法。劳埃德算法首先把输入点分成k个初始化分组,可以是随机的或者使用一些启发式数据。然后计算每组的中心点,根据中心点的位置把对象分到离它最近的中心,重新确定分组。继续重复不断地计算中心并重新分组,直到收敛,即对象不再改变分组(中心点位置不再改变)。

劳埃德算法和k平均通常是紧密联系的,但是在实际应用中,劳埃德算法是解决k平均问题的启发式法则,对于某些起始点和重心的组合,劳埃德算法可能实际上收敛于错误的结果。(上面函数中存在的不同的最优解)

虽然存在变异,但是劳埃德算法仍旧保持流行,因为它在实际中收敛非常快。实际上,观察发现迭代次数远远少于点的数量。然而最近,David ArthurSergei Vassilvitskii提出存在特定的点集使得k平均算法花费超多项式时间达到收敛。

近似的k平均算法已经被设计用于原始数据子集的计算。

从算法的表现上来说,它并不保证一定得到全局最优解,最终解的质量很大程度上取决于初始化的分组。由于该算法的速度很快,因此常用的一种方法是多次运行k平均算法,选择最优解

k平均算法的一个缺点是,分组的数目k是一个输入参数,不合适的k可能返回较差的结果。另外,算法还假设均方误差是计算群组分散度的最佳参数。

3 SVM(支持向量机)

支持向量机,英文为Support Vector Machine,简称SV机(论文中一般简称SVM)。它是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。

支持向量机属于一般化线性分类器。它们也可以被认为是提克洛夫规范化(Tikhonov Regularization)方法的一个特例。这种分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区。因此支持向量机也被称为最大边缘区分类器

在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。最大期望经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),也就是将隐藏变量像能够观测到的一样包含在内从而计算最大似然的期望值;另外一步是最大化(M),也就是最大化在步上找到的最大似然的期望值从而计算参数的最大似然估计。步上找到的参数然后用于另外一个 E 步计算,这个过程不断交替进行。

Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则。其原理也从线性可分说起,然后扩展到线性不可分的情况。甚至扩展到使用非线性函数中去,这种分类器被称为支持向量机(Support Vector Machine,简称SVM)。支持向量机的提出有很深的理论背景。支持向量机方法是在近年来提出的一种新方法,但是进展很快,已经被广泛应用在各个领域之中。

SVM的主要思想可以概括为两点:(1) 它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;(2) 它基于结构风险最小化理论之上在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定上界。

在学习这种方法时,首先要弄清楚这种方法考虑问题的特点,这就要从线性可分的最简单情况讨论起,在没有弄懂其原理之前,不要急于学习线性不可分等较复杂的情况,支持向量机在设计时,需要用到条件极值问题的求解,因此需用拉格朗日乘子理论,但对多数人来说,以前学到的或常用的是约束条件为等式表示的方式,但在此要用到以不等式作为必须满足的条件,此时只要了解拉格朗日理论的有关结论就行。

支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。一个极好的指南是C.J.C Burges的《模式识别支持向量机指南》。van der Walt  Barnard 将支持向量机和其他分类器进行了比较。

有很多个分类器(超平面)可以把数据分开,但是只有一个能够达到最大分割。

我们通常希望分类的过程是一个机器学习的过程。这些数据点并不需要是.mathbb{R}^2中的点,而可以是任意.mathbb{R}^p(统计学符号)中或者.mathbb{R}^n (计算机科学符号的点。我们希望能够把这些点通过一个n-1维的超平面分开,通常这个被称为线性分类器。有很多分类器都符合这个要求,但是我们还希望找到分类最佳的平面,即使得属于两个不同类的数据点间隔最大的那个面,该面亦称为最大间隔超平面。如果我们能够找到这个面,那么这个分类器就称为最大间隔分类器

设样本属于两个类,用该样本训练SVM得到的最大间隔超平面。在超平面上的样本点也称为支持向量

SVM的优势:

由于支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(Generalizatin Ability)。支持向量机方法的几个主要优点是:

l   可以解决小样本情况下的机器学习问题;

l   可以提高泛化性能;

l   可以解决高维问题;

l   可以解决非线性问题;

l  可以避免神经网络结构选择和局部极小点问题。

贝叶斯(Bayes)分类器

贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。目前研究较多的贝叶斯分类器主要有四种,分别是:Naive BayesTANBANGBN

贝叶斯网络是一个带有概率注释的有向无环图,图中的每一个结点均表示一个随机变量,图中两结点间若存在着一条弧,则表示这两结点相对应的随机变量是概率相依的,反之则说明这两个随机变量是条件独立的。网络中任意一个结点均有一个相应的条件概率表(Conditional Probability TableCPT),用以表示结点在其父结点取各可能值时的条件概率。若结点无父结点,则CPT 为其先验概率分布。贝叶斯网络的结构及各结点的CPT 定义了网络中各变量的概率分布。

贝叶斯分类器是用于分类的贝叶斯网络。该网络中应包含类结点C,其中C的取值来自于类集合( c1 , c2 , ... , cm),还包含一组结点X = ( X1 , X2 , ... , Xn),表示用于分类的特征。对于贝叶斯网络分类器,若某一待分类的样本D,其分类特征向量为x = ( x1, x2 , ... , x n,则样本属于类别ci 的概率为P( C = ci | X = x) = P( C = c| X1 = x1 , X2 = x 2 , ... , Xn = x n( i = 1 ,2 , ... , m) 

而由贝叶斯公式可得:P( C = ci | X = x) = P( X = x | C = ci) P( C = ci) / P( X = x)

其中,P( C = ci可由领域专家的经验得到,称为先验概率;而P( X = x | C = ciP( X = x) 的计算则较困难;P( C = ci | X = x)称为后验概率

应用贝叶斯网络分类器进行分类主要分成两阶段。第一阶段是贝叶斯网络分类器的学习,即从样本数据中构造分类器;第二阶段是贝叶斯网络分类器的推理,即计算类结点的条件概率,对分类数据进行分类。这两个阶段的时间复杂性均取决于特征值间的依赖程度,甚至可以是NP完全问题(世界七大数学难题之一),因而在实际应用中,往往需要对贝叶斯网络分类器进行简化。根据对特征值间不同关联程度的假设,可以得出各种贝叶斯分类器,Naive BayesTANBANGBN就是其中较典型、研究较深入的贝叶斯分类器。

4.1 朴素贝叶斯(Naive Bayes)分类器

分类是将一个未知样本分到几个预先已知类的过程。数据分类问题的解决是一个两步过程:第一步,建立模型,描述预先的数据集或概念集。通过分析由属性/特征描述的样本(或实例,对象等)来构造模型。假定每一个样本都有一个预先定义的类,由一个被称为类标签的属性确定。为建立模型而被分析的数据元组形成训练数据集,该步也称作有指导的学习。

4.1.1 决策树模型和朴素贝叶斯模型的比较

在众多的分类模型中,应用最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian ModelNBC。决策树模型通过构造树来解决分类问题。首先利用训练数据集来构造一棵决策树,一旦树建立起来,它就可为未知样本产生一个分类。在分类问题中使用决策树模型有很多的优点,决策树便于使用,而且高效;根据决策树可以很容易地构造出规则,而规则通常易于解释和理解;决策树可很好地扩展到大型数据库中,同时它的大小独立于数据库的大小;决策树模型的另外一大优点就是可以对有许多属性的数据集构造决策树。决策树模型也有一些缺点,比如处理缺失数据时的困难,过度拟合问题的出现,以及忽略数据集中属性之间的相关性等。

和决策树模型相比,朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。

朴素贝叶斯模型:

Vmap=arg max{P( Vj | a1,a2...an)}

Vj属于V集合,其中j=1,2,…,N,即共有N类;

Vmap是给定一个example,得到的最可能的目标值;

a1...an是这个example里面的属性/特征,共有n个特征。

Vmap为目标值,就是后面计算得出的概率最大的一个,所以用max 来表示,它意味着该example应该/最可能为得到最大后验概率的那个类,这与前面讲到的贝叶斯分类器是一致的。

将贝叶斯公式应用到 P( Vj | a1,a2...an)中,可得到:

Vmap= arg max{P(a1,a2...an | Vj ) P( Vj) / P (a1,a2...an)}

又因为朴素贝叶斯分类器默认a1...an他们互相独立的,所以P(a1,a2...an)对于结果没有影响(因为所有的概率都要除同一个东西之后再比较大小)。于是可得到:

Vmap= arg max{P(a1,a2...an | Vj ) P( Vj)}

然后,朴素贝叶斯分类器基于一个简单的假定给定目标值时属性之间相互条件独立。换言之,该假定说明给定实例的目标值情况下,观察到联合的a1,a2...an的概率正好是对每个单独属性的概率乘积:P(a1,a2...an | Vj ) = ΠP( ai| Vj )

因此,朴素贝叶斯分类器公式为:Vnb =arg max{P( Vj )ΠP ( ai | Vj )}

邻近算法(k-Nearest Neighbor algorithmk最近邻算法)

下图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3(即实线圆内部),由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5(即虚线圆内),由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

K最近邻(k-Nearest NeighborKNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。

该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。因此可以采用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。

回归树分类器

如果要选择在很大范围的情形下性能都好的、同时不需要应用开发者付出很多的努力并且易于被终端用户理解的分类技术的话,那么Brieman, Friedman, OlshenStone1984)提出的分类树方法是一个强有力的竞争者。

6.1 分类树

在分类树下面有两个关键的思想。第一个是关于递归地划分自变量空间的想法;第二个想法是用验证数据进行剪枝

6.2 递归划分

让我们用变量Y表示因变量(分类变量),用X1, X2, X3,...,Xp表示自变量。通过递归的方式把关于变量Xp维空间划分为不重叠的矩形。首先,一个自变量被选择,比如XiXi的一个值xi,比方说选择xip维空间为两部分:一部分是p维的超矩形,其中包含的点都满足Xi<=xi,另一个p维的超矩形包含的所有点满足Xi>xi。接着,这两部分中的一个部分通过选择一个变量和该变量的划分值以相似的方式被划分。这导致了三个矩形区域。随着这个过程的持续,我们得到的矩形越来越小。这个想法是把整个X空间划分为矩形,其中的每个小矩形都尽可能是同构的或“纯”的。“纯”的意思是(矩形)所包含的点都属于同一类。我们认为包含的点都只属于一个类(当然,这并不总是可能的,因为经常存在一些属于不同类的点,但这些点的自变量有完全相同的值)。

7 Adaboost分类器

Adaboostadaptive boost的缩写,它是一种迭代算法。其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器 (强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器融合起来,作为最后的决策分类器。使用Adaboost分类器可以排除一些不必要的训练数据特征,并将重点放在关键的训练数据上。

该算法其实是一个弱分类算法的提升过程,这个过程通过不断的训练,可以提高对数据的分类能力。

整个过程如下所示:

l  先通过对N个数据的训练样本的学习得到第一个弱分类器;

l  将分错的样本和其他的新数据一起构成一个新的N个数据的训练样本,通过对这个样本的学习得到第二个弱分类器 

l  1.2.都分错了的样本加上其他的新样本构成另一个新的N个数据的训练样本,通过对这个样本的学习得到第三个弱分类器 

l  最终经过提升的强分类器,即某个数据被分为哪一类要通过,……的多数表决。

对于boosting算法,存在两个问题

l  如何调整训练集,使得在训练集上训练的弱分类器得以进行;

l  如何将训练得到的各个弱分类器联合起来形成强分类器。

针对以上两个问题,adaboost算法进行了调整:

l  使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上

l  将弱分类器联合起来,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重

Adaboost算法是FreundSchapire根据在线分配算法提出的,他们详细分析了Adaboost算法错误率的上界,以及为了使强分类器达到要求的错误率,算法所需要的最多迭代次数等相关问题。与Boosting算法不同的是,adaboost算法不需要预先知道弱学习算法学习正确率的下限即弱分类器的误差,并且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,这样可以深入挖掘弱分类器算法的能力。

Adaboost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中 n 为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布。在新的样本分布下,再次对弱分类器进行训练,得到弱分类器。依次类推,经过T次循环,得到T个弱分类器,把这T个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 5

    粉丝
  • 0

    好友
  • 1

    获赞
  • 16

    评论
  • 5260

    访问数

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 03:41 , Processed in 0.022611 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部