赞
踩
决策树是一种分类器,在决策树中,每个非树叶节点代表一个属性上的测试,每个分支代表该测试的一个输出,而每个树叶节点存放一个类标号,树的顶端节点为根节点。
在决策树的分类情况中,不需要任何领域知识或者参数设置,因此适合探索式知识发现,并且,其他的分类方法多需要数据归一化处理,但决策树而言,可以不采用数据归一化,直接进行训练,并且决策树是可以进行可视化,看最后的树的形式是怎么样的,这是他的好处。
决策树的坏处在于可能产生过拟合的现象,并且常用的树剪枝的方法并不提供,设置合理的树深以及叶子节点的个数可以避免过拟合的情况;并且可以选择合适的特征,也即可以利用PCA,ICA,Feature selection方法来得到好的特征;可以先确定树深(max_depth)为3的情况下,然后根据实际情况来增加树深;使用min_samples_split或者min_samples_leaf来控制叶子节点中的采样的数目,避免过拟合,很小的数值情况下,容易过拟合,可以先采用5作为初始的值,然后再根据实际情况来进行判断。
在训练数据为:训练集的规模: 1249,训练集中1类的个数:657,训练集中0类的个数:592。此时选用的是缺省时的默认参数。
第一个是选用的属性选择度量参数,默认为基尼指数。常用的属性选择度量为:信息增益,信息率和基尼指数。在这里有二种,信息增益和基尼指数二种。信息增益是在ID3中使用的,目的在于能够找出区分对元祖进行分类的信息量最小的属性,而且多用于多分支的树的建立,对于基尼指数而言,严格的建立二叉树。对于信息率是在信息增益上的一个改进版本的处理。三种均会偏向于多值属性问题。
第二个参数为划分的策略,若为”best”,则为最优划分的策略来划分,若为“random”,则采用最好的随机策略来划分,,其实这个我也不太懂,就设定为默认参数吧。
第三个参数是最大树深,可以避免过拟合的情况发生,缺省的时候默认为没有最大树深,肯定会过拟合。
第四个参数是最小采样划分,第五个参数是最小采样的叶子节点树,二者均是为了避免过拟合的现象而设立数值。
具体的参数不进行介绍了,其他参数大概很少用到。
在这里,我有点感兴趣的参数是feature_importances_, n_features_.
感觉可以用来分析建立的决策树模型中,特征的评估。
好吧,,那个n_features_, 我把它的用途理解错了,我以为它是可以统计得到最好有几个特征来得到决策树,没想到,不智能,只是统计一下建立决策树的时候有几维特征而已。。。
具体贴一部分程序:
# 得到决策树的分类情况
def _export_graphviz(self):
"""
:return: 在我这边,在类中的函数,之前已经训练好了决策树self._clf_model,调用即可
"""
dot_data = export_graphviz(self._clf_model, out_file=None)
print self._clf.feature_importances_
graph = graphviz.Source(dot_data)
graph.render("tree")
画出的决策树,如图所示:
由上述的决策树,我们可以知道,对于特征2来说,占主要的位置,特征0,1,7,5占一定的比重,其他特征所占比重比较小。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。