一文讲清楚人工智能集成学习之多模型投票(Voting)

一、集成学习

==========

集成学习是人工智能领域中一种强大的机器学习方法,它通过结合多个学习器来提高整体的预测或分类性能,通常能够比单一模型表现得更好。

1.1 集成学习的原理

集成学习的核心思想是“集思广益”,即通过集合多个模型的预测结果来提高整体的准确性。这种方法基于这样一个假设:如果每个模型都有一定的错误率,但这些错误是独立的,那么将它们结合起来可以降低整体的错误率。

1.2 集成学习的主要类型(主要的区别就是集成方式或者结构不同)

  • Bagging(Bootstrap Aggregating):通过自助采样(Bootstrap sampling)来创建多个数据集,然后在这些数据集上训练相同的模型,最后将结果进行平均或投票。(被家人们熟知的随机森林算法(Random Forest)就是Bagging的一个典型例子。)

  • Boosting:是一种顺序的集成方法,每个模型都在前一个模型的错误上进行训练,目的是逐渐减少整体的误差。AdaBoost、Gradient Boosting Decision Trees(GBDT)和eXtreme Gradient Boosting(XGBoost)是Boosting的几种实现。

  • Stacking(多模型堆叠):首先训练多个不同的基模型,然后将它们的预测作为新的特征输入到一个元模型中,元模型学习如何最好地组合这些预测。

  • Voting (多模型投票):与多模型堆叠类似但却又不相同,简单的投票机制,可以是硬投票或软投票。

  • Blending:与Stacking类似,但通常使用更复杂的方法来组合基模型的输出,例如使用线性回归、神经网络或其他机器学习算法。

集成学习里讲的单个模型实质其实就是单个人工智能算法,比如说可以是线性回归算法,svm算法,随机森林算法等等

1.3 集成学习的关键优势

  • 提高准确性:通过结合多个模型,可以减少过拟合和提高泛化能力。
  • 多样性:集成中的模型可以是不同类型的,这样可以捕获数据的不同方面。

1.4 集成学习的应用

集成学习被广泛应用于各种领域,包括但不限于:

  • 图像识别
  • 医疗诊断
  • 金融风险评估
  • 推荐系统

1.5 集成学习的挑战

  • 模型复杂性:集成模型通常比单一模型更复杂,需要更多的计算资源。
  • 训练时间:训练多个模型可能需要较长的时间。
  • 模型解释性:集成模型的决策过程可能不如单一模型那样容易解释。

1.6 实现集成学习

在实现集成学习时,需要考虑以下因素:

  • 多样性:选择不同类型的模型以增加多样性。
  • 模型数量:确定集成中模型的数量,过多的模型可能会导致性能饱和或过拟合。
  • 训练方法:选择合适的训练方法,如Bagging或Boosting。
  • 组合策略:确定如何组合各个模型的预测,例如平均、加权平均或投票。

想象一下,你和你的朋友们要决定晚上去哪家餐厅吃饭。每个人对食物的口味和偏好都不同,这就像是不同的基础学习器。你们每个人都可以根据自己的喜好做出一个决定,但这个决定可能并不完美,因为每个人的口味有限。

  1. 基础学习器:每个人代表一个基础学习器,有自己的偏好和决策标准。
  2. 多样性:每个人对餐厅的了解和喜好不同,这提供了多样性。比如,有人喜欢辣的,有人喜欢海鲜,有人注重环境。(作者就比较喜欢辛辣重口的,因为好吃😋)
  3. 训练过程:每个人根据自己的经验和偏好,独立地考虑晚上的餐厅选择。
  4. 集成策略:你们决定采用投票的方式来决定最终去哪家餐厅。每个人提出一个候选餐厅,然后大家投票选择。
  5. 评估与优化:在投票过程中,你们可能会讨论每个餐厅的优缺点,这就像是对模型的评估和优化过程。
  6. 最终决策:通过投票,你们可能会选择一个大家都能接受的餐厅,这个餐厅可能不是每个人的首选,但综合了大家的意见,是一个相对平衡的选择。

在这个例子中,集成学习的过程就像是你们这个小团队的决策过程。通过集合每个人的观点和偏好,你们得到了一个综合了多种意见的决策结果,这通常比任何一个人单独做出的决定要更加全面和可靠。集成学习在机器学习中也是类似的,通过结合多个模型的预测,我们可以得到一个更加鲁棒和准确的预测结果。

总的来说,集成学习是一种强大的技术,可以在许多情况下显著提高模型的性能。然而,它也需要仔细的设计和调整,以确保最终的集成模型既有效又高效。

本文的话主要选取其中的多模型投票部分进行更深一步的讲解和分析,OK,系好安全带,家人们发车喽!

二.多模型投票

===========

2.1 多模型投票的原理

多模型投票是一种集成学习技术,它通过结合多个独立训练的模型的预测结果来获得更好的整体预测性能。这种方法利用了不同模型的优势和多样性,以提高最终预测的准确性和鲁棒性。

为了方便家人们进一步理解,老样子,笔者举个生动的例子:

还是举和吃相关的例子。多模型投票机制的过程和原理其实就像是让一群人一起品尝同一道菜并判断这道菜好不好吃。你让一个人去品尝(也就是单个模型算法),他可能会觉得好吃,会觉得不好吃,会觉得一般,也就是会存在意外,特殊情况(每个人口味不同),这样的话也无法很好地知道这道菜的味道到底好不好吃,并且一个人再怎么品尝结果可能都大差不差,因为每个人对于菜品的口味喜欢和评判都基本固定,而我们又需要得出一个比较稳定的标准结果来知道这道菜好不好吃。但是你如果让一群人去品尝,一是这群人可能可以品尝到这道菜的更多方面和更多味道(也就是可以更全面的学习到样本数据的不同特征),这样当菜品味道发生变化时能方便我们能够较好地判断菜品好不好吃,二是一群人增加了这道菜是否好吃的结果的稳定性,好吃就是好吃,报吃就是报吃,减小了风险和偏离度,让菜品美味的评判变得更稳定和高效(提高了整套模型的鲁棒性)。其实这也是集成学习的本质。

2.2 多模型投票的类型

在多模型投票中,有几种常见的投票策略,包括:

  1. 硬投票(Majority Voting) :每个模型投出一个预测结果,最终预测结果由获得最多投票的类别决定。
  2. 软投票(Soft Voting) :每个模型给出概率估计,最终预测结果是所有模型概率的加权平均值。

通过结合多个模型的预测结果,多模型投票可以降低过拟合风险,提高模型的鲁棒性,并在某些情况下提高整体性能。这种方法常用于分类和回归问题,尤其适用于处理大型数据集或复杂问题。当然,家人们如果在这里不理解这两个投票方法的话也不用着急,下面我会特意对这两个进行讲解

2.3 多模型投票的过程

当涉及到多模型投票时,我们通常会选择一组不同类型或结构的模型,以确保它们在某些方面的预测能力存在差异。这种多样性有助于减少模型之间的相关性,从而提高整体性能。让我更具体地解释一下:

  1. 模型选择:在多模型投票中,首先要选择不同类型的基本模型,如决策树、支持向量机、神经网络等。这些模型应该在处理数据集时有不同的偏差和方差,以确保它们在不同方面具有优势。(之所以要选择不同类型的模型或者减少他们之间的相关性是为了让不同的模型能够学习到或者抓捕住样本数据中的不同特征,从而使模型的泛化能力,准确性和效率都能有所提高)
  2. 独立训练:每个选择的模型都会独立地训练在训练集上。这意味着每个模型都会学习到数据中的不同特征和模式,从而为投票过程提供多样性。
  3. 投票策略:在进行预测时,可以采用硬投票或软投票策略。硬投票是基于多数决定,而软投票则考虑每个模型的置信度。软投票通常在模型能够提供类别概率估计时更有效。
  4. 权重分配:在软投票中,可以为每个模型分配权重,以更好地反映其性能。这些权重可以根据模型的准确性、置信度或其他指标进行调整。(也就是调整下图中箭头代表的数值)

图片1.png

  1. 结果整合:最终的预测结果是根据投票策略和权重分配得出的。这种整合可以减少单个模型的偏差和提高整体性能。

通过结合多个模型的预测结果,多模型投票可以在各种机器学习任务中提高准确性和鲁棒性。这种集成方法在实践中被广泛应用,并且通常能够产生比单个模型更好的预测结果。

三、多模型投票–硬投票

================

在多模型投票中,硬投票(Hard Voting)是一种常见的集成策略,用于分类问题。

3.1 基本概念:

硬投票是一种简单的投票机制,其中每个模型的预测结果被视为一个投票,最终的预测是基于多数票决定的。

3.2 投票原理:

  1. 独立预测:首先,集成中的每个模型独立地对同一个数据点进行预测。每个模型的输出是一个类别标签。

  2. 收集投票:然后,将每个模型的预测结果收集起来,相当于每个模型为它预测的类别投了一票。

  3. 统计票数:对于每个类别,计算收到的票数。

  4. 确定胜者:选择票数最多的类别作为最终的预测结果。如果有多个类别票数相同,通常会选择第一个达到这个票数的类别,或者使用其他策略来解决平票问题。

3.3 优势:

  • 简单性:硬投票实现起来非常简单,不需要额外的参数调整。
  • 速度:由于不需要对模型的输出进行加权或计算平均值,硬投票通常计算速度快。
  • 适用性:硬投票适用于类别标签不连续的分类问题。

3.4 劣势:

硬投票作为一种集成学习中的投票机制,虽然简单易实现,但也存在一些弊端:

  1. 忽略概率信息:硬投票只考虑了类别标签,而忽略了模型预测的概率信息。这意味着即使某个模型对某个类别的预测非常不确定(即概率很低),它的投票权重和高概率预测的模型是相同的。

  2. 可能受到低准确率模型的影响:在硬投票中,即使某个模型的准确率不高,它的投票也可能对最终结果产生影响。这可能导致最终的集成模型性能不如预期。(也就是个别极端情况可能会影响整体模型效果)

  3. 在类别不平衡的情况下可能表现不佳:在某些类别的样本数量远多于其他类别的情况下,硬投票可能偏向于多数类,而不是最可能的类别。

  4. 缺乏灵活性:硬投票是一种“一刀切”的方法,它不提供调整不同模型权重的灵活性,这可能限制了模型性能的进一步提升。

  5. 在平票情况下可能产生随机性:当多个类别获得相同数量的票时,硬投票可能需要随机选择一个类别作为最终预测,这增加了结果的不确定性。

3.5 实例:

假设我们有一个集成学习系统,包含三个模型A、B和C,它们对一个新数据点的预测结果如下:

  • 模型A预测:类别1
  • 模型B预测:类别2
  • 模型C预测:类别1

在这个例子中,类别1获得了两票(来自模型A和C),而类别2只获得了一票(来自模型B)。根据硬投票规则,最终的预测结果是类别1。

如果这个例子不够直观生动的话,下面这位up主的例子可能更清晰点:

20201202143447491.png

模型 1:A - 99%、B - 1%,表示模型 1 认为该样本是 A 类型的概率为 99%,为 B 类型的概率为 1%;

但是在实际情况或者大多数应用场景中,我们往往选择的是软投票的方法。

四、多模型投票–软投票

================

软投票(Soft Voting)是多模型投票中的一种集成策略,特别适用于分类问题。它与硬投票不同,软投票考虑了每个模型预测的概率信息,而不是单纯的类别标签。

4.1 基本概念:

软投票是一种基于概率的投票机制,其中每个模型的预测结果被看作是对类别的某种概率估计。最终的预测是基于所有模型预测概率的加权平均值来确定的。

4.2 投票原理:

  1. 概率预测:每个模型独立地对数据点进行预测,并输出每个类别的概率估计。这些概率表示模型认为数据点属于各个类别的置信度。

  2. 收集概率:将所有模型对每个类别的概率预测收集起来。

  3. 计算加权平均:对于每个类别,计算所有模型预测概率的加权平均值。如果没有特定的权重,通常使用简单的算术平均。

  4. 确定最终预测:选择加权平均概率最高的类别作为最终的预测结果。

4.3 优势:

  • 概率信息的利用:软投票利用了每个模型提供的概率信息,这使得集成模型能够更细致地考虑每个模型的置信度。
  • 灵活性:软投票可以根据模型的性能给予不同的权重,从而提高集成模型的准确性。
  • 适用性:软投票适用于那些能够输出概率估计的模型,如逻辑回归、支持向量机等。

4.4 劣势(注意即可):

软投票虽然在很多情况下能够提高集成模型的性能,但它也有一些潜在的弊端:

  1. 依赖概率输出:软投票依赖于模型能够提供准确的概率输出。如果模型的概率估计不准确或不稳定,软投票的效果可能会受到影响。

  2. 计算复杂性:相比于硬投票,软投票需要计算每个模型对每个类别的概率估计的平均值,这可能会增加计算的复杂性和时间。

  3. 可能的过拟合风险:如果集成中的模型对训练数据过拟合,软投票可能会放大这种过拟合,因为概率输出可能会过度反映训练数据中的噪声。

  4. 权重分配问题:在软投票中,如果不同模型的预测概率被赋予相同的权重,那么性能较差的模型可能会对最终结果产生负面影响。虽然可以通过调整权重来解决这个问题,但找到最优权重分配可能需要额外的调参工作。

  5. 对异常值敏感:如果集成中的某个模型对某个类别的概率估计异常高或异常低,这可能会对平均概率产生较大影响,从而影响最终的预测结果。

  6. 需要模型兼容性:软投票要求所有模型都能够输出概率估计,这可能限制了可以使用的模型类型,特别是那些只能提供确定性预测的模型。

  7. 在某些情况下可能不如硬投票:在某些特定情况下,如果集成中的模型性能差异较大,硬投票可能会因为忽略不准确模型的概率输出而表现得更好。

尽管存在这些潜在的弊端,软投票在很多情况下仍然是一个有效的集成策略,特别是当集成中的模型能够提供可靠的概率输出时。通过仔细选择模型、调整权重和评估集成模型的性能,可以最大限度地减少这些弊端的影响。

4.5 例子:

假设我们有三个模型A、B和C,它们对一个新数据点的预测概率如下:

  • 模型A预测:类别1的概率为0.7,类别2的概率为0.3。
  • 模型B预测:类别1的概率为0.6,类别2的概率为0.4。
  • 模型C预测:类别1的概率为0.8,类别2的概率为0.2。

使用软投票,我们会计算每个类别的概率平均值:

  • 类别1的平均概率 = (0.7 + 0.6 + 0.8) / 3 = 0.7
  • 类别2的平均概率 = (0.3 + 0.4 + 0.2) / 3 = 0.3

最终预测会选择概率平均值最高的类别,即类别1。

借用某up主的图片进一步生动地讲解说明:

2020120214391899.png

软投票通常能够提供比硬投票更平滑和更准确的集成结果,尤其是在模型能够提供可靠的概率估计时。然而,软投票的实现可能比硬投票稍微复杂一些,因为它需要模型能够输出概率估计,并且可能需要额外的计算来处理这些概率。但是在大多数情况下,我们依旧采用的是软投票。

五、多模型投票代码示例

===============

光说不练假把式,对吧,所以笔者这里使用scikit-learn库给出一个集成学习多模型投票的代码示例,帮助大家更好地理解和感受多模型投票的本质和过程。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import VotingClassifier
from sklearn.metrics import accuracy_score

# 加载数据集
data = load_iris()
X, y = data.data, data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建各个分类器
clf1 = LogisticRegression(max_iter=200)  #逻辑回归算法模型
clf2 = RandomForestClassifier(n_estimators=50, random_state=42)  #随机森林算法模型
clf3 = GradientBoostingClassifier(n_estimators=10)  #梯度提升算法模型
clf4 = SVC(probability=True)  #  支持向量机 注意:SVC需要设置probability=True以进行软投票

# 创建硬投票分类器
hard_voting_clf = VotingClassifier(estimators=[
    ('lr', clf1), ('rf', clf2), ('gb', clf3), ('svc', clf4)
], voting='hard')

# 训练硬投票分类器
hard_voting_clf.fit(X_train, y_train)

# 预测测试集并计算准确率
hard_voting_pred = hard_voting_clf.predict(X_test)
hard_voting_accuracy = accuracy_score(y_test, hard_voting_pred)
print(f"硬投票准确率: {hard_voting_accuracy}")

# 创建软投票分类器
soft_voting_clf = VotingClassifier(estimators=[
    ('lr', clf1), ('rf', clf2), ('gb', clf3), ('svc', clf4)
], voting='soft')

# 训练软投票分类器
soft_voting_clf.fit(X_train, y_train)

# 预测测试集并计算准确率
soft_voting_pred = soft_voting_clf.predict(X_test)
soft_voting_accuracy = accuracy_score(y_test, soft_voting_pred)
print(f"软投票准确率: {soft_voting_accuracy}")

我们的这段代码首先加载了Iris数据集,并将其划分为训练集和测试集。然后 定义了四个不同的分类器:逻辑回归、随机森林、梯度提升和支持向量机。对于软投票,确保支持向量机的probability参数设置为True,以便它可以输出概率估计。

接下来,创建了两个VotingClassifier实例,一个用于硬投票,另一个用于软投票。在硬投票中,所有模型的预测被视为等权重的投票;而在软投票中,每个模型的预测概率被平均计算以确定最终预测。

最后,分别训练了硬投票和软投票的集成分类器,并在测试集上进行了预测,打印出了各自的准确率。

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

在这里插入图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.2.1 什么是Prompt
    • L2.2.2 Prompt框架应用现状
    • L2.2.3 基于GPTAS的Prompt框架
    • L2.2.4 Prompt框架与Thought
    • L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
    • L2.3.1 流水线工程的概念
    • L2.3.2 流水线工程的优点
    • L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
    • L3.1.1 Agent模型框架的设计理念
    • L3.1.2 Agent模型框架的核心组件
    • L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
    • L3.2.1 MetaGPT的基本概念
    • L3.2.2 MetaGPT的工作原理
    • L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
    • L3.3.1 ChatGLM的特点
    • L3.3.2 ChatGLM的开发环境
    • L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
    • L3.4.1 LLAMA的特点
    • L3.4.2 LLAMA的开发环境
    • L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

在这里插入图片描述

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
集成学习是一种通过组合多个基本模型来提高预测准确性的机器学习方法。下面是一个使用Python实现集成学习模型的示例代码: ```python # 导入所需的库 from sklearn.ensemble import VotingClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.svm import SVC from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载数据集 iris = load_iris() X, y = iris.data, iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 定义基本模型 model1 = DecisionTreeClassifier() model2 = KNeighborsClassifier() model3 = SVC() # 定义集成学习模型 ensemble_model = VotingClassifier(estimators=[('dt', model1), ('knn', model2), ('svm', model3)], voting='hard') # 训练集成学习模型 ensemble_model.fit(X_train, y_train) # 在测试集上进行预测 y_pred = ensemble_model.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print("准确率:", accuracy) ``` 在上面的代码中,我们使用了三个基本模型:决策树分类器(DecisionTreeClassifier)、K近邻分类器(KNeighborsClassifier)和支持向量机分类器(SVC)。然后,我们使用VotingClassifier来定义集成学习模型,其中estimators参数指定了基本模型的名称和实例,voting参数指定了投票策略('hard'表示多数表决)。最后,我们使用fit方法训练集成学习模型,并使用predict方法在测试集上进行预测,最后计算准确率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值