机器学习与数据挖掘数据结构和算法分析Python语言与信息数据获取和机器学习

决策树和随机森林

2017-05-17  本文已影响1075人  michaelgbw

随机森林和GBDT算法的基础是决策树

而建立决策树的算法由很多,ID3,C4.5,CART等,


其中P(Ui)即是P(ui)是类别i出现概率,而计算整个属性的信息增益则是:

具体表示为代码:

''' 数据是一组特征值加一个lable'''
def entropy(class_probabilities):
    return sum(-p * math.log(p, 2)
        for p in class_probabilities 
        if p)

def class_probabilities(labels):
    total_count = len(labels)
    return [count / total_count
        for count in Counter(labels).values()
        ]

def data_entropy(labeled_data):        
    labels = [label for _, label in labeled_data]
    probabilities = class_probabilities(labels)
    return entropy(probabilities)

def partition_entropy(subsets):
    """find the entropy from this partition of data into subsets""" 
    total_count = sum(len(subset) for subset in subsets)
    return sum( data_entropy(subset) * len(subset) / total_count
                for subset in subsets )

然后根据取数据的信息增益最大的作为数的root节点,将其他属性进行分支,若该分支中存在不同lable,则递归计算最大信息增益。

c4.5是ID3的一种改进,既能处理标称型数据,又能连续型数据。为了处理连续型数据,该算法在相应的节点使用一个属性的阈值,利用阈值将样本划分成两部分,还有就是可以处理缺失某属性的数据,属性值缺失的样本在计算熵增益时被忽略。再就是分类完成后进行剪枝。

不同于c4.5和ID3:

随机森林

随机森林是一种统计学习理论,其随机有两个方面:首先在训练的每一轮中,都是对原始样本集有放回的抽取固定数目的样本点,形成k 个互不相同的样本集。第二个点是:对于每一个决策树的建立是从总的属性中随机抽取一定量的属性作为分裂属性集,这样对于k个树分类器均是不相同的。由随机生成的k个决策树组成了随机森林。

对于每一个决策树来说,其分裂属性是不断地选取具有最大信息增益的属性进行排列。整个随机森林建立后,最终的分类标准采用投票机制得到可能性最高的结果。

随机森林是一个最近比较火的算法,它有很多的优点

在建立每一棵决策树的过程中,有两点需要注意 - 采样与完全分裂。首先是两个随机采样的过程,random forest对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后进行列采样,从M个feature中,选择m个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤 - 剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。
按这种算法得到的随机森林中的每一棵都是很弱的,但是大家组合起来就很厉害了。我觉得可以这样比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域的专家(因为我们从M个feature中选择m让每一棵决策树进行学习),这样在随机森林中就有了很多个精通不同领域的专家,对一个新的问题(新的输入数据),可以用不同的角度去看待它,最终由各个专家,投票(vote)得到结果。
需要注意的是,随机森林中的单个决策树是没有意义的

GBDT

GBRT(Gradient Boost Regression Tree)是一个应用很广泛的算法,可以用来做分类、回归。在很多的数据上都有不错的效果。我们下次接着共同学习。

上一篇下一篇

猜你喜欢

热点阅读