经典监督学习方法

生成算法尝试去找这个数据到底是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,哪个类别最有可能产生这个信号,这个信号就属于那个类别。

判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后模型学习到差别之后简单地对给定的一个信号进行分类。

 

在机器学习中,无监督学习(Unsupervised learning)最典型的就是聚类,事先不知道样本的类别,通过某种办法,把相似的样本放在一起归位一类;而监督学习(Supervised learning)就是有训练样本,带有属性标签,也可以理解成样本有输入有输出,意味着输入和输出之间有一个关系,监督学习算法就是要发现和总结这种“关系”。

以下是一些常用的监督型学习方法:

一. K-近邻算法(k-Nearest Neighbors,KNN)

算法的步骤为:

(1)计算测试数据与各个训练数据之间的距离;

(2)按照距离的递增关系进行排序;

(3)选取距离最小的K个点;

(4)确定前K个点所在类别的出现频率;

(5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

二. 决策树(Decision Trees)

决策树是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置。

构造决策树的关键步骤是分裂属性。所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。分裂属性分为三种不同的情况:
1、属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。
2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。
3、属性是连续值。此时确定一个值作为分裂点split_point,按照 >split_point 和 <=split_point 生成两个分支。

构造决策树的关键性内容是进行属性选择度量,属性选择度量算法有很多,这里介绍ID3和C4.5两种常用算法。

(1) ID3算法

从信息论知识中我们直到,期望信息越小,信息增益越大,从而纯度越高。所以ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。

熵(entropy)是描述信息不确定性(杂乱程度)的一个值。设S是用类别对训练元组进行的划分,那么S的信息熵的定义如下:

其中,n是类别的数目,p(xi)表示选择xi类别的概率(可用类别数量除以总数量估计)。

现在我们假设将S按属性A进行划分,则S的条件信息熵(也就是A对S划分的期望信息)为:

 

其中,属性A拥有m个类别(例如,属性A是体重,有轻、中、重三个选项,那么m=3),p(tj)表示类别tj(属性A中所有具有第j个特性的所有数据)的数量与S总数量的比值,H(tj)表示子类别tj的熵,即S中拥有属性tj的子元组划分的熵。

而信息增益(Information gain)即为两者的差值:

ID3算法就是在每次需要分裂时,计算每个属性的增益率,然后选择增益率最大的属性进行分裂。如此迭代,直至结束。这里有一个ID3算法的实例过程

对于特征属性为离散值,可以直接使用ID3算法进行划分。对于特征属性为连续值,可以如此使用ID3算法:
先将D中元素按照特征属性排序,则每两个相邻元素的中间点可以看做潜在分裂点,从第一个潜在分裂点开始,分裂D并计算两个集合的期望信息,具有最小期望信息的点称为这个属性的最佳分裂点,其信息期望作为此属性的信息期望。

(2) C4.5算法

ID3算法存在一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。严格上说C4.5是ID3的一个改进算法。

C4.5首先定义了分裂信息(Split Information):

  

其中各符号意义与ID3算法相同,然后,增益率(Gain Ratio)被定义为:

  

C4.5选择具有最大增益率的属性作为分裂属性(连续属性要用增益率离散化)。C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

 

在决策树构造过程中,如果所有属性都作为分裂属性用光了,但有的子集还不是纯净集,即集合内的元素不属于同一类别。在这种情况下,由于没有更多信息可以使用了,一般对这些子集进行“多数表决”,即使用此子集中出现次数最多的类别作为此节点类别,然后将此节点作为叶子节点。

在实际构造决策树时,通常要进行剪枝,这是为了处理由于数据中的噪声和离群点导致的过分拟合问题。剪枝有两种:先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造;后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。悲观错误剪枝PEP算法是一种常见的事后剪枝策略。

三. 朴素贝叶斯(Naive Bayesian)

贝叶斯分类是一系列分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。朴素贝叶斯算法(Naive Bayesian) 是其中应用最为广泛的分类算法之一。朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。朴素贝叶斯的基本思想是对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

首先给出条件概率的定义,P(A | B)表示事件A在B发生下的条件概率,其公式为:

  

贝叶斯定理用来描述两个条件概率之间的关系,贝叶斯定理公式为:

  

朴素贝叶斯分类算法的具体步骤如下:

(1)设x = {a1,a2,...,am}为一个待分类项,a1,a2,...,am为x的m个特征属性;

(2)设有类别集合C = {y1,y2,...,yn},即共有n个类别;

(3)依次计算x属于各项分类的条件概率,即计算P(y1 | x),P(y2 | x),… ,P(yn | x):

注意,算法的下一步骤是对比这些结果的大小,由于各项分母都是P(x),所以分母不用计算。分子部分中P(yn)和P(ai | yn)都是通过样本集统计而得,其中P(yn)的值为样本集中属于yn类的数量与样本总数量之比,P(ai∥yn)的值为yn类中满足属性ai的数量与yn类下样本总数量之比。

这样的计算方式符合特征属性是离散值的情况,如果特征属性是连续值时,通常假定其值服从高斯分布(也称正态分布),高斯分布即:

   

那么P(ai | yn)的值为:

  

其中,ηyn 和 σyn 分别为训练样本yn类别中ai属性项对应的高斯分布的均值和标准差。

对于P(a | y)=0的情况,当某个类别下某个属性项划分没有出现时,就是产生这种现象,这会令分类器质量大大降低。因此引入Laplace校准,对每个类别下所有属性划分的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,也避免了乘积为0的情况。

(4)比较(3)中所有条件概率的大小,最大的即为预测分类结果,即:

四. 逻辑回归(Logistic Regression)

我们知道,线性回归就是根据已知数据集求一线性函数,使其尽可能拟合数据,让损失函数最小,常用的线性回归最优法有最小二乘法和梯度下降法。而逻辑回归是一种非线性回归模型,相比于线性回归,它多了一个sigmoid函数(或称为Logistic函数)。逻辑回归是一种分类算法,主要用于二分类问题。

对于线性回归,损失函数是欧式距离指标,但这样的Cost Function对于逻辑回归是不可行的,因为在逻辑回归中平方差损失函数是非凸,我们需要其他形式的Cost Function来保证逻辑回归的成本函数是凸函数。我们选择交叉熵损失函数。

与线性回归相似,可以采用梯度下降法寻优,也可以采用其他方法。

 

题外话,对数似然函数与交叉熵损失函数的联系:

对数似然函数:

交叉熵损失函数:

x 表示原始信号,z 表示重构信号。(损失函数的目标是最小化,似然函数的目标则是最大化,二者仅相差一个负号)。

 

https://blog.csdn.net/zxrttcsdn/article/details/79641054

https://www.leiphone.com/news/201704/w6SbD8XGrvQ9IQTB.html

https://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html

https://blog.csdn.net/lanchunhui/article/details/75433608

posted @ 2019-08-08 15:39  薄层  阅读(1931)  评论(0编辑  收藏  举报