machine-learning - 具有多个特征的训练模型,其值在概念上是相同的

标签 machine-learning h2o

例如,假设我正在尝试训练一个二元分类器,该分类器采用以下形式的样本输入

x = {d=(type of desk), p1=(type of pen on desk), p2=(type of *another* pen on desk)}

假设我然后在样本上训练模型:

x1 = {wood, ballpoint, gel},      y1 = {0}

x2 = {wood, ballpoint, ink-well}, y2 = {1}.

并尝试对新样本进行预测:x3 = {wood, gel, ballpoint} 。在这种情况下我希望得到的响应是 y3 = {0} ,因为从概念上讲,哪支笔被指定为 p1 或 p2 并不重要(即我不希望它重要)。

当尝试运行此模型时(在我的例子中,使用 h2o.ai 生成的模型),我收到错误,类别枚举为 p2无效(因为模型在训练期间从未在 p2 的类别中见过“ballpoint”)(在 h2o 中:hex.genmodel.easy.exception.PredictUnknownCategoricalLevelException)

我的第一个想法是为每个样本生成“钢笔”特征的排列来训练模型。有没有更好的方法来处理这种情况?具体来说,在 h2o.ai Flow UI 解决方案中,因为这是我用来构建模型的解决方案。谢谢。

最佳答案

H2O 二进制模型(在 H2O 集群中运行的模型)将自动处理看不见的分类级别,但是,当您使用纯 Java POJO 模型方法生成预测时(如您的情况),这是一个可配置选项。在 EasyPredictModelWrapper 中,默认行为是未知的分类级别抛出 PredictUnknownCategoricalLevelException,这就是您看到该错误的原因。

EasyPredictModelWrapper Javadocs中有更多关于此的信息。 。 这是一个例子:

用于生成 POJO 和 MOJO 模型的简单预测 API。使用方法如下: 1. 实例化 EasyPredictModelWrapper 2.新建一行数据 3. 调用预测方法之一

这是一个例子:

// Step 1.
modelClassName = "your_pojo_model_downloaded_from_h2o";
GenModel rawModel;
rawModel = (GenModel) Class.forName(modelClassName).newInstance();

EasyPredictModelWrapper model = new EasyPredictModelWrapper(
                                    new EasyPredictModelWrapper.Config()
                                        .setModel(rawModel)
                         .setConvertUnknownCategoricalLevelsToNa(true));

// Step 2.
RowData row = new RowData();
row.put(new String("CategoricalColumnName"), new String("LevelName"));
row.put(new String("NumericColumnName1"), new String("42.0"));
row.put(new String("NumericColumnName2"), new Double(42.0));

// Step 3.
BinomialModelPrediction p = model.predictBinomial(row);

关于machine-learning - 具有多个特征的训练模型,其值在概念上是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45093030/

相关文章:

matlab - 使用 HMM Matlab 进行序列预测

Python/ML : Which methods to use for Multiclass Classification for Product Categorization?

hadoop - 我可以直接从配置单元表中提取数据到H2O吗?

python - 在 h2o AutoML 上检索 h2o AutoML 的交叉验证性能 (AUC) for holdout dataset

machine-learning - 在 H2O 中使用分类变量的最佳实践?

python - Windows 错误 [5] : Access Denied H2o Deep Learning Framework Initialization using Python

machine-learning - 在 SOM 中标准化数据和/或权重向量是否正确?

python - Tensorflow:估计器 n_classes 问题

machine-learning - K-means 文档聚类 - 接下来做什么?

java - 如何使用在 Python API 中计算和保存的 H2OModel