Matlab中的决策树

11 matlab machine-learning decision-tree

我在Matlab中看到了帮助,但是他们提供了一个示例,但没有解释如何使用'classregtree'函数中的参数.任何帮助解释'classregtree'与其参数的使用将不胜感激.

Amr*_*mro 34

函数classregtree的文档页面是不言自明的......

让我们回顾一下分类树模型的一些最常见的参数:

  • x:数据矩阵,行是实例,cols是预测属性
  • y:列向量,每个实例的类标签
  • 分类:指定哪些属性是离散类型(而不是连续)
  • 方法:是否生成分类或回归树(取决于类类型)
  • names:给出属性的名称
  • prune:启用/禁用减少错误的修剪
  • minparent/minleaf:允许指定节点中的最小实例数(如果要进一步拆分)
  • nvartosample:用于随机树(考虑每个节点K随机选择的属性)
  • 权重:指定加权实例
  • 成本:指定成本矩阵(各种错误的罚分)
  • splitcriterion:用于在每次拆分时选择最佳属性的标准.我只熟悉基尼指数,它是信息增益标准的变体.
  • priorprob:明确指定先前的类概率,而不是从训练数据计算

一个完整的例子来说明这个过程:

%# load data
load carsmall

%# construct predicting attributes and target class
vars = {'MPG' 'Cylinders' 'Horsepower' 'Model_Year'};
x = [MPG Cylinders Horsepower Model_Year];  %# mixed continous/discrete data
y = cellstr(Origin);                        %# class labels

%# train classification decision tree
t = classregtree(x, y, 'method','classification', 'names',vars, ...
                'categorical',[2 4], 'prune','off');
view(t)

%# test
yPredicted = eval(t, x);
cm = confusionmat(y,yPredicted);           %# confusion matrix
N = sum(cm(:));
err = ( N-sum(diag(cm)) ) / N;             %# testing error

%# prune tree to avoid overfitting
tt = prune(t, 'level',3);
view(tt)

%# predict a new unseen instance
inst = [33 4 78 NaN];
prediction = eval(tt, inst)    %# pred = 'Japan'
Run Code Online (Sandbox Code Playgroud)

树


更新:

上述classregtree课程已经过时,并被R2011a中的课程ClassificationTreeRegressionTree课程所取代(参见R2014a中的新课程fitctreefitrtree新课程).

这是更新的示例,使用新的函数/类:

t = fitctree(x, y, 'PredictorNames',vars, ...
    'CategoricalPredictors',{'Cylinders', 'Model_Year'}, 'Prune','off');
view(t, 'mode','graph')

y_hat = predict(t, x);
cm = confusionmat(y,y_hat);

tt = prune(t, 'Level',3);
view(tt)

predict(tt, [33 4 78 NaN])
Run Code Online (Sandbox Code Playgroud)

  • 另外,你可能会发现*Andrew Moore*的这个教程列表非常有用:http://www.autonlab.org/tutorials/(前两个你感兴趣) (5认同)
  • 看来你正在尝试编写自己的决策树实现.我建议您在开始编码之前先熟悉一下这个主题.除此之外,请看一下我对类似问题的另一个解决方案,它解释了如何使用熵和信息增益作为拆分标准:http://stackoverflow.com/questions/1859554/what-is-entropy-and-information -Gain/1859910#1859910 (4认同)