沈阳自助建站模板,网站建设克隆,收费抽奖网站,要学网页设计集成学习
集成学习#xff08;Ensemble Learning#xff09;是一种机器学习方法#xff0c;通过将多个基本学习算法的预测结果进行组合#xff0c;以获得更好的预测性能。集成学习的基本思想是通过结合多个弱分类器或回归器的预测结果#xff0c;来构建一个更强大的集成模…集成学习
集成学习Ensemble Learning是一种机器学习方法通过将多个基本学习算法的预测结果进行组合以获得更好的预测性能。集成学习的基本思想是通过结合多个弱分类器或回归器的预测结果来构建一个更强大的集成模型。集成学习可以用于分类问题和回归问题。在分类问题中集成学习将多个分类器的预测结果进行投票或加权组合最终输出集成模型的预测结果。在回归问题中集成学习将多个回归器的预测结果进行平均或加权平均得到最终的回归结果。 集成学习的优势在于能够减少单个模型的过拟合风险提高模型的泛化能力。通过结合多个模型的预测结果集成模型可以在不同数据分布、噪声和样本偏差等情况下表现更好。然而集成学习也需要考虑模型之间的差异性过度集成可能导致过拟合因此在实践中需要进行适当的调参和模型选择。
Bagging
BaggingBootstrap Aggregating是一种基于自助采样bootstrap sampling和集成学习的方法。它通过对原始训练集进行有放回采样生成多个采样集然后使用每个采样集来训练一个基本分类器或回归器。最后通过对这些基本模型的预测结果进行投票或平均得到最终的集成模型的预测结果。
Bagging的步骤如下
1.自助采样Bootstrap Sampling
从原始训练集中有放回地随机采样生成多个采样集每个采样集的样本数量与原始训练集相同但可能包含重复样本和缺失样本。
2.基本模型训练
使用每个采样集来训练一个基本分类器或回归器。这些基本模型可以是相同的学习算法也可以是不同的学习算法。
3.预测结果集成
对于分类问题采用多数投票的方式将基本模型的预测结果进行投票选择得票最多的类别作为集成模型的最终预测结果。对于回归问题采用平均或加权平均的方式将基本模型的预测结果进行平均得到集成模型的最终预测结果。 Bagging的优势在于能够减少模型的方差提高模型的稳定性和泛化能力。由于每个基本模型都是在不同的训练集上独立训练的它们可以捕捉到数据集中的不同特征和噪声从而减少了单个模型的过拟合风险。此外Bagging还可以并行化处理加速模型训练的过程。
随机森林
随机森林Random Forest是一种基于决策树的集成学习方法通过构建多个决策树并对它们的预测结果进行集成来实现分类和回归任务。随机森林结合了Bagging和随机特征选择的技术具有较好的泛化能力和抗过拟合能力。随机森林的优点如下
随机森林对于高维数据和大规模数据集的处理能力较强。随机森林能够提供特征的重要性评估帮助我们理解数据中各个特征的相对重要性。随机森林能够有效地处理缺失值和异常值不需要数据预处理的步骤。随机森林在训练过程中可以并行化处理加速模型的训练过程。 算法步骤
1.决策树的构建
决策树是一种基本的分类与回归方法它通过对特征空间进行划分来建立决策规则。在随机森林中每个决策树都是独立构建的使用训练集的一个采样集来训练。决策树的构建过程中通过对特征的随机选择限制了每个节点可用的特征子集从而增加了模型的多样性。一般情况下对于分类问题随机选择的特征子集大小一般为总特征数的平方根对于回归问题一般选择总特征数的三分之一。
2.自助采样Bootstrap Sampling
随机森林通过自助采样生成多个采样集。自助采样是一种有放回地随机采样方法从原始训练集中随机选择与原始训练集相同数量的样本形成一个采样集。自助采样过程中每次采样都是独立的因此某些样本可能在同一个采样集中出现多次而另一些样本可能被忽略。
3.特征选择
在每个决策树的节点中随机森林通过随机选择一部分特征来进行划分。这种特征选择的方式增加了决策树之间的差异性避免了过度拟合。特征选择的过程可以采用随机选择一定数量的特征子集也可以采用随机选择一个特定的特征子集。
4.决策树集成
随机森林通过对多个决策树的预测结果进行集成来得出最终的预测结果。对于分类问题采用多数投票的方式选择得票最多的类别作为随机森林的最终预测结果。对于回归问题采用平均或加权平均的方式将多个决策树的预测结果进行平均得到最终的回归结果。
随机森林实现
from sklearn import treeimport os
import pandas as pd
import numpy as np
import sklearn
import xgboost as xgbfrom utils.features import *import warningswarnings.filterwarnings(ignore)def load_datasets():pd.set_option(display.max_columns, 1000)pd.set_option(display.width, 1000)pd.set_option(display.max_colwidth, 1000)df pd.read_pickle(****.pickle)features darshan_featuresprint(df.head(10))df_train, df_test sklearn.model_selection.train_test_split(df, test_size0.2)X_train, X_test df_train[features], df_test[features]print(X_test)y_train, y_test df_train[value], df_test[value]print(y_test)return X_train, X_test, y_train, y_testdef model_train(X_train, X_test, y_train, y_test):# 决策树回归clf tree.DecisionTreeRegressor()# 拟合数据clf clf.fit(X_train, y_train)y_pred_test clf.predict(X_test)print(y_test)print(y_pred_test)error np.median(10 ** np.abs(y_test - y_pred_test))print(error)def main():X_train, X_test, y_train, y_test load_datasets()model_train(X_train, X_test, y_train, y_test)if __name__ __main__:main()