Snorkel:我可以在数据集中使用不同的功能来生成标记函数VS训练分类器吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Snorkel:我可以在数据集中使用不同的功能来生成标记函数VS训练分类器吗?相关的知识,希望对你有一定的参考价值。
我具有一组用于构建标签功能的功能(A组)以及一组用于训练sklearn分类器的功能(B组)
生成模型将输出一组概率标签,我可以用它们来训练我的分类器。
我是否需要将用于标签功能的功能(A组)添加到分类功能中? (B组)还是只使用生成的标签来训练我的分类器?
我正在参考snorkel spam tutorial,但我没有看到它们使用标签功能集中的功能来训练新的分类器。
[在cell 47
中似乎,功能化完全使用CountVectorizer:
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())
然后直接拟合一个keras模型:
# 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,
)
答案
从链接的浮潜教程中,标签功能(将输入映射到标签(“ HAM”,“ SPAM”,“弃权”)用于提供labels而不是features。
IIUC,这个想法是在您没有高质量的人类标签时生成标签。尽管这些“自动生成的”标签会非常嘈杂,但可以将其用作标签数据集的起点。学习过程是获取该数据集并学习一个模型,该模型对嵌入在这些标记函数中的知识进行编码。希望该模型可以更通用,并且可以将模型应用于看不见的数据。如果给定
足够的训练数据
,在某些情况下,如果其中某些标记功能(可以看作是固定规则)非常稳定(关于预测准确性),则您的模型应该能够学习。但是,在生产系统中,为了克服模型不稳定性的可能性,一个简单的解决方法是对带有可见数据的人为标签的机器预测进行[覆盖]。如果您认为这些标记功能可以用于某些特定的输入(模式),则也可以应用相同的想法。在这种情况下,标签功能将用于直接获取标签以覆盖机器预测。该过程可以作为您的机器学习模型运行之前的预检查来实施。以上是关于Snorkel:我可以在数据集中使用不同的功能来生成标记函数VS训练分类器吗?的主要内容,如果未能解决你的问题,请参考以下文章