Etkileşim modellerinde en iyi özellikleri bulma


13

Özellik değerlerine sahip proteinler listem var. Örnek bir tablo şöyle görünür:

...............Feature1...Feature2...Feature3...Feature4  
Protein1  
Protein2  
Protein3  
Protein4  

Satırlar proteinlerdir ve sütunlar özelliklerdir.

Ayrıca etkileşime giren proteinler listem var; Örneğin

Protein3, Protein4  
Protein1, Protein2  
Protein4, Protein1  

Sorun : Bir ön analiz için protein etkileşimlerinde hangi özelliklerin en çok katkıda bulunduğunu bilmek istiyorum.

Anladığım kadarıyla, normalde karar ağaçları entropiye dayalı en önemli özelliği elde etmek için kullanılabilir, ancak protein çiftlerine (yani etkileşimler) nasıl genişletileceğinden emin değilim. Böyle bir amaç için bir yöntem var mı?


Sizi doğru anladığımı söyle: herhangi bir protein çifti için bir etkileşim gücünüz var (örneğin, proteinler etkileşime girmezse sıfırdır) ve sonra değeri yüksek derecede ilişkili olacak bir vektör vektörüne sahip olmak istersiniz. etkileşim gücü ile? Veya başka bir deyişle, proteinler arasındaki etkileşim gücünü tahmin etmenize izin verecek olan nedir?
dsign

Yanıtlar:


25

Sunulan sorunun çözümü için gerçek tarif (olası bir çözüm)

-Q seçeneği ile ikinci dereceden (çapraz) özellikleri destekleyen en sevdiğim makine-öğrenme aracı olan vowpal wabbit'i kullanarak bu sorunu çözmek basittir .

vowpal wabbit arka plan

Kullanım detaylarına geçmeden önce. vowpal wabbit, hem sınıflandırma hem de regresyon için hızlı ve ölçeklenebilir bir çevrimiçi makine öğrenme yazılımıdır. Çevrimiçi öğrenme aracı olarak, verilerin tamamını belleğe yüklemeyi gerektirmediğinden, masaüstümde saniyede yaklaşık 5 milyon özellikli öğrenme (eğitim) oranları elde ediyorum (veri sayısı (örnek sayısı)). Diğer birçok çekici özelliğe sahiptir: bu sorunun kapsamı dışında olan farklı öğrenme algoritmaları, çoklu kayıp fonksiyonları, seyrek özellikler, karışık özellik türleri ve daha fazlası için destek.

Sorunu yorum ile çözmenin 3 adımı:

Adım 0: Github'dan Vowpal WABbit'i indirin ve oluşturun (desteklenen ortamlarda aşağıdaki nota bakın)

Adım 1: Her hattın şöyle göründüğü bir eğitim seti hazırlayın:

1.0 protein1/protein2|A p1_feature1 p1_feature2 ... |B p2_feature1 ...
...

eğitim seti formatının açıklaması:

En soldaki sayı olan 1.0 , etikettir (herhangi bir sayısal değer olabilen etkileşim gücü), ikinci dize ' protein1 / protein2 ', çizgiye bir kimlik vermek için bir etikettir, IOW: "Bu çizgi, protein1 ve protein2" ; İsteğe bağlıdır ve bunu bir yorum olarak düşünebilirsiniz. Bu etiket dizesi, hangi tahminin hangi örneğe ait olduğunu belirlemek için modellerden gelen tahminlerde de tekrarlanır, ancak burada tahmin etmiyoruz, sadece modelimizi modelliyor ve inceliyoruz. Daha sonra protein1 için giriş özelliği ad alanı geliyor |A(farklı ad alanları arasında geçiş yapabilmemiz için bir ad alanı tanımlamamız gerekiyor, olması gerekmiyorA, aslında herhangi bir sözcük olabilir, ancak ilk harfin ad boşlukları arasında farklı olması gerekir, böylece bunları komut çağrısında geçebiliriz) ve ardından protein1 için girdi özellikleri listesi gelir p1_.... Son olarak protein2 için isim-alanı gelir: |Bardından protein2'nin özellik-adları gelir p2_....

Vowpal wabbit'in güzelliklerinden biri, özellik adları için rastgele dizeler kullanabilmenizdir (bunları dahili olarak hash eder, ancak umursamazsınız). Eğitim setindeki tek özel karakter şunlardır:

  • boşluklar (belli ki)
  • |, giriş özelliklerinin ve ad boşluklarının önekini eklemek ve
  • : özellik adlarını değerlerinden ayırmak için

:Biz onların değerlerini varsayılan böylece her proteinin özelliği adı bir boolean (varlığı) temsil varsayalım, çünkü burada kullanılmaz 1ve açık değerleri gerek yoktur.

Artık vowpal_wabbit (çalıştırılabilir ad vw) ile -q AB, bir özelliğin protein1 (ad adıyla başlayan A) ve diğerinin protein2 ( ad-alanı ile başlayan B). vowpal_wabbit, verileri okuyacak, her bir özellik kombinasyonu için protein çifti arasında bir miktar etkileşime neden olan ağırlıkları olan bir model öğrenecek ve oluşturacaktır. Burada, vwdoğrudan koşmak yerine, vw-varinfoson adımımız olarak vowpal wabbit ile birlikte gelen sarmalayıcı yardımcı programı ile çalışacağız. modeli oluşturmak için vw-varinfoçalışır vwve modeli insan tarafından okunabilir biçimde döker.

Adım 3: Vw-varinfo'yu şu şekilde arayın :

vw-varinfo -q AB -c --passes 20 your_data_set_file

vw-varinfo tüm seçenekleri ( -q ... -c --passes ...) olduğu gibi geçirecektir vw. Yalnızca -q ABiki özellik ad boşluğunu geçmek için gereklidir. Daha iyi sonuçlar vereceğine inandığım bir seçenek daha ekledim (birden fazla geçişi çalıştırın).

Bu komut vw, veri kümesi üzerinde antrenman yapmak için vowpal wabbit ( ) 'i çağırır ve aradığımı düşündüğüm çıktıyı yazdırır: tüm özellik etkileşimleri güç sırasına ve göreceli ağırlıklarına göre.

Örnek giriş ve çıkış

Girdinizi varsayalım, prot.dat3 protein arasında 3 yönlü bir etkileşim içerir:

1.0 protein1/protein2|A a b |B k m
0.6 protein2/protein3|A k m |B b c d
2.2 protein1/protein3|A a b |B b c d

Bu kasten çok minimalist bir örnektir. vwçok daha büyük veri kümeleriyle (örneğin milyonlarca satır, yüzlerce özellik) herhangi bir sorun olmamalı, ayrıca örneklerde etkileşim gücü etiketlerini değiştirdim. Durumunuzda etkileşim boolean "evet" veya "hayır" ise, her satırdaki 1. alan olarak (etkileşim yok) 0veya 1(etkileşim var) kullanın.

Koşu:

vw-varinfo -q AB -c --passes 20 prot.dat

Olası tüm etkileşimleri (ad boşluklarını Ave Bçıktıdaki yoksay ) ve ağırlıklarını verir:

FeatureName        HashVal   MinVal   MaxVal    Weight   RelScore
A^k                 220268     0.00     1.00   +0.3804    100.00%
A^k^B^k             254241     0.00     0.00   +0.3804    100.00%
A^k^B^m              93047     0.00     0.00   +0.3804    100.00%
B^k                 178789     0.00     1.00   +0.1011     26.58%
B^m                  17595     0.00     1.00   +0.1011     26.58%
[... trimmed for brevity ...]
A^m^B^m             141879     0.00     0.00   +0.0000      0.00%
Constant            116060     0.00     0.00   +0.1515      0.00%
A^b                 139167     0.00     1.00   -0.0641    -16.86%
A^b^B^k             204424     0.00     0.00   -0.1233    -32.43%
A^b^B^m              43230     0.00     0.00   -0.1233    -32.43%

Bu verilerde, genel olarak herhangi bir etkileşime en fazla katkıda bulunanların 1) közelliğin sadece varlığı , 2) kkendisiyle etkileşen özellik (her iki proteinin de var olduğu varsayılarak) ve 3) ile ketkileşime girdiğini gösterir m. en zayıf (protein etkileşimine negatif katkı) ise bözellik ile eşlenen mözelliktir.

İşte vw-varinfo'da bir NASIL sayfası

vowpal wabbit kaynaktan oluşturulur (yukarıdaki bağlantıya bakın) ve Linux (ve muhtemelen diğer unix'ler), Mac OS-X ve Windows üzerinde çalışır.

HTH


Bu doğrudan zayıf etkileşimlerin kesilmesinin model doğruluğunu artıracağı anlamına mı gelir?
matt

Şart değil. Doğruluk genellikle öğrenilecek daha fazla özellik olduğunda artar. Ancak, özellikler pratikte gürültü ise veya genelleme yapmak için çok nadirse, olabilirler. Çoğu gerçek hayat modelinin bazı hata bileşenleri vardır. Daha fazla veri modelin doğruluğuna olan güveni arttırabilir.
arielf

1

Protein etkileşim ağları yönlendirilmemiş grafikler ile temsil edilebilir, proteinler düğümleri oluşturur ve etkileşimleri kenarları oluşturur. Protein etkileşimi ikili bir fenomense, kenarlar da ikili (sıfır veya bir), aksi takdirde gerçek bir sayı kullanabilirsiniz. Bu grafiği sayısal olarak bir kare matris ve özellikle simetrik bir grafik olarak gösterebilirsiniz. En önemli özellikleri bulmak için, etkileşim matrisinin özvektörleri boyunca en büyük çıkıntıya sahip olanları koruyabilirsiniz.


Bir grafik birden fazla proteinle etkileşime girebileceğinden grafik ikili olmayabilir. Birden fazla kenar için bir uzantı var mı?
Anish

İkili ile kastettiğim bu değil. Soru, etkileşimin yoğunluğunu yakalamak isteyip istemediğiniz veya varlığını modellemek için yeterli olup olmadığıdır. Elbette, grafik modeli herhangi bir protein çifti arasındaki etkileşimi açıklayabilir.
Emre

Hmm .. Sanırım protein etkileşimleri için bir kare matris oluşturmamı istediğinde, matristeki değerlerin proteinler arasındaki etkileşim sayısını temsil ettiğini varsayıyorum. Ancak, burada özellikleri nerede kullandığımızı görmüyorum. Bunu biraz açıklayabilir misin?
Anish

Özvektörler, özellik uzayındaki proteinlerin doğrusal bir kombinasyonudur.
Emre
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.