Snorkel: Могу ли я иметь различные функции в наборе данных для создания функции маркировки VS, обучающей классификатор? - PullRequest
1 голос
/ 20 января 2020

У меня есть набор функций для построения функций маркировки (набор A) и другой набор функций для обучения классификатора sklearn (набор B)

Генеративная модель выведет набор вероятностных c этикеток который я могу использовать для обучения моего классификатора.

Нужно ли мне добавлять функции (набор A), которые я использовал для функций маркировки, в функции классификатора? (набор B) Или просто используйте метки, сгенерированные для обучения моего классификатора?

Я ссылался на учебник по snorkel spam , и я не видел, чтобы они использовали функции в функции маркировки, установленные для обучения новый классификатор.

Как видно из 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,
)

Ответы [ 2 ]

1 голос
/ 21 января 2020

Я задал тот же вопрос на странице snorkel github, и это ответ:

вам не нужно добавлять функции (набор A), которые вы использовали для LF, в функции классификатора , Во избежание простого подгонки конечной модели к функциям маркировки, лучше, чтобы функции для LF и конечной модели (набор A и набор B) были как можно более разными

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

0 голосов
/ 21 января 2020

Из вашего учебного пособия по связному трубке функции маркировки (которые отображают входные данные для меток ("HAM", "SPAM", "Abstain") используются для предоставления меток вместо функций .

IIU C, идея состоит в том, чтобы создавать ярлыки, когда у вас нет качественных человеческих ярлыков. Хотя эти «автоматически генерируемые» ярлыки могут быть довольно шумными, они могут служить отправной точкой маркированного набора данных. Процесс обучения состоит в том, чтобы взять этот набор данных и изучить модель, которая кодирует знания, встроенные в эти функции маркировки. Надеемся, что модель может быть более общей, и модель может быть применена к невидимым данным.

Если некоторые из этих функций маркировки (вместо этого они могут рассматриваться как фиксированные правила) очень стабильны (в отношении точности прогнозирования) в определенных условиях, учитывая достаточное количество обучающих данных , ваша модель должна быть в состоянии изучить это. в производственной системе, чтобы преодолеть возможность нестабильности модели, одним простым решением является override mach В целом прогноз с человеческими метками на видимых данных. Та же самая идея может быть применена также, если вы думаете, что эти функции маркировки могут использоваться для некоторого определенного c ввода (образца). В этом случае функции маркировки будут использоваться для непосредственного получения меток для переопределения машинных прогнозов. Этот процесс может быть реализован как предварительная проверка перед запуском вашей машинно-обученной модели.

...