欢迎来听集成学习
你好! 集成学习(Ensemble Learning)是机器学习中的一个重要分支,它是一种利用样本数据训练多个不同的弱分类器,然后将这些弱分类器整合成一个强大分类器的机器学习方法。
集成学习的基本原理是结合多个基学习器(也称为弱学习器)的预测结果来改善整体的预测性能。通过集成学习,可以减少单一模型的偏差和方差,从而提高预测的准确性和稳定性。
集成学习的方法有很多种,其中最常用的包括Bagging和Boosting。Bagging是通过对数据进行自助采样(bootstrap sampling)生成多个数据集,然后对每个数据集训练一个基学习器,最后通过投票或平均等方式将基学习器的结果组合起来。而Boosting则是通过迭代地训练基学习器,每个基学习器都尝试纠正前一个基学习器的错误,最终将所有基学习器的结果加权组合。
集成学习的优点包括可以提高模型的泛化能力、增强模型的鲁棒性、减少过拟合风险等。然而,集成学习也存在一些缺点,例如增加了计算的复杂度和时间成本,以及可能受到基学习器之间相关性的影响。。
一个端到端的机器学习流程是什么样的?
偏差-方差均衡
如果不讨论偏差-方差均衡就无法讨论集成学习器的力量。
左上角,我们看到的是低偏差,低方差。这意味着你已靶心🎯为中心,并且你一直在击中靶心。这就是职业飞镖玩家的样子。
右上角,这是低偏差但高方差。这意味着你以🎯为中心,你并没有始终如一地击中它💔。所以这将是一个相当不错的飞镖玩家,但还不够好无法持续击中靶心。
右下角,高偏差和高方差,这意味着你不是以靶心为中心,而是分散开来,可能是我玩飞镖的样子💔。
最后左下角是高偏差和低方差,这意味着你不是以靶心为中心,但是飞镖相当集中。这要么是某个人对他应该瞄准的目标感到困惑,要么是一个职业飞镖玩家,只是瞄准靶心以外的其他东西。
一些统计背景知识:
估计量的性质 | 内容 |
---|---|
一致性 | 随着样本容量增大,估计量越来越准。 |
无偏性 | 估计量抽样分布的数学期望等于总体参数的真值。 |
有效性 | 如果两个估计量都是无偏的,那么离散程度越小的越有效。 |
让我们正式定义这些术语,然后我们将转向在这两者之间实现正确权衡的含义。
机器学习中的【偏差】是算法倾向于通过不考虑数据中的所有信息来始终学习错误的东西。【高偏差】是算法缺少特征与目标变量之间的相关关系的结果。用我们的飞镖类比,我们错过了靶心,该模型并不真正了解它应该瞄准什么。因此,它的预测始终以系统的方式偏离基础。
【方差】与算法对训练数据中微小波动的敏感性有关。【高方差】是算法拟合训练数据中随机噪声的结果,这也称为“过度拟合”。在我们的飞镖类比中,高方差意味着我们的飞镖投掷非常不精确。一次投掷可能会击中靶心,下一次可能会完全错过镖盘。这意味着模型非常非常拟合它已经见过的数据,也许只记住它看到的例子。所以他绝对可以确定与以前看到的相同的预测,但是在看起来与以前看到的完全不同的例子上,它的表现非常差。
目标就是:找到模型的正确复杂性,尽可能减少方差和偏差·。
让我们通过将其与二维决策模型联系起来,使这一点更加具体。我们试图将X和O区分开。
可以看到,一个非常简单的模型只是一条直线,您可以看到,它可能不会发现数据中的真实趋势。这是高偏差,低方差我们将这个模型称为欠拟合,因为它没有在模型中找到真正的趋势。
在另一个极端,一个非常复杂的模型会创建一个与训练数据过于接近的决策边界。因此,这个决策边界可能也没有捕捉到真实的趋势,它只是过度拟合训练数据,而且它可能对数据中的微小波动过于敏感。这是一个过于复杂,低偏差、高方差的模型,我们称之为过度拟合,因为它与训练数据过于接近。
然后再中间的某个地方,我们有一个决策边界,它适合数据终得真实趋势,而不会过度拟合训练数据中的每个X和O。这个模型将是低偏差、低方差的。
现在只是将这些附加到我们正在查看的情节中。我们可以把偏差方差权衡的含义放在一起。当我们使模型更加复杂时,我们正在减少偏差,但会增加方差。我们的目标是在两者之间找到适当的平衡,以获得最佳模型。
数据准备
在本章中,我们将介绍我们将使用的数据,对其进行清理,然后写出我们的训练验证和测试集,以确保我们对每个模型使用相同的确切数据。我们将使用的数据集是这个泰坦尼克号数据集,这是一个公开可用的数据集,通常用于机器学习。
值得一提的是,在本课程中,我们只是用Kaggle竞赛中的训练集,因为目标已从测试集中剥离。我们需要这些目标值来评估我们的模型,所以我们只从Kaggle竞赛中获取训练集,然后将其拆分为我们自己的训练验证和测试集。因此,此数据集包含有关1912年离开该船时船上的891人的信息。船上的一些人比其他人更有可能在沉船中幸存下来。没有足够的救生艇供每个人使用,因此优先考虑某些人群。我们的任务是建立一个模型,使用有关船上891人的某些信息来预测哪些人会行存下来。让我们快速演练此数据集中可用的功能。
我们将有乘客的姓名,我们有他们的机票等级,乘客的性别,他们的年龄,船上的兄弟姐妹和配偶的数量,船上的父母和孩子的数量,乘客的机票号码,乘客票价,舱号,他们登船的地方。
前五行数据
生存列是我们将要预测的列,0表示没有存活,1表示他们确实存活了下来。所有其他列将被视为模型的而潜在特征。
如前所述,在本节中,我们将清理数据,谭厚写出我们的训练、验证和测试集。清理数据背后的主要思想是,它允许我们尽可能格式化或构建数据,以潜在地预测一个人是否幸存下来。
清理连续特征
第一步是填写年龄特征的缺失值。现在,我们将称之为isnull和sum命令,它基本只是计算数据中每个特征的所有缺失值。
您可以看到年龄有177个缺失值。如果您浏览这些数据,会发现它是随机丢失的。您还会注意到客舱和登船缺少值,我们将在下节处理,因为它们是分类特征。因此,让我们为年龄填写这些缺失值。由于他们是随机丢失的,我们希望将其替换为一个不会以某种方式影响模型的值,因为缺少年龄本身并不意味着任何事情。因此我们将通过Age列上调用此fillna方法来替换缺失值,我们需要做的只是告诉它用什么替换这些缺失值。因此,我们将采用此年龄列,并告诉它在整个数据集中将缺失值替换为年龄的平均值。然后我们需要传递的最后一件事是这个inplace=True参数,并告诉python改变现在的泰坦尼尼克号,而无需创建新的数据帧。然后我们打印此数据集的前10行,您将看到年龄列都是整数,除了这个29.699118,这是缺失值的替代品。
titanic.head(10)
SibSp是指兄弟姐妹和配偶的数量,Parch是指父母和孩子的数量。这两个词通常用于描述一个人在旅行、移民或其他家庭相关的场景中与其同行的家庭成员数量。