首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snorkel:我可以在数据集中有不同的特性来生成标签函数,而不是训练分类器吗?

Snorkel:我可以在数据集中有不同的特性来生成标签函数,而不是训练分类器吗?
EN

Stack Overflow用户
提问于 2020-01-20 04:06:59
回答 2查看 315关注 0票数 1

我有一套用来建立标签功能的特征(A组)和另一组用来训练滑雪板分类器(B组)的功能。

生成模型将输出一组概率标签,我可以用来训练我的分类器。

我是否需要在我的分类器特征中添加标记函数所使用的特征(集合A)?(设置B)还是仅仅使用生成的标签来训练我的分类器?

我指的是snorkel垃圾邮件教程,我没有看到他们使用标签函数中的特性来训练新的分类器。

正如在cell 47中所看到的,特性化完全是使用CountVectorizer完成的:

代码语言:javascript
复制
from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(ngram_range=(1, 2))
X_train = vectorizer.fit_transform(df_train_filtered.text.tolist())

X_dev = vectorizer.transform(df_dev.text.tolist())
X_valid = vectorizer.transform(df_valid.text.tolist())
X_test = vectorizer.transform(df_test.text.tolist())

然后直接拟合角膜模型:

代码语言:javascript
复制
# Define a vanilla logistic regression model with Keras
keras_model = get_keras_logreg(input_dim=X_train.shape[1])

keras_model.fit(
    x=X_train,
    y=probs_train_filtered,
    validation_data=(X_valid, preds_to_probs(Y_valid, 2)),
    callbacks=[get_keras_early_stopping()],
    epochs=50,
    verbose=0,
)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-21 06:59:18

我向snorkel github页面提出了同样的问题,这是回答:

您不需要将用于LFs的特性(集合A)添加到分类器特性中。为了防止末端模型简单地过度拟合到标记函数,如果LFs和end模型(集合A和集合B)的特征尽可能不同,就更好了。

https://github.com/snorkel-team/snorkel-tutorials/issues/193#issuecomment-576450705

票数 3
EN

Stack Overflow用户

发布于 2020-01-21 01:04:59

从链接的snorkel教程中,标签函数(将输入映射到标签("HAM“、”垃圾邮件“、”弃权“)用于提供标签而不是features )。

IIUC,这个想法是在你没有高质量的人类标签的时候产生标签。虽然这些“自动生成”标签会很吵,但它可以作为标记数据集的起点。学习过程是利用这个数据集学习一个模型,该模型对这些标记函数中嵌入的知识进行编码。希望该模型能够更通用,并且该模型可以应用于未见数据。

如果某些标记函数(可以被视为固定的规则)在某些条件下非常稳定(关于预测精度),那么给定足够的训练数据,您的模型应该能够了解这一点。然而,在生产系统中,为了克服模型不稳定的可能性,一个简单的解决方法是在所见数据上用人工标记覆盖机器预测。如果您认为这些标记函数可以用于特定的输入(模式),也可以应用相同的想法。在这种情况下,标记函数将用于直接获取标签以覆盖机器预测。此过程可以在机器学习模型运行之前作为预检查来实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59816879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档