小强学AI之 - 3决策树(Decision Tree)

简介

决策树也是一种监督学习的算法,和贝叶斯,SVM类似。
既然是“树”,很自然的想到了二分。其实决策树就是根据特征值对数据集进行二分,二分后的节点称为了节点。对于每个节点上的样本可以再根据下一个特征值继续进行二分。以此类推。直到节点样本数量达到分类器参数值min_samples_split。
当然,这里只是形象的理解,其实,决策树还有更牛的地方,就是它可以计算最合理的使用特征值的顺序。以达到最佳的分类效果(后面会提到相关的两个概念,熵和信息增益)。

举例


如图,图中的数据并不能线性分割,此时,可以增加特征阈值,实现数据的二分。二分后的数据均可再线性可分。如下:


用法

用法参考:
sklean-Decision Tree
使用方法如下:

# 从sklearn库导入类tree
from sklearn import tree

# 构造决策树分类器,最小样本分割数设置为40
clf = tree.DecisionTreeClassifier(min_samples_split=40)

# 训练分类器(或者说对分类器进行数据拟合)
clf.fit(features_train, labels_train)

# 提供测试集查看分类器的精度
pred = clf.predict(features_test)

# 导入sklearn库,metrics类中的accuracy_score方法
from sklearn.metrics import accuracy_score

# 计算分类器的精度
acc = accuracy_score(pred, labels_test)
print acc
决策树分类器参数:
class sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_split=1e-07, class_weight=None, presort=False)

其中,最小分割样本min_samples_split是指,当节点样本数小于等于此值时,将不再对此节点进行分类
实验证明,min_samples_split过小时,会导致过拟合,进而导致最后的精度反而降低。所以要合理选择参数min_samples_split的值。(PS.又是调参)

entropy熵,它是测量样本中的不纯度(杂质度)。
引入其它变量特征可用来提高样本纯度。
熵公式:


其中,Pi是样本中,类i的比例,然后对所有类求和。
举例:(假设不考虑最小样本分割数量)在节点Nx有4个样本,样本中分别有2个样本属于A,2个样本属于B。那么,节点Nx的熵为:

熵与纯度是反义的。
有两种极端情况:
1.所有样本属于同一类,熵为0,纯度最高
2.所有样本均匀分布在各类中,熵为1,纯度最低

信息增益

熵是如何影响决策树绘制边界的。答案是,信息增益。
信息增益(Information Gain)是指,父项熵减去分割父项后生成的子项的熵的加权平均,用公式表示如下:


决策树的原理。决策树在进行训练时,考虑所有的训练样本和可用的所有的特征,然后根据特征计算信息增益,找到信息增益最大的特征,然后以这个特征进行分割。
同样举上面的例子:
我们已经知道节点Nx的熵为1,假设以Nx节点为父节点,依据特征Feature1进行对父项分割,得到子节点Ny和Nz。其中Ny中有2个样本属于A,1个样本属于B。然后,在Nz节点只有一样本,而这个样本属于B。
那么,节点Ny的熵是:


由于节点Nz只有一个样本,所有样本属于同一类,熵为0。
那么,如果根据Feature1分类的话,信息增益为:


假设,
我们使用特征Feature2分类,得到的信息增益为0.1
使用特征Feature3分类,得到的信息增益为1
那么,决策树可能会选择按特征Feature3分类。
决策树在进行训练时就是在计算最大的信息增益。它要考虑所有的样本数据及所有的特征。所以速度会慢。

对于参数criterion(规则),决策树分类器默认使用的是规则是gini。这也是一个测试不纯度的指标。也支持熵和信息增益。但需要手动输入。

所以决策树中的默认值gini还是和熵entopy的用法还不太一样的。 但两种效果都不错。

特点

训练数据的特征量越多,决策树就会越复杂。也容易过拟合。
训练时间也就越长。通常精度会越高。但过拟合的话精度反而会降低,甚至得不到想要的结果。所以,一定要防止过拟合。

总结

至此学习了三种监督学习算法。
其实还有下面几种:

  1. k-nearest neighbors,非常简单直接,易于理解,适合新手
  2. ataboost非常强大
  3. random forest
    后面两种是集成方法。它们一般是在很多决策树基础上建立的元分类器。所有会有很多分类器集合在一起,做出最后的决定。比如,ataboost需要结合决策树使用,建立在决策树基础上。
    后两种算法类似,只是算法有点不同。

以上算法都来自于scikit-learn库。
具体可参考:
K-NEAREST NEIGHBORS IN SCIKIT-LEARN
sklearn - 1.11. Ensemble methods集成方法
sklearn - sklearn.ensemble.AdaBoostClassifier adaboost分类器
sklearn - 3.2.4.3.1. sklearn.ensemble.RandomForestClassifier随机森林分类器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容