集成算法简介
集成算法通过在数据上构建多个弱评估器,汇总所有弱评估器的建模结果,以获取比单个模型更好的回归或分类表现,集成算法主要分为3种:Bagging(减小方差)、Boosting(减小偏差)或stacking(改进预测)。
袋装法(Bagging)的原理是一次性建立多个平行独立的弱评估器,每个弱评估器的权重都一样,分类问题通过投票决定最终结果,回归问题通过求弱评估器的平均值决定。袋装法中最著名的算法是随机森林RandomForest。
提升法(Boosting)的原理是通过按先后顺序构建弱评估器,经过多次迭代逐渐累积多个弱评估器,每个弱评估其的权重不同,最终结果由多个弱评估器乘以其权重的加和所决定。提升法的算法包括Adaboost和梯度提升树等,XGBoost由梯度提升树发展而来。
弱评估器一般为KNN、朴素贝叶斯、决策树、Logistic回归等。
泛化误差是衡量一个模型推广能力的标准,泛化误差大表示模型在预测测试数据集的时候效果不好。模型太简单会发生欠拟合,模型太复杂会发生过拟合,欠拟合和过拟合都会使泛化误差增大。
泛化误差 = 方差 + 偏差 + 不可计算的误差
偏差:模型的预测值与真实值之间的差异。在集成算法中,每个基评估器都会有自己的偏差,集成评估器的偏差是所有基评估器偏差的均值。模型越精确,偏差越低。
方差:反映的是模型每一次输出结果(每个模型的预测结果结果)与模型预测值的平均水平(多个模型预测结果的平均值)之间的误差,衡量模型的稳定性。模型越稳定,方差越低。
在传统机器学习算法里面,集成算法对真实分布拟合效果较为理想,可用于分类也可用于回归,在深度学习还没有大行其道之前,集成算法在各种竞赛大放异彩。
决策树
决策树算法简介
集成算法大部分选择的弱分类器都是决策树,所以在讲集成算法之前,我们先来了解决策数。决策树根据其用法不同分为分类树和回归树。决策树主要由根节点、内部节点、叶子结点组成。其算法主要有ID3算法(信息熵和信息增益)、CART算法(Gini系数)等。确定节点时,取信息熵最小,信息增益最大,Gini系数最小的特征为节点。
调用模型:分类树
from sklearn import datasets #用sklearn自带的数据集
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
iris = datasets.load_iris() #iris数据集的详细解释请参考之前我写的KNN分类算法博文
iris_x = iris.data
iris_y = iris.target
x_train, x_test, y_train, y_test = train_test_split(iris_x, iris_y, test_size = 0.3)
#划分训练集和测试集,test_size = 0.3是测试数据占总数据的30%
clf = DecisionTreeClassifier(criterion = 'entropy', max_depth = 4, random_state = 1)
#criterion = 'entropy'表示采用信息增益算法, max_depth = 4表示树的深度, random_state = 1每次建模取的结果相同,如果不设置数值,每次建模取的结果不同
clf.fit(x_train, y_train)