本博客仅用于记录学习知识,如有雷同请联系我
参考:https://blog.youkuaiyun.com/qq_34106574/article/details/82016442 清华大学 数据挖掘课程
1.Bagging——BootStrap Aggregation
bagging是有放回的取出样本中的部分样本,进行多次这种操作得到多组样本,用这些样本训练多个分类器,然后在预测的时候,用这些分类器进行预测,用这些预测值进行投票。比如7个预测为1,3个预测为0,则总的预测值就为1。
2.典型算法
随机森林——Random Forest
随机森林就是将多个(500 <= M <= 5000)决策树集合起来得到一个森林进行决策,根据上面的定义,就是用不同的决策树进行预测,然后用这些预测进行投票。
假设有N个样本,有放回的取N个样本,这种随机抽取的方法最终的极限是
,而剩下的数据可以用于测试集。
当然对于这M个决策树,在测试的时候可以用到的测试集的数据是要在训练中没有用的高的数据(训练集不一样,测试集也不一样)。
如果每个样本的特征维度为K,指定一个常数k<<K,随机地从K个特征中选取k个特征子集,每次树进行分裂时,从这k个特征中选择最优的,这和决策树的特征有关
3.算法步骤
- 用有抽样放回的方法(bootstrap)从样本集中选取n个样本作为一个训练集
- 用抽样得到的样本集生成一棵决策树。在生成的每一个结点:随机不重复地选择d个特征
- 利用这d个特征分别对样本集进行划分,找到最佳的划分特征(可用基尼系数、增益率或者信息增益判别)
- 重复步骤1到步骤2共k次,k即为随机森林中决策树的个数。
- 用训练得到的随机森林对测试样本进行预测,并用票选法决定预测的结果
优点:
1.不需要人为的去讲数据分成测试集验证集
2.不需要担心过拟合问题,在随机森林中有多个决策树,即使有一部分树过拟合了,但是在将所有分类器combine之后,过你华将被大大削弱,不用剪枝
3.不需要人为的特征选择,只需要设置数目。
4.可以进行特征选择,计算每个特征的重要性。查看每个特征在不同决策树中起到的作用,也就是基尼系数或增益率等评价值的大小,然后在森林中对所有树中的该特征的值做一下平均。就可以得到不同特征的排名,这样就知道哪些特征比较重要,哪些特征不重要。
分类错误的两类因素:
1.树之间的相关性,相关性越大,错误率越大
2.树的分类能力越强,错误率越低
特征选择个数↑--相关性和分类能力↑