高级算法梳理

  1. 集成学习概念:(同一种类的)机器学习过程中有监督学习算法,而集成学习就是由多个弱监督模式的学习器集合起来得到一个更全面的强监督模型,这种预测模型的元算法,以达到减少方差、偏差或改进预测效果集成学习在各个规模的数据集上都起到了很好的策略
  2. 个体学习的概念:(不是同一个种类的)就是通过不同策略的模型进行训练从而确定最终的分类强的学习器
  3. Boosting:在训练的过程中,先使用初始权限对学习器进行学习,根据误差率再进行重新选择权重。每个不同的误差会选择各种不同的权重,从而得到不同的策略,最终多个弱学习器组成一个强学习器
  4. Bagging:这是一套算法,根据刚开始给每个学习器赋予最初学习器,根据误差的大小,进行选择权重,当训练失败时,会给予较大的权重,这时每次学习都会更加注意学错样本,从而得到更多的预测数据,用拟合残差的方式进行减小残差,最后得到最终模型
  5. 结合策略(平均法,投票法,学习法)
  6. 平均法:对于数值类的回归预测问题,通常使用的结合策略的平均法。对于很多个弱学习器输出得到的平均得到的最终预测输出进行分别给予权重
  7. 投票法:就是把多个弱学习器的预测的结果组成一个集合,以少数服从多数的概念进行投票选择。
  8. 学习法:这是对学习器作出两次学习,第一次学习后预测的结果作为第二次学习的输入,从而达到更精准的学习
  9. 随机森林思想:为了解决单一决策树出现的很大误差,从而将多个决策树进行组合,解决单一决策树的片面性以及判断不准确。
  10. 随机森林的推广
    由于RF在实际应用中的良好特性,基于RF,有很多变种算法,应用也很广泛,不光可以用于分类回归,还可以用于特征转换,异常点检测等。下面对于这些RF家族的算法中有代表性的做一个总结。
    10.1 extra trees
    extra trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:
    1) 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。
    2) 在选定了划分特征后,RF的决策树会基于基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
    从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是偏倚相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好。
    10.2 Totally Random Trees Embedding
    Totally Random Trees Embedding(以下简称 TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。
    TRTE在数据转化的过程也使用了类似于RF的方法,建立T个决策树来拟合数据。当决策树建立完毕以后,数据集里的每个数据在T个决策树中叶子节点的位置也定下来了。比如我们有3颗决策树,每个决策树有5个叶子节点,某个数据特征xx划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 有15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子编码。
    映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。
    10.3 Isolation Forest
    Isolation Forest(以下简称IForest)是一种异常点检测的方法。它也使用了类似于RF的方法来检测异常点。
    对于在T个决策树的样本集,IForest也会对训练集进行随机采样,但是采样个数不需要和RF一样,对于RF,需要采样到采样集样本个数等于训练集个数。但是IForest不需要采样这么多,一般来说,采样个数要远远小于训练集个数?为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。
    对于每一个决策树的建立, IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和RF不同。
    另外,IForest一般会选择一个比较小的最大决策树深度max_depth,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。

9.随机森林的优缺点
优点
• 具有极高的准确率
• 随机性的引入,使得随机森林不容易过拟合
• 随机性的引入,使得随机森林有很好的抗噪声能力
• 能处理很高维度的数据,并且不用做特征选择
• 既能处理离散型数据,也能处理连续型数据,数据集无需规范化
• 训练速度快,可以得到变量重要性排序
• 容易实现并行化
缺点
• 当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
• 随机森林模型还有许多不好解释的地方,有点算个黑盒模型
• 相比于其他算法,其输出预测可能较慢。
11.sklearn参数
sklearn.tree.DecisionTreeClassifier(criterion=‘gini’, splitter=‘best’, max_depth=None, min_samples_split=2,
min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)
criterion:特征选择的标准,有信息增益和基尼系数两种,使用信息增益的是ID3和C4.5算法(使用信息增益比),使用基尼系数的CART算法,默认是gini系数。
splitter:特征切分点选择标准,决策树是递归地选择最优切分点,spliter是用来指明在哪个集合上来递归,有“best”和“random”两种参数可以选择,best表示在所有特征上递归,适用于数据集较小的时候,random表示随机选择一部分特征进行递归,适用于数据集较大的时候。
max_depth:决策树最大深度,决策树模型先对所有数据集进行切分,再在子数据集上继续循环这个切分过程,max_depth可以理解成用来限制这个循环次数。
min_samples_split:子数据集再切分需要的最小样本量,默认是2,如果子数据样本量小于2时,则不再进行下一步切分。如果数据量较小,使用默认值就可,如果数据量较大,为降低计算量,应该把这个值增大,即限制子数据集的切分次数。
min_samples_leaf:叶节点(子数据集)最小样本数,如果子数据集中的样本数小于这个值,那么该叶节点和其兄弟节点都会被剪枝(去掉),该值默认为1。
min_weight_fraction_leaf:在叶节点处的所有输入样本权重总和的最小加权分数,如果不输入则表示所有的叶节点的权重是一致的。
max_features:特征切分时考虑的最大特征数量,默认是对所有特征进行切分,也可以传入int类型的值,表示具体的特征个数;也可以是浮点数,则表示特征个数的百分比;还可以是sqrt,表示总特征数的平方根;也可以是log2,表示总特征数的log个特征。
random_state:随机种子的设置,与LR中参数一致。
max_leaf_nodes:最大叶节点个数,即数据集切分成子数据集的最大个数。
min_impurity_decrease:切分点不纯度最小减少程度,如果某个结点的不纯度减少小于这个值,那么该切分点就会被移除。
min_impurity_split:切分点最小不纯度,用来限制数据集的继续切分(决策树的生成),如果某个节点的不纯度(可以理解为分类错误率)小于这个阈值,那么该点的数据将不再进行切分。
class_weight:权重设置,主要是用于处理不平衡样本,与LR模型中的参数一致,可以自定义类别权重,也可以直接使用balanced参数值进行不平衡样本处理。
presort:是否进行预排序,默认是False,所谓预排序就是提前对特征进行排序,我们知道,决策树分割数据集的依据是,优先按照信息增益/基尼系数大的特征来进行分割的,涉及的大小就需要比较,如果不进行预排序,则会在每次分割的时候需要重新把所有特征进行计算比较一次,如果进行了预排序以后,则每次分割的时候,只需要拿排名靠前的特征就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值