Inductive vs Transductive Learning dalam Malware Detection

Perbedaan inductive dan transductive bukan sekadar istilah akademis. Ia menentukan apakah hasil model mewakili kondisi deployment atau hanya kemampuan melengkapi label pada graph yang sebagian sudah dikenal.
Definisi sederhana#
Transductive: struktur node train dan test telah terlihat saat training, walaupun label test disembunyikan. Inductive: model harus memprediksi graph, host, atau node baru yang tidak menjadi bagian struktur training.
Analogi: transductive seperti mengenali siswa tanpa label di kelas yang sama; inductive seperti mengajar hari ini lalu menilai siswa dari sekolah lain bulan depan.
Contoh split yang tampak benar tetapi bocor#
Satu memory dump menghasilkan 5.000 node. Kita mengacak 80% node untuk train dan 20% test. Process dan DLL test masih bertetangga dengan node train dari host dan insiden yang sama. Skor tinggi belum membuktikan model mampu menghadapi host baru.
# Berisiko leakage untuk klaim generalisasi host baru
train_nodes, test_nodes = random_split(nodes, [0.8, 0.2])
# Lebih jujur: pisahkan unit akuisisi
train_graphs = graphs[graphs.host_id.isin(train_hosts)]
test_graphs = graphs[graphs.host_id.isin(test_hosts)]
Protokol evaluasi yang disarankan#
- Kelompokkan data berdasarkan host, memory capture, dan waktu.
- Train pada host A–F.
- Validasi threshold pada host G.
- Uji sekali pada host H–J.
- Jika mengklaim ketahanan waktu, test harus lebih baru daripada train.
- Catat node/edge yang tidak pernah muncul sebelumnya.
Membaca grafik dengan benar#

ROC-AUC dapat tetap terlihat bagus pada kelas tidak seimbang. PR-AUC memperlihatkan trade-off precision dan recall pada kelas positif. Confusion matrix menjawab dampak operasional: berapa malware lolos dan berapa process normal menjadi alert.
Kapan transductive tetap berguna?#
Transductive masuk akal untuk melengkapi label dalam satu graph enterprise yang relatif tetap, investigasi satu insiden, atau eksperimen representasi. Klaimnya harus tepat: “mengklasifikasikan node tak berlabel pada graph yang dikenal”, bukan “mendeteksi malware pada host baru”.
Contoh laporan yang transparan#
| Eksperimen | Unit split | Struktur test terlihat? | Klaim |
|---|---|---|---|
| T1 | Node acak | Ya | Transductive node classification |
| I1 | Host | Tidak | Generalisasi ke host baru |
| I2 | Waktu | Tidak | Generalisasi temporal |
Latihan: ambil satu dataset graph Anda. Tuliskan apa yang “terlihat” model saat training: feature, adjacency, label, host, dan waktu. Jika informasi test muncul di salah satu jalur, perbaiki split sebelum menambah kompleksitas model.
Skenario deployment#
Model dilatih dari memory capture laboratorium Windows 10, lalu dipasang pada armada Windows 11 dengan software bisnis berbeda. Ini adalah pergeseran domain: feature distribution, DLL, versi OS, dan pola parent-child berubah. Evaluasi inductive antar-host belum otomatis menjawab pergeseran versi OS; buat test slice berdasarkan OS, departemen, dan waktu.
Confidence interval dan seed#
Satu hasil dapat kebetulan. Jalankan split yang ditetapkan lebih dulu dengan beberapa random seed untuk inisialisasi, lalu laporkan mean dan variasi. Jangan memilih seed terbaik. Bila jumlah host kecil, gunakan group cross-validation tanpa mencampur node antar-host.
Checklist klaim#
- Unit generalisasi disebut jelas: node, graph, host, atau waktu.
- Adjacency test tidak terlihat pada skenario inductive.
- Preprocessing hanya di-fit pada train.
- Threshold dipilih pada validation, bukan test.
- Unknown category ditangani eksplisit.
- Result table membedakan transductive dan inductive.
Jika pembaca dapat menjawab “apa yang benar-benar baru pada test set?”, ia akan lebih mudah menilai apakah angka model relevan bagi deployment.
💬 Comments (0)
No comments yet. Be the first to share your thoughts!