Saya memiliki satu set fitur untuk membangun fungsi pelabelan (set A) dan satu set fitur untuk melatih classifier sklearn (set B)

Model generatif akan menampilkan satu set label probabilisitik yang dapat saya gunakan untuk melatih pengklasifikasi saya.

Apakah saya perlu menambahkan fitur (set A) yang saya gunakan untuk fungsi pelabelan ke dalam fitur classifier saya? (set B) Atau cukup gunakan label yang dihasilkan untuk melatih classifier saya?

Saya merujuk ke tutorial spam snorkeling dan saya tidak melihat mereka menggunakan fitur dalam fungsi pelabelan yang diatur untuk melatih pengklasifikasi baru.

Seperti yang terlihat di cell 47, fiturisasi dilakukan sepenuhnya menggunakan 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())

Dan kemudian langsung memasang model 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,
)
0
jxn 20 Januari 2020, 07:06

2 jawaban

Jawaban Terbaik

Saya mengajukan pertanyaan yang sama ke halaman github snorkeling dan ini jawabannya:

Anda tidak perlu menambahkan fitur (set A) yang Anda gunakan untuk LF ke dalam fitur classifier. Untuk mencegah model akhir dari sekadar overfitting ke fungsi pelabelan, lebih baik jika fitur untuk LF dan model akhir (set A dan set B) berbeda mungkin

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

2
jxn 21 Januari 2020, 06:59

Dari tutorial snorkel tertaut Anda, fungsi pelabelan (yang memetakan input ke label ("HAM", "SPAM", "Abstain") digunakan untuk memberikan label alih-alih fitur .

IIUC, idenya adalah untuk menghasilkan label ketika Anda tidak memiliki label manusia yang berkualitas baik. Meskipun label "dibuat secara otomatis" ini akan cukup berisik, label ini dapat berfungsi sebagai titik awal dari kumpulan data berlabel. Proses pembelajaran adalah mengambil dataset ini dan mempelajari model, yang mengkodekan pengetahuan yang tertanam dalam fungsi pelabelan ini. Semoga modelnya bisa lebih umum dan modelnya bisa diterapkan pada data yang tidak terlihat.

Jika beberapa fungsi pelabelan ini (sebagai gantinya dapat dianggap sebagai aturan tetap) sangat stabil (mengenai akurasi prediksi) dalam kondisi tertentu, dengan data pelatihan yang cukup, model Anda seharusnya dapat mempelajarinya. Namun, dalam sistem produksi, untuk mengatasi kemungkinan ketidakstabilan model, satu perbaikan mudah adalah mengganti prediksi mesin dengan label manusia pada data yang dilihat. Ide yang sama dapat diterapkan juga jika menurut Anda fungsi pelabelan ini dapat digunakan untuk beberapa input (pola) tertentu. Dalam hal ini, fungsi pelabelan akan digunakan untuk langsung mendapatkan label untuk mengesampingkan prediksi mesin. Proses ini dapat diimplementasikan sebagai pra-pemeriksaan sebelum model yang dipelajari mesin Anda berjalan.

0
greeness 21 Januari 2020, 01:19