
决策树生活案例.docx
3页决策树生活案例早上几点出门才能不迟到?假设我们现在要创建一个数据集,记录每天上班离开家的时间以及能否准时 到达公司下图就记录了一些情况,可以看到大多数情况下,只要在8:15之前 出门就能准时上班,在这之后就会经常迟到你可以在决策树中总结出这一情况首先第一个分叉点可以问:“是否在8:15 之前离开? ”这里有两种回答:“是”或“否”根据习惯我们将“是”放在左边,然后 将数据分为两组,虽然有一些例外情况,但总体看来8:15是一个分水岭如果 在这之前出门,大概率不会迟到,反之亦然这就是最简单的决策树模型,只有 一对选择分支接下来我们可以对这个模型进行微调,在两个分支上分别再进行分类,即加 入8:00和8:30两个时间点,这样可以更全面地分析到达时间下表显示,8:00 之前出门绝对能准时到达,而8:00到8:15之间出门可能会准时到而在8:15 之后8:30之前几乎每次都会迟到,但也有可能不迟到而8:30之后一定会迟 到这样一来,决策树就变成了两层,你还可以根据自己的需要继续分层下去 大多数情况下,每个决策点只有两个分支上面的案例只有一个预测变量,以及一个类别目标变量预测变量是“我们 出门的时间”,目标变量是“是否准时上班”。
由于只有两种明确的可能(是或不是), 所以是分类的有分类目标的决策树也被称为分类树我们可以将这一例子继续扩展,把它变成两个决策变量将出门时间和工作 日加入进去,将周一定为1,以此类推,周六为6,周日为7数据显示,在周 六和周日,绿色的点要更靠近左边一些这说明在工作日,8:10出门也许足够 了,但是周末可能会迟到为了在决策树中表示这一点,我们可以像之前一样,再在8:15时加上分界 线,在这之后出发可能会迟到,但是在这之前却不好说,此前我们判断的是不会 迟到,但现在看来这个推断不完全准确为了在决策树中表示这一点,我们可以 像之前一样,再在8:15时加上分界线,在这之后出发可能会迟到,但是在这之 前却不好说,此前我们判断的是不会迟到,但现在看来这个推断不完全准确为 了让我们更好地估计周末情况,我们可以进一步将8:15之前分为工作日和周末 两种情况工作日如果在8:15之前出发,那么一定不会迟到但是周末如果在 8:15之前出发,大多数情况会准时到达,但是也有例外于是决策树可以如下图 表示:这是一个三层决策树,注意,并不是每个分支都需要继续细分下去(例如最 右边的一支)现在我们可以分析一个具有连续目标变量的案例了。
当模型对连续变量做出 预测时,这也被称为回归树我们已经解释了一维或二维的分类树了,接下来我 们分析回归树你几点起床?现在我们要加入某人的年龄以及他起床的时间我们回归树模型的根节点就 是对整个数据集的估计在这种情况下,如果你不知道某人的年龄但还要估计他 的起床时间,那么可能的时间是6:25,我们假设这是决策树的根节点另一个关于年龄的分支我们定在25岁,经过数据收集,平均来说,25岁以 下的人会在7:05起床,25岁以上的人会在6点钟起床根据年龄,决策树能让我们做出多种判断如果我要判断一名36岁的实验 对象的起床时间,那么我可以从树的顶端开始他是否小于25岁?否,向右低于40岁?是的,向左最终估计的起床时 间为6:10决策树的结构能让你将任何年龄的人分到各自的类别中,并且预测出他们的 起床时间我们还可以将回归树模型扩展到有两个预测变量的形式如果我们不仅考虑 某人的年龄,还要考虑月份,那么我们会找到更加丰富的模式目前北半球是夏 季,昼长夜短,太阳日出时间较冬季更早假设学生们没有课业压力(当然只是 假设),他们的起床时间受太阳升起的影响,另一方面,成年人的起床时间就更 加规律,只会随着季节变化进行轻微波动。
另外,老年人在这个情况下会起的稍 早我们创建的这个决策树和上一个很像从根节点 6:30开始(这里是用matplotlib进行的可视化)之后我们寻找一个适合加入边界的地方,以35岁为分界线,35岁以下的人 在7:06起床,35岁以下的人在6:12起床重复之前的过程,在年轻群体中细分时间,判断是否是9月中旬、是否是3 月中旬若在9月中旬之后,那么就判定为冬季,35岁以下的人起床时间估计 为7:30,而夏季预计为6:56接着,我们可以在大于35岁的群体中继续以48岁为界线进行精确的分析我们同样还可以回过头,在35岁以下群体中分析18岁人群冬季的起床时 间,如下图18岁以下的人冬季在7:54起床,而18岁以上的人在6:48起床从这里,我们看到随着分支的增加,决策树模型的形状越来越接近原始数据 的形状同样,我们也会注意到决策树所区分的各个区域,颜色也越来越相近这一过程如果继续下去,模型就会不断接近数据原始形状,每个决策区域会 变得越来越小,对数据的估计也会越来越准确如何处理过拟合然而,决策树需要注意的一个重点是过度拟合回到我们只有单一变量的回 归树案例,即年龄对起床时间的影响中,假设我们继续细分年龄,直到每个类别 中只有一两个数据。
