Task 07 投票法的原理和案例分析
投票法在实际中一个应用的例子
在航空航天领域,每个零件发出的电信号都对航空器的成功发射起到重要作用。如果我们有一个二进制形式的信号:
11101100100111001011011011011
在传输过程中第二位发生了翻转
10101100100111001011011011011
这导致的结果可能是致命的。一个常用的纠错方法是重复多次发送数据,并以少数服从多数的方法确定正确的传输数据。一般情况下,错误总是发生在局部,因此融合多个数据是降低误差的一个好方法,这就是投票法的基本思路。
投票法的原理分析
投票法是一种遵循少数服从多数原则的集成学习模型,通过多个模型的集成降低方差,从而提高模型的鲁棒性。在理想情况下,投票法的预测效果应当优于任何一个基模型的预测效果。
投票法的使用
- 在回归模型中:预测结果是所有模型预测结果的平均值。
- 在分类模型中:预测结果是所有模型种出现最多的预测结果。这里也分为软投票(预测结果是所有投票结果中概率加和最大的类)和硬投票(预测结果是所有投票结果最多出现的类)。
相对于硬投票,软投票法考虑到了预测概率这一额外的信息,因此可以得出比硬投票法更加准确的预测结果。
投票法中的基模型
理论上,基模型可以是任何已被训练好的模型。但在实际应用上,想要投票法产生较好的结果,需要满足两个条件:
- 基模型之间的效果不能差别过大。当某个基模型相对于其他基模型效果过差时,该模型很可能成为噪声。
- 基模型之间应该有较小的同质性。例如在基模型预测效果近似的情况下,基于树模型与线性模型的投票,往往优于两个树模型或两个线性模型。
投票法的局限性
它对所有模型的处理是一样的,这意味着所有模型对预测的贡献是一样的。如果一些模型在某些情况下很好,而在其他情况下很差,这是使用投票法时需要考虑到的一个问题。
投票法的案例分析学习笔记
sklearn.ensemble.VotingRegressor ¶
class sklearn.ensemble.VotingRegressor(estimators,*,weights = None,n_jobs = None,verbose = False)
class sklearn.ensemble.VotingClassifier(estimators, *, voting='hard', weights=None, n_jobs=None, flatten_transform=True, verbose=False)
参数说明:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingRegressor.html
https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html
P.S.可以通过修改参数voting来选择硬投票or软投票
pipeline
转换器通常与分类器,回归器或其他估计器组合在一起,以构建复合估计器。最常用的工具是Pipeline。Pipeline通常与FeatureUnion结合使用,FeatureUnion将转换器的输出连接到一个复合特征空间中。 TransformedTargetRegressor处理转换目标(即对数变换y)。相反,Pipelines仅转换观察到的数据(X)。
交叉验证(Cross-Validation) 是一种模型的验证技术,用于评估一个统计分析模型在独立数据集上的概括能力。交叉验证的目标是确定一个原数据集的子集,去限制模型在训练阶段的一些问题,比如模型的过拟合、欠拟合等,同时提供了一种判断标准去衡量模型在独立数据集上的泛化能力。
交叉验证的用途:
交叉验证可以有效评估模型的质量;
交叉验证可以有效避免过拟合和欠拟合;
选择模型超参数,以此选择的超参数测试误差小。
箱型图
它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。也可以往盒图里面加入平均值(mean)。如上图。下四分位数、中位数、上四分位数组成一个“带有隔间的盒子”。上四分位数到最大值之间建立一条延伸线,这个延伸线成为“胡须(whisker)”。
参考资料:
datawhale集成学习(中)
https://blog.csdn.net/liming89/article/details/111601591
https://blog.csdn.net/raintungl/article/details/78188158