type
status
date
slug
summary
tags
category
icon
password
实验说明
实验目的
用集成方法对数据集进行分类
实验数据
Spaceship Titanic 数据集
实验内容及说明
利用若干算法,针对同一样本数据训练模型,使用投票机制,少数服从多数,用多数算法给出的结果当作最终的决策依据,对Titanic数据集进行分类,给出在测试集上的精确度;
除了投票法,其他的集成学习方法也可以。
实验来自kaggle入门赛https://www.kaggle.com/competitions/spaceship-titanic,可以参考原网站代码与预处理部分,但与公开代码不同的在于,集成学习所用的基学习器需要自己实现而不能调用sklearn库。
数据集的分析是一个开放性问题,可以参考网站中的预处理方式。
所选算法包括但不限于课堂上学习的模型例如:决策树、SVM、KNN、神经网络
需要在网站上提交,不要求结果很高,但要求模型自己实现,如果有优化可以加分。
前置内容学习
什么是集成学习通过将多个学习器集成在一起来达到学习的目的。
根据是否使用不同的学习算法,集成学习可以分为同质集成与异质集成:
同质集成:集成中只包含同种类型的个体学习器,例如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,称集成是“同质”的(homogeneous)。同质集成中的个体学习器亦称 “基学习器”(base learner) ,相应的学习算法称为 “基学习算法”(base learning algorithm)。
在homogeneous ensembles中,可以根据不同的改变训练集的方法又可以分为:
- Bagging:Resample training data 重新采样训练数据
或个体学习器间不存在强依赖关系,可以同时生成的并行化方法。
- Boosting:Reweight training data 重新加权训练数据
或个体学习器间存在强依赖关系,必须串行生成的序列化方法。
异质集成:集成中的个体学习器由不同的学习算法生成,例如同时包含决策树和神经网络,这样的集成是“异质”的(heterogenous)。异质集成中个体学习器常称为 “组件学习器”(component learner) 或直接称为个体学习器。
Bagging(bootstrap aggregating)
从训练集从进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果。
bootstrap
是一种有放回的抽样方法,基本思想和步骤如下:
1)采用重抽样技术从原始样本中抽取一定数量的样本,此过程允许重复抽样
2)根据抽出的样本计算统计量T
3)重复上述N次
4)计算上述N个统计量T的样本方差,得到统计量的方差
bootstrap不适用的情况:
- 小数据集:原始样本不能很好地近似总体
- 脏数据:异常值增加了估计的变异性。
- 依赖结构(例如时间序列、空间问题):bootstrap基于独立性的假设,而时间序列、空间数据具有自相关性。
Bagging
步骤描述:
- 设原始训练数据为 L
- 重复以下过程 B 次:
- 从 L 中抽取一个自助样本(bootstrap sample)Lₖ
- 使用 Lₖ 训练一个基学习器
- 通过以下方式整合 B 个基学习器的结果:
- 投票法(适用于分类问题)
- 平均法(适用于回归问题)

不稳定学习算法:训练数据的微小变化会导致预测结果的显著差异。
- 神经网络
- 决策树
- 回归树
- 线性回归中的子集选择
稳定学习算法:
- K近邻算法
Bgging适用于不稳定的学习算法,效果显著;对稳定学习算法无明显提升
Boosting
二分类问题的Boosting实现步骤:
- 第一轮采样与训练:
- 从数据集 D 中无放回随机选取 n₁ < n 个样本,得到子集 D₁。
- 训练弱学习器 C₁。
- 第二轮采样与训练:
- 从 D 中选取 n₂ < n 个样本,其中半数需被C₁误分类,得到子集 D₂。
- 训练弱学习器 C₂。
- 第三轮采样与训练:
- 选取 D 中C₁与C₂预测结果不一致的所有剩余样本。
- 训练弱学习器 C₃。
- 最终分类器:
- 通过投票机制整合三个弱学习器(C₁, C₂, C₃)的结果。

Boosting中最流行的算法是AdaBoost(Adaptive Boosting)——自适应增强算法。
1)先从初始训练集训练出一个基学习器

2)根据基学习器的表现,对训练样本分布进行调整,使得基学习器1做错的训练样本得到更多关注(通过重新赋予权重)

3)基于调整后的样本分布训练基学习器2

4)根据基学习器的表现,对训练样本分布进行调整,使得基学习器2做错的训练样本得到更多关注(通过重新赋予权重)

5)基于调整后的样本分布训练基学习器3

6)最终的分类器是基学习器的结合

实验步骤及内容
数据集处理
官方给出的数据字典如下:

使用如下代码查看部分数据

首先,需要基于此数据字典和示例数据,对数据做合理的处理
对于数值型特征(Age、Fare)的缺失值,使用中位数填充,对于类别行特征(Embarked、Sex)的缺失值,使用众数填充
对类别编码Embarked、Sex进行数值编码
实现基学习器
决策树分类器
KNN分类器
神经网络分类器
实现投票集成分类器
实验结果与分析
在kaggle网站上提交结果如下:

准确率仍有待提升
- Author:Rainnn
- URL:https://blog.rainnn.top//article/1feeefba-b209-80e1-a016-c9287bc8c5f3
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!