及时行乐|原理+代码|深入浅出Python随机森林预测实战

前言
组合算法也叫集成学习 , 在金融行业或非图像识别领域 , 效果有时甚至比深度学习还要好 。 能够理解基本原理并将代码用于实际的业务案例是本文的目标 , 本文将详细介绍如何利用Python实现集成学习中随机森林这个经典的方法来预测宽带客户的流失 , 主要将分为两个部分:
详细原理介绍
Python代码实战
假设有10万条原始数据 , 用这些数据来做十棵决策树(当然也可以是其他模型) , 最后这10棵树将被装进了同一个袋子中 。 这时候取其中一条数据放入这个袋子 , 便会得出10个预测值(每棵树各一个) , 假如其中三棵树给出的预测值为0 , 剩余的七棵给出的为1 , 那我们便可知道这个袋子对这个数据的预测结果为0的概率是3/10 。
为了更深入的理解装袋法 , 下面将回答三个与装袋法有关的常见问题:
问:袋子中的每个模型使用的样本量范围应为多少合适?
答:如果是上面的例子 , 袋子里面有十棵树 , 源数据总量为10万条 , 则每棵树取用的样本量的最小值为最少是1w个(10w/10棵=1w/棵) , 因为至少要保证不能浪费样本 , 但每棵树最多可取用多少样本呢?其实在样本量已知 , 同一袋子中模型个数为n的情况下 , 样本的选择比例为1/n~0.8最好 。 每个小模型取用100%的样本是绝对没有意义的 , 那就跟没抽是一样的 , 这样也就没有体现出装袋 , 只有每个模型用到的数据都有一定的不同 , 组合起来后每个的投票(预测结果)也才有意义 。
问:袋中模型们之间的相关性会影响最后的决策结果吗?
答:装袋法思路最重要的一点:袋子中每个模型之间不能相关 , 越不相关越好 , 这里的不相关主要体现在用于训练每个模型的样本不一样 。 其次 , 每个模型的精度越高越好 , 这样它的投票才更有价值 。
PS:训练模型的样本不一样这一点可以理解为总统选举 , 抽10波选民来投票 , 这10波选民的差异性越大越好 , 这样一来 , 只有在选民千差万别的情况下你依然脱颖而出 , 才足以说明你的实力 , 如果这10波选民中每一波之间的差异性都很小 , 比如都是本来就偏袒于总统候选人 , 那投票结果的说服力就会大减 。
问:上面所说的模型精度高是不是哪怕模型很复杂也可以 , 如果每个模型的精度高但都过度拟合怎么办?
【及时行乐|原理+代码|深入浅出Python随机森林预测实战】答:在装袋法中 , 模型是越精确越好 , 哪怕是过度拟合的也没有关系 。 因为一个模型要想在训练集上做到越精确越好 , 而精确程度与模型的复杂度大多是成正比的 , 所以出现过拟合的情况也是正常且情有可原的 。 复杂和过度拟合只是对袋子中每个模型而言 , 因为最后都会被加权 , 所以整个袋子(整体)并不会出现过度拟合的情况 。
随机森林随机森林的实现步骤如下: