决策树这部分的知识,记得那时近两个月前回家时在火车上闲着没事看的,那时真的 “爱的初映像”马马虎虎总觉得挺好的一个算法,近期听到同学用决策树算法去给自己的毕业设计加入了推荐功能,故此重新的将这方面的知识进行了学习。
当然了决策书最好的资料当然还是wikipedia, 看july的博客当中的那个两张图真的有种诱使人民进入无趣的感觉啊!人家的全部内容是在维基百科上面的这个整体例子,建议先看维基百科上面的东西,在去看july博客中介绍的东西。
说说自己的感觉:
建树:
输入:一大波samples,每个sample当然有很多的features,
输出:根节点all features 的 向量,每个节点就是一类特征,孩子个数由特征属性所对应的具体值的个数,就如维基中的例子outllok作为一个特征,具体的值就有三个,rain ,sunny, overcast,所以孩子就有三个,当然应该注意的是三个孩子中的那个overcast 可是一个叶子,那时由于孩子节点已经能够推断出人们是否在这样的天气下来打golf了。及里面的Yes:0,是所有叶子必须都具有这样的特征。
说明:july提到要进行修剪枝叶即控制每个叶子中的sample数目不至于太少,控制树的高度等手法,这是为了控制overfitting。
通常,建树停止的条件有:每个剩余的节点全部为叶子节点,或者没有可以继续向下分的feature;这是非常容易overfitting的。
预测:
在维基的例子中,boss就可以利用天气预报对自己能够聘用的雇员进行调整了。
决策树常见问题:
确定决策树增长的深度;处理连续值的属性;选择一个适当的属性筛选度量标准,处理属性值不完整的训练数据;处理不同代价的属性;提高计算效率。
提出的ID3算法的扩展就针对这些问题进行了改进。
应该考虑到训练样例含有随机错误或者噪声。此乃过拟合的原因。在决策树中,解决方法,及早停止树增长,或者后修剪法。后者在实践中更成功,因为树停止生长的高度很难估计。
1.错误率降低修剪:删除以此节点为根的子树,使它成为叶子节点;把和该节点关联的训练样例的最常见分类赋给它。仅当修剪后的树对于验证集合的性能不比原来的树差时删除该节点。每次总是选取那些删除后可以最大提高决策树在验证集合上的精度的节点。继续修剪直到进一步的修剪时有害的为止。这样便使得因为训练集合的巧合规律性二加入的节点很可能被删除。
2.规则后修剪:将决策树转化为等价的规则集合,方法是为从根节点到叶子节点的每一条路径创建一条规则。通过删除任何能导致估计精度提过的前件来修剪(泛化)每一条规则。按照修剪过的规则的估计精度对他们进行排序,并按这样的顺序应用这些规则来分类后来的实例!
推荐:
将所有的样本根据决策树进行分类,根据用户的历史数据或者个人资料(也就是推荐中的三个块,最主要的就是协同过滤,所需要的:用户资料,购买历史记录,浏览历史记录,还有当前热门,还有公众类型大家会一同购买的东西,等等从大量的数据找出的规律)去做推荐。
当然什么信息熵,信息增益等等这些知识上面的两个连接一切可以解决的哦!咋就不重复造车了!