标签:art inf 节点 灵活 集成学习 make form dom 能力
目录
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/
集成学习主要分成两个流派,其中一个是Boosting算法,另一个则是本文要讲的Bagging算法,Bagging算法
算法的弱学习器是没有依赖关系的,因此弱学习之间可以并行拟合。
Bagging算法中最著名的算法是随机森林,由于随机森林的不容易过拟合性以及简便性,可以说是和梯度提升树同名的算法。
Bagging算法的弱学习器的训练集是通过随机采样得到的。通过\(T\)次的随机采样,我们可以通过自主采样法(bootstrap sampling)得到\(T\)个采样集,然后对于这\(T\)个采样集独立的训练出\(T\)个弱学习器,之后我们通过某种结合策略将这\(T\)个弱学习器构造成一个强学习器。
在一个有\(m\)个样本的训练数据中随机采样,一个样本每次被采样的概率为\({\frac{1}{m}}\),不被采集的概率为\(1-{\frac{1}{m}}\),如果\(m\)次采样都没有采中的概率为\((1-{\frac{1}{m}})^m\),当\(m\rightarrow{\infty}\),\((1-{\frac{1}{m}})^m\rightarrow{\frac{1}{e}}\approx0.368\),即在Bagging算法的随机采样中,大约有\(36.8%\)的数据没有被采中。
Bagging算法的结合策略,对于分类问题,一般使用相对多数投票法,即票数最多的类别即为样本预测类别;对于回归问题,一般使用简单平均法,即对\(T\)个弱学习的输出做算术平均得到样本预测值。
\(m\)个样本\(n\)个特征的训练数据集\(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\);弱学习器迭代次数为\(T\)。
最终强学习器\(f(x)\)。
随机森林(random forest,RF)基于Bagging算法的思想,做了一定的改进,即对特征进行了选择。
RF使用CART决策树作为弱学习器,但是RF对普通的CART决策树做了改进,普通的CART树选择最优特征作为决策树划分的条件;RF的CART决策树则是在训练数据的\(n\)个特征中随机选择\(n_{sub}\)特征,一般情况下\(n_{sub}<n\),然后在这\(n_{sub}\)个特征中选择最优特征作为决策树划分的条件。
如果\(n_{sub}=n\),则RF的决策树为普通的决策树;\(n_{sub}\)越小,则模型鲁棒性越好,模型方差也会减小,但模型对训练集的拟合程度会变差,反之,模型的偏差会变小,模型对训练集的泛化能力会变差。
RF在实际应用中不仅能解决分类和回归问题,还可以用于特征转换、异常点检测等。
Extra Trees和RF的区别有以下两点:
以上两点导致extra trees生成的随机森林的决策树规模一般会大于RF。即可以一定程度的减小模型的方差,增强模型的泛化能力。
# 使用ExtraTree判断特征重要性程度
from sklearn.datasets import make_friedman1
from sklearn.ensemble import ExtraTreesRegressor
X, y = make_friedman1(n_samples=100, n_features=10, random_state=0)
# 通过ExtraTreesRegressor模型获取每个特征的重要性
et = ExtraTreesRegressor(n_estimators=10)
et = et.fit(X, y)
print('10个特征各自的重要性:{}'.format(et.feature_importances_))
10个特征各自的重要性:[0.11488041 0.12557425 0.08477273 0.45483849 0.09753123 0.01384401
0.0364967 0.0256125 0.01965904 0.02679065]
Totally Random Trees Embedding(TRTE)是一种无监督学习的数据转换方式,它可以将低维的数据集映射到高维,在支持向量机中使用了核技巧将低维的数据映射到高维,TRTE提供了不同于核技巧的方法。
TRTE首先会构成一个类似RF的随机森林模型,模型定下来后模型中\(T\)个决策树的叶子节点位置也会被确定。
现在假设我们有3棵决策树,每个决策树有4个叶子节点,某个数据特征\(x\)划分到第1个决策树的第1个叶子节点,第2棵决策树的第2个节点,第3棵决策树的第4个节点,则\(x\)映射后的特征编码为\((1,0,0,0\quad0,1,0,0\quad0,0,0,1)\),由此既可以得到12维的高维特征。
Isolation Forest(IForest)可以检测异常点。
IForest类似于RF,但在随机采样的时候,IForest随机采样的数量并不是\(m\)个,而是远远小于训练集个数,因为IForest的作用是检测异常点,如果采样过多正确样本会掩盖掉异常点。
在划分特征的时候,IForest对划分特征随机选择一个划分阈值,并随机选择一个特征划分决策树。
由于IForest的样本数过少,IForest也会选择一个较小的最大决策树深度控制决策树的深度。
将测试样本\(x\)拟合到\(T\)棵决策树,计算每颗决策树上该样本的叶子节点的深度\(h_t(x)\),从而计算出平均高度,则样本点\(x\)的异常概率为
\[
s(x,m) = 2^{-{\frac{h(x)}{c(m)}}}
\]
其中\(m\)为样本个数,\(c(m)\)的表达式为
\[
c(m) = 2\ln(m-1)+\xi-2{\frac{m-1}{m}}
\]
其中\(\xi\)为欧拉常数,\(s(x,m)\)的取值范围是\([0,1]\),取值越接近1,测试样本点是异常点的概率越大。
\(m\)个样本\(n\)个特征的训练数据集\(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\);弱学习器迭代次数为\(T\)。
最终强学习器\(f(x)\)。
集成学习到这也算是告一段落了,相信大家对Boosting和Bagging算法有了很清晰的了解,对于Boosting中的AdaBoost和GBDT,由于逻辑较为复杂,可以多看一看;对于Bagging中的随机森林,随机森林本身并不是很难理解,只要能够很自如的运用随机森林的一些拓展算法即可。
标签:art inf 节点 灵活 集成学习 make form dom 能力
原文地址:https://www.cnblogs.com/nickchen121/p/11686776.html