在所有的机器学习模型中,决策树是最贴近咱们生活的!
从数据中学习决策树,需要学习三样东西:
- 树的形状
- 每一个决策的阈值θ
- 叶节点的值
一棵决策树也具有大量的参数,但树本身是具有结构的。结构的学习也叫作Structured Prediction,因为这种问题不像之前讨论的比如回归问题只需要预测一个值就可以了,而是同时也要学出一种具体的结构。
结构的学习一般来说都很难,很多都是NP-hard问题。简单来讲NP-hard问题就是那些多项式时间复杂度内基本上解不出来的问题,一般需要指数级复杂度。
一般对于这类的问题是没有一个很好的方式来求出全局最优解的。既然这样,我们通常会使用近似算法来找到“相对”最好的解。一个经典的近似算法叫作“贪心算法”。这类的算法每次只考虑局部最好的情况,所以一般带来的是相对最好的解决方案。但在某些特定的情况下,也可以给出全局最优解。
给定数据并学出最好的决策树本身也是很难的问题。在这个问题上,我们也通常使用贪心算法来做每一步的决策,比如使用信息增益来判断下一个节点上需要放哪一个特征。
不确定性的减少也叫作信息增益(information gain)。构建决策树的过程无非是每一步通过信息增益来选择最好的特征作为当前的根节点,以此类推,持续把树构造起来。
决策树的构建过程:
每一步的构建其实就是选择当前最好的特征作为根节点。然后持续地重复以上过程把整棵树构建起来。其中,信息增益充当着每次选择特征的标准。
当然,除了信息增益,我们也可以选择其他的指标作为选择特征的标准。
到此为止,决策树的构建过程已经说完了。除了这些其实还有几个重要问题需要考虑,比如如何让决策树避免过拟合、如何处理连续型特征、如何使用决策树来解决回归问题等。