Znajdowanie najlepszych funkcji w modelach interakcji

13

Mam listę białek z ich wartościami funkcji. Przykładowa tabela wygląda następująco:

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

Rzędy to białka, a kolumny to cechy.

Mam również listę białek, które również wchodzą w interakcje; na przykład

Protein3, Protein4  
Protein1, Protein2  
Protein4, Protein1  

Problem : W celu wstępnej analizy chcę wiedzieć, które cechy najbardziej przyczyniają się do interakcji białek.

Rozumiem, że zwykle drzewa decyzyjne można wykorzystać do uzyskania najważniejszej cechy opartej na entropii, ale nie jestem pewien, jak rozszerzyć ją na pary białek (tj. Interakcje). Czy istnieje metoda do takiego celu?

Anish
źródło
Powiedz mi, czy dobrze cię rozumiem: masz siłę interakcji dla dowolnej pary białek (która na przykład wynosi zero, jeśli białka nie wchodzą w interakcje), a następnie chcesz mieć wektor cech, których wartość będzie silnie skorelowana z siłą interakcji? Lub innymi słowy, co pozwoli Ci przewidzieć siłę interakcji między białkami?
dsign

Odpowiedzi:

25

Rzeczywisty przepis na rozwiązanie przedstawionego problemu (jedno możliwe rozwiązanie)

Rozwiązanie tego problemu jest proste przy użyciu mojego ulubionego narzędzia do uczenia maszynowego, ślubnego wabbit, który obsługuje funkcje kwadratowe (krzyżowe) za pomocą opcji -q .

tło ślubny wabbit

Zanim przejdziemy do szczegółów użytkowania. samogłoska wabbit to szybkie i skalowalne oprogramowanie do uczenia maszynowego online do klasyfikacji i regresji. Na moim komputerze uzyskuję szybkość uczenia się wynoszącą około 5 milionów funkcji na sekundę bez ograniczeń wielkości danych (liczba przykładów), ponieważ jako narzędzie do nauki online nie wymaga ładowania pełnych danych do pamięci. Ma wiele innych atrakcyjnych funkcji: obsługę różnych algorytmów uczenia się, funkcje wielu strat, funkcje rzadkie, typy mieszane i wiele innych, które są poza zakresem tego pytania.

Oto 3 kroki do rozwiązania problemu z komentarzem:

Krok 0: Pobierz i zbuduj Wabpal Wpalbit z github (patrz uwaga na dole na temat obsługiwanych środowisk)

Krok 1: Przygotuj zestaw treningowy, w którym każda linia wygląda następująco:

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

objaśnienie formatu zestawu treningowego:

Lewa liczba, 1,0 , jest znacznikiem (siła interakcji, która może być dowolną wartością liczbową), drugi ciąg „ białko1 / białko2 ” jest znacznikiem, który nadaje linii identyczność, IOW: „ta linia reprezentuje interakcję między białkiem 1 a białko 2 ”; Jest to opcjonalne i możesz traktować to jako komentarz. Ten ciąg tagów jest również powtarzany w prognozach z modeli, aby określić, która prognoza należy do którego przykładu, ale nie przewidujemy tutaj, po prostu modelujemy i badamy nasz model. Następnie jest przestrzeń nazw funkcji wejściowej dla białka1 |A(musimy zdefiniować przestrzeń nazw, abyśmy mogli przechodzić między różnymi przestrzeniami nazw, nie musi to byćA, może być dowolnym słowem, ale pierwsza litera musi się różnić między przestrzeniami nazw, abyśmy mogli je przekreślić w wywołaniu polecenia), a następnie lista funkcji wprowadzania dla białka1 p1_.... Na końcu pojawia się przestrzeń nazw dla białka2: |Bnastępnie nazwy funkcji białka2 p2_....

Jedną z zalet ślubnego wabbita jest to, że możesz używać dowolnych ciągów znaków dla nazw funkcji (będzie je haszować wewnętrznie, ale nie obchodzi cię to). Jedynymi znakami specjalnymi w zestawie treningowym są:

  • spacje (oczywiście)
  • |, aby poprzedzić funkcje wprowadzania i przestrzenie nazw oraz
  • : aby oddzielić nazwy funkcji od ich wartości

Nie :jest tu używane, ponieważ zakładamy, że każda nazwa funkcji białka reprezentuje wartość logiczną (istnienie), więc ich wartości są domyślnie ustawione 1i nie potrzebują wartości jawnych.

Teraz możesz uruchomić wedpal_wabbit (nazwa wykonywalna to vw), -q ABaby automatycznie utworzyć funkcje krzyżowe (aka warunki interakcji) między wszystkimi możliwymi parami funkcji, w których jedna funkcja jest wybrana z białka1 (przestrzeń nazw zaczynająca się od A), a druga z białka2 ( przestrzeń nazw zaczynająca się od B). samogłoska_wabbit odczyta dane, nauczy się i utworzy model z wagami dla każdej kombinacji funkcji, która powoduje pewne interakcje między parą białek. Tutaj zamiast uruchamiać vwbezpośrednio, uruchomimy go za pomocą vw-varinfonarzędzia do pakowania, które jest dostarczane wraz z wabbitem ślubnym, jako naszym ostatnim krokiem. vw-varinfouruchamia się, vwaby utworzyć model, i zrzuca model w formie czytelnej dla człowieka.

Krok 3: Zadzwoń do vw-varinfo w następujący sposób:

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

vw-varinfo przekaże wszystkie opcje ( -q ... -c --passes ...) tak jak jest vw. -q ABNiezbędne jest tylko przejście przez dwie przestrzenie nazw funkcji. Dodałem jeszcze jedną opcję powyżej (uruchom wiele przejść), która moim zdaniem dałaby lepsze wyniki.

Polecenie to wywołuje metodę ślubu wabbit ( vw) w celu trenowania na zestawie danych i wypisuje dane wyjściowe, które, jak sądzę, szukasz: wszystkie interakcje cech w kolejności siły i ich względnych wag.

Przykładowe wejście i wyjście

Załóżmy, że Twój wkład prot.datobejmuje trójstronną interakcję między 3 białkami:

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

Jest to celowo bardzo minimalistyczny przykład. vwnie powinienem mieć problemu z dużo większymi zestawami danych (np. milionami wierszy, setkami funkcji), a także zmieniłem etykiety siły interakcji w przykładach. Jeśli w twoim przypadku interakcja jest logicznym „tak” lub „nie”, po prostu użyj 0(brak interakcji) lub 1(interakcja istnieje) jako pierwsze pole w każdej linii.

Bieganie:

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

Dałoby wszystkie możliwe interakcje (zignoruj ​​przestrzenie nazw Ai Bdane wyjściowe) i ich wagi:

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%

Pokazując, że w tych danych najsilniejszymi czynnikami przyczyniającymi się do jakichkolwiek interakcji są w ogólności 1) sama obecność kcechy, 2) kcecha oddziałująca ze sobą (zakładając, że oba białka ją mają) i 3) koddziałująca m. podczas gdy najsłabsze (negatywny wkład w interakcję z białkami) to bcecha sparowana z mcechą.

Oto strona HOWTO na vw-varinfo

Narzędzie Ślub Walbit buduje ze źródła (patrz link powyżej) i działa w systemie Linux (i ewentualnie w innych systemach uniksowych), Mac OS-X i Windows.

HTH

arielf
źródło
Czy to bezpośrednio oznaczałoby, że usunięcie słabych interakcji poprawiłoby dokładność modelu?
mat
Niekoniecznie. Dokładność często rośnie, gdy jest więcej funkcji do nauki. Jeśli jednak funkcje są w praktyce hałasem lub zbyt rzadkie, aby je generalizować, mogą one. Większość rzeczywistych modeli ma pewien składnik błędu. Więcej danych może prowadzić do większego zaufania do dokładności modelu.
arielf
1

Sieci interakcji białek mogą być reprezentowane przez niekierowane wykresy, z białkami tworzącymi węzły, a ich interakcje krawędziami. Jeśli interakcja białek jest zjawiskiem binarnym, krawędzie są również binarne (zero lub jeden), w przeciwnym razie możesz użyć liczby rzeczywistej. Możesz liczbowo przedstawić ten wykres jako macierz kwadratową, a zwłaszcza symetryczną. Aby znaleźć najważniejsze cechy, możesz zachować te, które mają największą projekcję wzdłuż wektorów własnych macierzy interakcji.

Emre
źródło
Wykres może nie być binarny, ponieważ białko może oddziaływać z więcej niż jednym białkiem. Czy istnieje rozszerzenie dla wielu krawędzi?
Anish
Nie to miałem na myśli przez binarne. Pytanie brzmi, czy chcesz uchwycić intensywność interakcji, czy wystarcza do modelowania jej obecności. Jasne, model wykresu może uwzględniać interakcję między dowolną parą białek.
Emre
Hmm .. Zakładam, że kiedy poprosisz mnie o utworzenie kwadratowej matrycy dla interakcji białek, wartości w macierzy reprezentują liczbę interakcji między białkami. Ale nie widzę tutaj, gdzie używamy funkcji. Czy możesz to rozwinąć?
Anish
Wektory własne to liniowa kombinacja białek w przestrzeni cech.
Emre