这里写自定义目录标题
分类
分类会遇到的问题
underfitting和overfitting
学习不足:model太简单,训练集和测试集的error都很大
过度学习:随node数量上升(训练集正确度上升),测试集的正确度反而下降
-
原因:杂讯(noise point)和资料不足
-
解决:事前修剪、事后修剪(更好)
-
Occam’s Razor:偏向于简单的树,复杂的可能因为杂讯overfitting,所以评估model应包含对复杂度的评估
决策树
计算时间短、建构成本低、较小的树比较好理解、对简单的资料集准确度不亚于其他方法
- Hunt’s Algorithm:最早的决策树
- 其他
项目 | CART | ID3 | C 4.5 |
---|---|---|---|
国籍 | 美 | 澳 | 澳 |
作者 | 布莱曼 | 昆兰 | 昆兰 |
年份 | 1984 | 1986 | 1993 |
分支 | 二分 | 多分 | 多分 |
变数 | x,y不限 | x名目,y名目 | x名目、连续,y名目 |
index | Gini | Entropy,InfoGain | Entropy,InfoGain |
特色 | 医疗(目标为连续型) | 连续最快 | 最常用 |
评估混乱度
- GINI
G I N I ( t ) = 1 − ∑ j ( p ( j ∣ t ) ) 2 GINI(t)=1-\sum_{j}\bigl(p(j|t)\bigr)^2 GINI(t)=1−j∑(p(j∣t))2
G I N I ( s p l i t ) = ∑ i = 1 k n i n G I N I ( i ) GINI(split)=\sum_{i=1}^k \frac{n_i}{n} GINI(i) GINI(split)=i=1∑knniGINI(i) - Entropy
在ID3或是C4.5中会用到,会分的很细很小但是pure
E n t r o p y ( t ) = − ∑ j p ( j ∣ t ) l o g 2 p ( j ∣ t ) Entropy(t)=-\sum_{j} p(j|t)log_2p(j|t) Entropy(t)=−j∑p(j∣t)log2p(j∣t)
G A I N s p l i t = E n t r o p y ( p ) − ( ∑ i = 1 k n i n E n t r o p y ( i ) ) GAIN_{split}=Entropy(p)-\bigl(\sum_{i=1}^k\frac{n_i}{n}Entropy(i)\bigr) GAINsplit=Entropy(p)−(i=1∑knniEntropy(i)) - Error
E r r o r ( t ) = 1 − m a x P ( i ∣ t ) Error(t)=1-maxP(i|t) Error(t)=1−maxP(i∣t)
评估决策树
- 乐观法则: 错 误 数 量 总 数 \frac{错误数量}{总数} 总数错误数量
- 悲观法则: 错 误 数 量 + n o d e 数 量 ∗ 0.5 总 数 \frac{错误数量+node数量*0.5}{总数} 总数错误数量+node数量∗0.5
- REP(reduced error pruning):测试集正确率
- Holdout Method:部分训练、部分测试
- 缺点:
- 资料太少不好分
- 依赖于训练、测试资料集
- 训练集太小则变动会很大
- 训练集太大测试结果不准确
- 缺点:
- Random Subsampling
- 重复使用holdout
- 缺点
- 无法控制用于训练和测试的数量
- 偏向测试集
- Cross-validation
- 一部分用来训练、另一部分用来测试,然后互换(2-fold)
- 极端:leave-one-out(n笔测试资料时的n-fold)
- 优点
- 最大化可以训练的资料
- 测试集和训练集是完全区分的,且涵盖了所有资料
- 缺点
- 计算量很大
- 估计的变动会很大
Weka使用
资料处理
Discretize
把资料离散化
attributeIndices:操作对象
bins:分组数量
useEqualFrequency:范围等宽还是数量相等
建树
test options
use training set:用训练集直接测试
supplied test set:使用测试集
cross-validation:交叉测试
percentage split:部分训练、部分测试
右键
save model:保存模型
re-evaluate model on current test set:用目前提供的test set重新测试
visualize-tree:建树视觉化
save result buffer:保存结果
J48
C4.5 Java version8
可以对nominal和continuous分类
confidenceFactor:可以被忽略的百分比
minNumObj:可以被忽略的个数
unPruned:是否修剪
选择要用的属性
在select attributes下,选择方法(cfs或是infoGain等)产生结果,再对原始资料进行处理