Saya punya daftar protein dengan nilai fitur mereka. Tabel sampel terlihat seperti ini:
...............Feature1...Feature2...Feature3...Feature4
Protein1
Protein2
Protein3
Protein4
Baris adalah protein dan kolom adalah fitur.
Saya juga punya daftar protein yang berinteraksi juga; sebagai contoh
Protein3, Protein4
Protein1, Protein2
Protein4, Protein1
Masalah : Untuk analisis awal saya ingin tahu fitur mana yang paling berkontribusi untuk interaksi protein.
Pemahaman saya adalah bahwa biasanya pohon keputusan dapat digunakan untuk memperoleh fitur paling penting berdasarkan entropi, tetapi saya tidak yakin bagaimana memperluasnya ke pasangan protein (yaitu interaksi). Apakah ada metode untuk tujuan seperti itu?
Jawaban:
Resep aktual untuk menyelesaikan masalah yang disajikan (satu kemungkinan solusi)
Sangat mudah untuk mengatasi masalah ini menggunakan alat pembelajaran mesin favorit saya, vowpal wabbit yang mendukung fitur kuadrat (lintas) melalui opsi -q -nya .
latar belakang vowpal wabbit
Sebelum kita beralih ke detail penggunaan. vowpal wabbit adalah perangkat lunak pembelajaran mesin online yang cepat dan dapat diskalakan untuk klasifikasi dan regresi. Saya mendapatkan tingkat pembelajaran (pelatihan) sekitar 5 juta fitur per detik di desktop saya tanpa batas pada ukuran data (jumlah contoh) karena sebagai alat pembelajaran online tidak memerlukan memuat data lengkap ke dalam memori. Ini memiliki banyak fitur menarik lainnya: dukungan untuk algoritma pembelajaran yang berbeda, fungsi banyak kehilangan, fitur jarang, tipe fitur campuran, dan banyak lagi, yang berada di luar cakupan pertanyaan ini.
Berikut adalah 3 langkah untuk menyelesaikan masalah dengan komentar:
Langkah 0: Unduh dan bangun vowpal wabbit dari github (lihat catatan di bagian bawah pada lingkungan yang didukung)
Langkah 1: Siapkan set pelatihan di mana setiap baris terlihat seperti ini:
penjelasan tentang format set pelatihan:
Angka paling kiri, 1.0 , adalah label (kekuatan interaksi, yang bisa berupa nilai numerik apa pun), string kedua ' protein1 / protein2 ' adalah tag untuk memberi garis identitas, TKI: "baris ini mewakili interaksi antara protein1 dan protein2 "; Ini opsional, dan Anda mungkin menganggapnya sebagai komentar. Tag-string ini juga digemakan dalam prediksi dari model untuk mengidentifikasi prediksi mana yang menjadi contoh, tetapi kami tidak memprediksi di sini, kami hanya memodelkan dan mempelajari model kami. Selanjutnya adalah ruang nama fitur input untuk protein1
|A
(kita perlu mendefinisikan ruang-nama sehingga kita dapat melintasi antara ruang-nama yang berbeda, itu tidak harusA
, bisa berupa kata apa saja, tetapi huruf pertama harus berbeda antara spasi nama sehingga kita dapat melintasinya dalam panggilan perintah) diikuti oleh daftar fitur input untuk protein1p1_...
. Terakhir adalah nama-ruang untuk protein2:|B
diikuti oleh fitur-nama protein2p2_...
.Salah satu keindahan dari vowpal wabbit adalah Anda dapat menggunakan string arbitrer untuk nama fitur (itu akan hash secara internal, tetapi Anda tidak peduli). Satu-satunya karakter khusus dalam set pelatihan adalah:
|
, untuk mengawali fitur input dan spasi nama, dan:
untuk memisahkan nama-nama fitur dari nilainyaIni
:
tidak digunakan di sini, karena kami menganggap setiap nama fitur protein mewakili boolean (keberadaan) sehingga nilainya default1
dan mereka tidak memerlukan nilai eksplisit.Sekarang Anda dapat menjalankan vowpal_wabbit (nama yang dapat dieksekusi
vw
) dengan-q AB
untuk membuat fitur silang secara otomatis (alias istilah interaksi) antara semua pasangan fitur yang memungkinkan di mana satu fitur dipilih dari protein1 (ruang nama dimulai denganA
) dan yang lainnya dari protein2 ( nama-ruang dimulai denganB
). vowpal_wabbit akan membaca data, mempelajari dan membuat model dengan bobot untuk setiap kombinasi fitur yang menghasilkan beberapa interaksi antara pasangan protein. Di sini, alih-alih menjalankanvw
secara langsung, kita akan menjalankannya melaluivw-varinfo
utilitas pembungkus, yang dilengkapi dengan vowpal wabbit, sebagai langkah terakhir kami.vw-varinfo
berjalanvw
untuk membuat model, dan membuang model dalam bentuk yang dapat dibaca manusia.Langkah 3: panggil vw-varinfo seperti ini:
vw-varinfo akan meneruskan semua opsi (
-q ... -c --passes ...
) apa adanya kevw
. Hanya-q AB
untuk melintasi dua ruang nama-fitur yang penting. Saya menambahkan satu opsi lagi di atas (jalankan beberapa lintasan), yang saya yakin akan memberikan hasil yang lebih baik.Perintah ini akan memanggil vowpal wabbit (
vw
) untuk berlatih pada kumpulan data, dan mencetak output yang saya yakin Anda cari: semua interaksi fitur dalam urutan kekuatan dan bobot relatifnya.Contoh input dan output
Misalkan input Anda
prot.dat
,, termasuk interaksi 3 arah antara 3 protein:Ini adalah contoh yang sangat minimalis.
vw
seharusnya tidak memiliki masalah dengan set data yang jauh lebih besar (misalnya jutaan baris, ratusan fitur), juga, saya memvariasikan label kekuatan interaksi dalam contoh. Jika dalam kasus Anda interaksi adalah boolean "ya" atau "tidak", cukup gunakan0
(tidak ada interaksi) atau1
(interaksi ada) sebagai bidang 1 di setiap baris.Berlari:
Akan menghasilkan semua interaksi yang mungkin (abaikan ruang-nama
A
danB
dalam output) dan bobotnya:Menunjukkan bahwa dalam data ini kontributor terkuat untuk setiap interaksi secara umum adalah 1) kehadiran
k
fitur, 2)k
fitur yang berinteraksi dengan dirinya sendiri (dengan asumsi kedua protein memilikinya), dan 3)k
berinteraksi denganm
. sedangkan yang terlemah (kontribusi negatif terhadap interaksi protein) adalahb
fitur yang dipasangkan denganm
fitur.Inilah halaman HOWTO di vw-varinfo
vowpal wabbit dibangun dari sumber (lihat tautan di atas) dan berjalan di Linux (dan mungkin juga unix lainnya), Mac OS-X, dan Windows.
HTH
sumber
Jaringan interaksi protein dapat diwakili oleh grafik yang tidak terarah, dengan protein membentuk simpul dan interaksinya di tepinya. Jika interaksi protein adalah fenomena biner, ujung-ujungnya juga biner (nol atau satu), jika tidak, Anda dapat menggunakan bilangan real. Anda dapat menggambarkan grafik ini secara numerik sebagai matriks kuadrat, dan khususnya yang simetris. Untuk menemukan fitur yang paling penting, Anda dapat mempertahankan yang memiliki proyeksi terbesar sepanjang vektor eigen dari matriks interaksi.
sumber