SERP 数据在集成学习中的优势

SERP 数据在集成学习中的优势

自动图像分类生成器 允许您对机器学习模型执行自动化数据收集、训练自动化和测试。授权于 SerpApi 的 Google 图片抓取 API ,该工具无需手动输入数据,并通过在其工作流程中提供预处理功能来减少人为错误。

上周我们讨论了如何使用先前创建的数据集获取机器学习模型的训练和测试过程的自动数据捕获,并制作一个自动化脚本以使用 Python 收集有关最佳机器学习模型的信息。

本周我们将讨论如何结合多种相同类型的二元分类算法(在我们的案例中为 CNN)来创建基本的集成学习模型,以及 SERP 数据在集成学习中的优势。

有关该工具的状态、它的创建方式、我们使用它的目的的更多信息,您可以滚动到页面底部。

什么是 Python 中的集成学习?

集成学习是指在其预测模型中至少包含两种机器学习算法的机器学习模型。集成模型的关键权衡是复杂性以换取具有不同神经网络的增强算法。 Python 拥有各种专用于数据科学和机器学习的工具、框架和库,以创建高级集成学习模型。
如何在 Python 中创建 Ensemble?

那里有整个库只是为了像 xgboost 这样的集成学习。也存在机器学习框架的原生方法,如 scikit-learn 的 DecisionTreeClassifier、BaggingClassifier 或 GradientBoostingRegressor。我真的很想在未来进入他们。能够通过调用单行代码来创建集成学习模型,例如:
从 sklearn.ensemble 导入 VotingClassifier 或者
从 sklearn.ensemble 导入 RandomForestClassifier 或者
从 sklearn.model_selection 导入 train_test_split 或者
从 sklearn.ensemble 导入 AdaBoostClassifier
或者简单地调用以前创建的物流回归模型:
从 sklearn.linear_model 导入 LogisticRegression
似乎是一种非常简单的方法来创建具有稀疏训练数据的子集,并采用包含不同分类问题模型的集成学习技术。
但是,我想使用简单的软件工程技术来解决这个问题。我们想让它成为一个依赖较少的客户端工具。因此,如果它仍然可以达到目的,那么进行定制工作将是明智的。

什么是集成学习,并举例说明?

在开始之前,我想提醒读者,我并不精通集成学习的术语。有不同种类的集成方法和集成模型,例如 bagging、bootstrap 聚合、梯度提升决策树等。我真的不知道我对通过单独训练它们并获得最常见答案来提升算法的解决方案的建议。我不是数据科学家,但我最好的猜测是硬投票。

在本教程中,我们将使用二进制分类训练多个单独的 CNN 模型,让它们对类别标签进行逐个预测,并收集每个模型以将多数票作为答案。在接下来的几周里,如果我们的二元分类器过度拟合,我们可能会通过考虑二元模型训练的图像数量、验证精度等来创建某种软投票系统,以解决回归问题,从而创建一个概率模型。但是我们需要来自这个模型的指标和强大的分类器,以便将其转换为回归模型。

简单来说,如果你有 3 个 American Dog Species 作为类标签,即, 美国无毛梗 , 美国雪橇犬 , 和 美国爱斯基摩犬 , 你将需要 3 个二元分类器:

American_hairless_terrier_vs_alaskan_malamute
alaskan_malamute_vs_american_eskimo_dog
alaskan_malamute_vs_american_eskimo_dog

然后我们将在这 3 个单独的模型上运行图像,并得到最常见的答案作为预测。

集成学习的优势是什么?

集成学习通过将强学习器模型与弱学习器进行对比,减少了强学习器模型的任意错误预测。此外,可以结合强大的学习器模型来实现更好的性能。换句话说,集成学习可用

想象一下,我们有一个分类器的 3 个类别标签,并且该单个模型的测试集给出了 51% 的准确率。这可以被识别为弱学习器。假设您要在两个标签之间进行二元分类,每个单独模型的准确率约为 65%。这里的假设是,如果我们将这些模型中的每一个的预测结合起来,它们的加权平均值应该高于 51%,这高于单基学习器所能达到的水平。你可能认为它是 最大特征 = 2 , 和 最大深度 = 1 决策树。

这里的另一个优点是,在某些情况下,当您拥有多个模型时,更容易控制数据点。例如,如果作为奇异模型组合的新模型有一个过度拟合的 CNN,则可以很容易地用新的训练数据集或新算法对其进行重新训练,然后再进行替换。也许,你甚至可以改变分类的方法,用线性回归、KNN、SVM 或 SVC 等替换该部分。毕竟,最终目标是对预测进行交叉验证。

SERP 数据在集成学习中的优势是什么?

SERP 数据可用于为机器学习创建专门的训练和测试数据集。可以通过按大小、规格、来源等过滤目标结果来减少噪声。对于集成学习,可以使用 SERP 数据优化单个机器学习模型,以更好地服务于组合模型。

在我们的例子中,我们能够在我们的单个模型中创建一个包含训练项 (x_train) 和测试项 (x_test) 的数据集,这些模型仅包含 美国雪橇犬 , 美国爱斯基摩犬 等,而且只有方形图像更容易控制内核大小。

例如,您可以从 Kaggle 之类的地方获取数据集,导入 pandas,并通过在标签文件上使用 read_csv 方法来选择您想要的图像以专门化您的数据集。但是,使用 SERP 数据,您无需通过带有标签的长 CSV 文件或使用任何其他库即可收集这些数据。您只需指定一次搜索,然后收集您想要的所有数据。

使用 SerpApi 的 Image Scraper API,例如 SerpApi 的 Google 图片抓取 API , SerpApi 的 Yandex 图片 API , 或者 Naver 图片 API 您可以使用可以塑造的简单查询来创建专门的图像数据集 操场 .

您也可以将其他形式的数据用于机器学习目的。访问 使用 SERP 数据构建机器学习模型页面 以获得更好的外观。

立即注册 SerpApi 以获得免费积分。

集成学习的一个例子

我们使用公式来计算 CNN 中第一个全连接层的输入大小:

再次提醒这是如果输入是方形图像。

让我们也定义一个带有 2 个卷积的简单 CNN:

这绝不是一个完全适用的模型。但它将帮助我们构建必要的部分。该模型的准确率将在 %35 到 %65 左右。对我们来说并不是很好。

让我们选择必要的部分:

这里的输出大小代表最后一个卷积层的输出大小,image_size既是图像的宽度也是高度。

让我们定义我们的标签:

让我们还使用标签索引创建每个可能的唯一配对:

对于那些想知道这个 index_list 将有多少项目的人,公式是:
n_estimators = label_size!/((label_size-2)!*2!) 在哪里 n_estimators 表示唯一的 pairings(label_combinations) 大小。

让我们开始迭代我们想要在其上制作模型的两个标签,并在其上命名模型:

对于每个周期,标签将类似于:
alaskan_malamute_vs_american_eskimo_dog

让我们计算第一个全连接层的输入大小:

让我们在每个周期创建训练字典并将它们添加到列表中:

现在,为了将来的目的,让我们检查已经在特定二进制分类上训练过的模型:

让我们一一训练二元分类模型:

请注意,如果存在模型,我们将跳过训练过程。

此时,我们有一个名为 malamute_example.jpg 里面 例子 文件夹。我们把它塑造成模型可以识别的形式:

现在我们将图像作为张量,让我们一个一个地调用每个二元分类模型,并将预测收集到一个列表中:

请注意,由于我们对标签张量使用 one-hot 向量,因此我们可以获取预测张量中最大值的索引,然后使用它从标签列表中获取答案。

最后,让我们找到最频繁的预测,并通过字符串操作将其作为最终答案:

这是您在之前已经训练过的模型时运行它时的输出:

预测为此奏效。但这并不是一个很好的指标,表明它从长远来看是有效的。 CNN模型还得用上周的脚本进一步调整,然后在这里替换。

完整代码

结论

我感谢读者的关注和 SerpApi 的杰出人物 感谢他们的支持。在接下来的几周里,我们将讨论如何优化单个二元分类模型,如何将所有这些模型存储在一个文件中,以及如何最小化训练过程以使其成为命令行工具。

最初发表于 https://serpapi.com 2022 年 9 月 8 日。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/23030/27090912

posted @ 2022-09-09 12:27  哈哈哈来了啊啊啊  阅读(192)  评论(0编辑  收藏  举报