重新认识决策树系列算法和逻辑斯特回归(一)

来源:互联网 发布:modbus单片机程序 编辑:程序博客网 时间:2024/05/16 08:51

一、决策树通俗到深入理解

我们知道决策树可以用来分类,同样可以用来回归,我们主要其应用于分类的情况,回归其实是相似的。

举一个例子,一家银行要确定是否给用户发信用卡,那么它要根据用户的基本信息来确定是否要发给这个用户,假设我们知道用户的信息如下:

年龄

是否有工作

是否有自己的房子

信贷情况

性别

青年、中年、老年

是、否

是、否

差、非常差、一般、好、非常好

男、女

 

   分类的结果当然是:发信用卡,不发信用卡

   如果学过逻辑回归算法的话,我们知道,它是把这些特征进行加权之后的和然后带入sigmod函数,求出一个概率,然后根据概率的大小来判定分类的结果。

   那么决策树是怎么进行分类的呢?

决策树和人类进行做决策的是否的思维非常相似,我们考虑当前样本的情况的各个特征的值,逐个筛选,最后给出一个决策结果,其过程如下图:

        

例如,银行首先要看这个人有没有房,如果没房子,然后再看这个人年龄在什么阶段,如果是青年,则代表其有潜力,给他发信用卡,如果是中年,则代表可能没有能力去偿还信用卡债务,则不发信用卡。

         决策树的决策过程,其实就是一个个的 if-then规则的组合,从根结点一直到叶子节点的,相当于一条规则的路径。

         我们同样可以从另外一个角度来理解其理论意义,决策树还表示给定特征条件下类的条件概率分布。下面解释原因,我们知道,任何一个机器学习模型都需要从样本中学习模型的参数,决策树同样不例外,当样本训练完毕之后会一个一个的落入到叶子节点,上面我们已经说过从根结点到叶子节点是一个个的规则的组合,规则其实就是条件,也就是说,落入到同一个叶子节点的这些样本,是原始的样本总集中符合了若干条件下(规则路径)的样本子集,那么落入同一个叶子节点的样本可能不完全属于某一类,但是肯定是大部分是同一类,只有少量是另外类别,假设如例子中我们的类别是两类,有可能是10个样本落入叶子节点,8个是发,只有两个是不发,那么这个叶子节点的类别就是发。也就是说落入同样的叶子节点的这些样本可以这样解释,在同样的条件下,发的概率是80%,不发的概率是20%,我们选择那个条件概率最大的类别作为叶子节点的类别,这就是决策树于条件概率的关系。

 

二、特征选择

李航的《统计学习方法》中说,方法=模型+策略+算法,模型其实就是我们说的假设函数,比如线性回归模型,逻辑斯特回归模型,决策树模型等等,策略是损失函数,均方差,最大熵等等,算法就是优化损失函数的方法,比如梯度下降,拟牛顿等等。

         在上面的论述中,我们知道了决策树是一个由很多的中间节点组成的分叉口,最后落入到叶子节点,输出结果。那么问题就来了,我们怎么构建一颗决策树呢?它的损失函数是什么呢?要理解决策树的损失函数,我们先来看看怎样构建一棵决策树。

         构建决策树的算法通常是递归第选取最优的特征,并根据该特征对训练数据分割,各个子数据集有一个最好的分类过程,如果子数据集已经能基本的被分类正确,那么直接返回叶子节点,如果自己还没有被很好的分开,那么继续选取最优的特征对其进行分割,知道所有的样本都被基本正确分类。

         上面的描述太过于正式,说白了就是,我们先选一个好的特征,对样本进行划分,尽量使得属于同一类的样本划分到一块,如果划分之后的某一块的样本基本都属于同一类,则直接把这些样本所在的节点作为叶子节点,如果没划分好,那么继续按照同样的方法进行划分,直到所有的样本都落入叶子节点。

         两个问题:什么样的特征算是最优的,衡量最优的标准是什么?

那就引入了下一节,信息增益(上周参加百度校招,被面试问道这个名词叫什么,无奈我只知道原理,忘记专业名词叫信息增益了,哎)。

三、特征选择的理论信息增益

我们先从熵开始理解,然后介绍条件熵,最后引出信息增益,以及其改进版本信息增益比。

a)   熵

熵的概念:熵表示随机变量不确定性的度量。通俗的想,一个变量随机性怎么度量呢?举个例子,抛硬币,我们知道正反面的概率相同都等于0.5,如果让你去猜,你会说,不行,随机性太大了,完全靠运气。但是如果我告诉你,正面的几率是0.8,反面的几率是0.2,让你猜,你会猜什么?你会想,我肯定猜正面啊,虽然也是有一定的随机性,但是随机性没有刚才各自0.5大啊,我猜正面猜对的几率肯定大,如果我告诉你正面的几率是100%,你还认为它有随机性吗,当然没有,完全确定了,0%呢?自己思考。

通俗来讲,随机变量的概率分布越均匀,随机性就越大。

熵就是从这个角度去定义的,下面我们来看一下从数学角度上定义熵。

设X是一个取有限个值的离散随机变量,其概率分布为:

        

                   那么随机变量的熵就是:

                           

                   指的是,这个熵公式定义就非常符合我们刚才说讲的熵的定义。假设式子中的log以2为底,当全部相等时,熵取最大,同样的当为0或者1时,熵取0

    b)   条件熵

理解了熵的定义,再理解条件熵就简单多了,假设有两个随机变量(X,Y),其联合概率分布为


条件熵指的就是在X已经确定的情况下,Y的不确定性,很简单。但是需要注意一点,定义的确切说法是X给定条件下Y的条件概率分布的熵对X的数学期望,也就是说X取不通的值的时候的Y的概率分布的所有的熵,对他们求期望,其实就是加权和。

        

注意:当我们的熵和条件熵中的概率是由数据估计(特别是极大似然估计)(其实就是样本中得到)得到时,对应的熵和条件熵分别成为经验熵和经验条件熵。

c)   信息增益

大招来了,信息增益是什么呢?信息增益表示得知X的信息之后使得类Y的信息的不确定性减少的程度。理解这句话的意思是要结合熵和条件熵的,不知道X的时候Y的不确定性是熵,那么知道X之后衡量Y的不确定性是条件熵,二者之差就是X对Y的信息增益,就是知道了X之后,Y的不确定性减少了多少。

就好比你要判断一个人的好坏,当你完全不知道这个人的信息的时候,你是没法判断的,只能随机猜了,当你从别人那里得知一些有关这个人的信息,你就不会完全的随机猜了,那么你从别人那里的得知的信息就是条件,你在已知这些条件的基础上进行判断,判断随机性的减少的量就是信息增益。

用数学公式表示就是:

        

注意这里的D指的是训练样本,分别指的是经验熵和经验条件熵。

回归到标题的问题,我们在决策树的构建过程中怎么选择特征的呢?什么样的特征是好的呢?直观上,一个好的特征,应该是能把样本划分的每一块的类别都很纯,也就是每一块的类别都基本相同,那么这和信息增益有什么关系呢?

         想象一下,如果我们在选择特征时,选择了一个和样本的分布无关的特征,划分之后的每一块还是杂乱无章,什么类别都有,而当选择了一个好的特征之后,划分之后的每一块不再是杂乱无章,而是说某些类别在该块的数量比重会变大,相应的其他类别会变小。这个过程中,选择特征并在往下划分的过程,就是条件确定的过程,那么划分之后我们不再是杂乱无章的类别,相应的也就是熵会变小,注意这里的熵是条件熵。

         到这里你应该明白了,我们把原始的杂乱无章的样本,划分为一个个相对较纯的块,划分的越好,变得越纯,就越好,量化它的那就是我们的信息增益了。

接下来,我们看数学描述就不难了。

         设训练数据集D,|D|表示其样本容量,即样本个数。设有K个类别,k = 1,2….,K, ||为属于的样本个数,。设特征A有n个不同的取值{a1,a2,…..an},根据特征A的取值将D划分为n个自己D1,D2,…..Dn,的样本个数,即。记子集中属于类的样本的集合为,即

那么训练数据集D中特征A的信息增益为

        

其中

        

里面的公式看似复杂,其实都是计算的概率,不难理解。

d)        信息增益比

在上面我们说到,按照信息增益来选取特征,但是这样的原则存在一个问题,就是偏向于选取特征值较多的特征,怎么理解呢,特征值越多,那么按照该特征对样本划分的块数越多,那么把不同类别的划分开的几率也就越大,反过来你想想,如果一个样本的特征值只取两个,按照该特征值划分原始样本,很难把样本划分的很纯。

         为了解决这个问题,就出现了信息增益比的概念,我们按照信息增益比的大小来选择特征。

信息增益比: 

注意,在这里的指的不是原始样本在类别上的分布的经验熵,而是原始样本在特征A上的熵,说白了就是你把特征A的取值当成类别,再去求样本集经验熵,它和经验条件熵也不一样,注意区分。

,n是A的取值个数

四、ID3

ID3的详细算法过程不再赘述,注意几个点就行了:

1.      虽然在每一条路径上不能出现相同的特征

2.      该算法是按照信息增益最大的值作为特征选择的

3.      该算法生成叶结点的条件是,节点上所有实例都是同属于一个类,或者基本同属于一个类(信息增益小于阈值),或者没有可选的特征了。

相对应的C4.5和ID3的区别在于他选择特征的方法是信息增益比。

0 0
原创粉丝点击