问题标签 [ensemble-learning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scikit-learn - sklearn 中带有决策树桩的 Bagging:如何查看结果?
我正在使用带有深度 1 决策树的 BaggingClassifier 来尝试将我的数据拆分为分类器可能更好的子集。如何查看 Bagging 过程选择的数据子集?这是我正在使用的运行线:
r - 如何在 R 中堆叠机器学习模型
我是机器学习和 R 的新手。
我知道有一个名为caretEnsemble的 R 包,它可以方便地在 R 中堆叠模型。但是,这个包在处理多类分类任务时看起来有些问题。
暂时,我写了一些代码来尝试手动堆叠模型,这是我处理的示例:
现在我得到了三个模型:modelFitRF
、modelFitGBM
和modelFitLDA
,以及对应于基于 的这三个模型的三个预测向量test set
。
然后我将创建一个数据框来包含这些预测向量和原始因变量test set
:
然后,我只是使用这样的数据框作为一个新train set
的来创建一个堆叠模型:
考虑到堆叠模型通常应该提高预测的准确性,我想相信这可能是堆叠模型的权利。但是,我也怀疑在这里我使用了predDF
由三个模型的预测创建的test set
.
我不确定是否应该使用来自 的结果test set
,然后将它们应用回 以test set
获得最终预测?(我指的是下面的这个块:)
python - R的h2o.stack是否有python等价物?
我正在与堆叠学习者一起工作。根据H2OStackedEnsembleEstimator的文档, h2o 的 python 实现允许您轻松构建集成模型。然而,这仅限于构建具有相同基础训练数据的基础分类器。我有基于时间的功能,其最短日期因数据源而异。每个数据样本都是一个时间点。为了尽可能多地利用数据,我将特征分成两组(取决于相关性和最短日期)并训练两个单独的模型。我想组合这些模型,但 H2OStackedEnsembleEstimator 要求功能相同。
根据这篇关于 R 的堆叠集成实现的帖子,可以选择只执行元学习步骤,这应该只需要每个基本模型的 k 折交叉验证预测和真实目标值。
万一它越过任何人的脑海......对于我的特定问题,我意识到我将遇到与最小日期不匹配的元学习步骤的问题,并且我有想法来规避这个问题。
machine-learning - 使用卷积神经网络的集成学习
我创建了 22 个不同的卷积神经网络,它们都测试图像中是否存在唯一对象(每个分类器都是唯一的)。
测试集中的每个样本都有一个 22 长的向量的输出,看起来像这样 [0, 1, 1, 0, 0, 1, ..., 1],向量的二进制性质表示存在/缺少特定对象。
我已经在 keras 中实现了这一点,并且 22 个模型的平均准确率达到了 97% 左右。是否有任何特定的集成方法可以让我组合所有 22 个分类器?
r - 预测 AUC 1 的集成模型
我正在尝试将 3 个模型组合成一个集成模型:
- 模型 1 - XGBoost
- 模型 2 - 随机森林
- 模型 3 - 逻辑回归
注意:这里的所有代码都使用了 caret 包的 train() 函数。
单独来说,这 3 个模型在 55-60 范围内的 AUC 非常差,但并不是非常相关,所以我希望将它们组合起来。这是R中的基本代码:
因此,这会产生一个包含 4 列、三个模型预测和目标的数据框。我认为现在的想法是在这三个预测变量上运行另一个元模型,但是当我这样做时,无论我尝试哪种 XGBoost 超参数组合,我都会得到 1 的 AUC,所以我知道出了点问题。
这个设置在概念上不正确吗?
结果:
我觉得对于 CV 折叠,完美的 AUC 绝对表明存在数据错误。在这个元模型上尝试逻辑回归时,我也得到了完美的分离。这没有任何意义。
我知道这不是可重现的代码,但我认为这是一个不依赖于数据集的问题。如上所示,我有三个不同的预测,当然也没有单独的 AUC 值。结合起来,我应该会看到一些改进,但不是完美的分离。
编辑:使用来自 T. Scharf 的非常有用的建议,这是我如何获取不折叠预测以在元模型中使用的方法。预测将存储在“pred”下的模型中,但预测不是按原始顺序排列的。您需要对它们重新排序以正确堆叠。
使用 dplyr 的arrange() 函数,这就是我得到贝叶斯模型预测的方式:
在我的例子中,“Bayes_model”是插入符号训练对象,“Yes”是我正在建模的目标类。
r - r caretEnsemble 警告:索引未在 trControl 中定义
我有一些 r/caret 代码可以将多个交叉验证模型与某些数据相匹配,但我收到一条警告消息,提示我无法找到任何相关信息。这是我应该关心的事情吗?
日志输出:
...我认为我的 trainControl 对象定义了一个交叉验证结构(3x 5 折交叉验证)将为 cv 拆分生成一组索引。所以我很困惑为什么我会收到这个消息。
r - r caretEnsemble - 将 fit 参数传递给 caretList 中的一个特定模型
我有一些代码可以将多个(交叉验证的)模型与某些数据相匹配,如下所示。
到目前为止,一切都很好。但是,如果我添加'gbm'
到我的algorithmList
,我会收到大量无关的日志消息,因为gbm
似乎有一个verbose=TRUE
默认的 fit 参数。
根据插入符号文档,如果我自己运行train
(method='gbm'
而不是与在 a 中训练的几个模型一起运行caretList
),我可以简单地添加verbose=FALSE
to train()
,这将流向gbm
. 但是当我在caretList
.
因此,我想将verbose=FALSE
(或理论上的任何其他适合参数)专门传递给caretList
's中的一个特定模型methodList
。我怎样才能做到这一点?
tensorflow - 对象检测 API - 如何创建训练集合?
我已经为分类(每张图像的平均预测数)或语义分割(每像素的平均预测数)创建了一个集成,但我真的不知道如何进行对象检测。我的猜测是提取我所有网络的所有区域建议,然后在其中的X个上运行我的分类器,最后对所有边界框的预测进行平均。但是我应该如何使用遵循对象检测 API的架构来做到这一点?
我想可以使用 提取区域提案extract_proposal_features
,然后重新插入模型,但我认为这样做的唯一方法是使用自己的predict
方法等创建一个完整的新模型,处理我的 Ensemble 的所有模型。我是否错过了其他明显/更简单的方法?
r - 计算 R 数据框中的加权平均值
我有一个像上面这样的数据框,其列名称为:“f”、“index”、“values”、“lo.80”、“lo.95”、“hi.80”、“hi.95”。
我想要做的是计算来自不同模型的特定时间戳的预测结果的加权平均值。我的意思是
对于 auto.arima 中的每一行,在 ets 和 bats 中都有对应的行具有相同的时间戳值,因此加权平均值应该计算如下:
value_arima*1/3 + values_ets*1/3 + values_bats*1/3 ;应计算 lo.80 和其他列的相似值。
此结果应存储在具有所有加权平均值的新数据框中。
新的数据框可能类似于:
I think I need to use spread() and mutate () function to achieve this. Being new to R I'm unable to proceed after forming this dataframe.
Please help.
r - ts 对象在 predictHybrid 包的混合模型中无法识别
数据是这样的:
我正在尝试将 hybridModel 应用于时间序列数据以执行合奏。下面是我的代码:
关于将时间序列对象 tk_ts_df(ts 对象)拟合到混合模型;它给出了错误:“时间序列必须是数字,并且可能不是矩阵或数据框对象。”
但在链接上:https ://cran.r-project.org/web/packages/forecastHybrid/vignettes/forecastHybrid.html
明确提到:包的主力函数是 hybridModel(),该函数结合了“预测”包中的几个组件模型。至少,用户必须为 y 提供一个 ts 或数字向量
请提出我做错了什么。