Pracuję nad ulepszeniem istniejącego nadzorowanego klasyfikatora, do klasyfikowania sekwencji {białka} jako należących do określonej klasy (prekursorów hormonu neuropeptydowego), czy nie.
Istnieje około 1150 znanych „pozytywów” na tle około 13 milionów sekwencji białek („Nieznane / słabo opatrzone adnotacjami tło”) lub około 100 000 sprawdzonych, odpowiednich białek, opatrzonych różnorodnymi właściwościami (ale bardzo niewiele opatrzonych wyraźnymi adnotacjami „negatywny” sposób).
Moja poprzednia implementacja traktowała to jako problem z klasyfikacją binarną: Zestaw dodatni = Białka oznaczone jako Neuropeptydy. Zestaw ujemny: losowe pobieranie próbek z 1300 próbek (ogółem) spośród pozostałych białek o mniej więcej podobnym rozkładzie długości.
To działało, ale chcę znacznie poprawić zdolności dyskryminacyjne maszyn (obecnie wynosi około 83-86% pod względem dokładności, AUC, F1, mierzone za pomocą CV, na wielu losowo wybranych próbach ujemnych).
Moje myśli były następujące: 1) Spraw, aby był to problem wieloklasowy, wybierając 2-3 różne klasy białka, które z pewnością będą negatywne, według ich właściwości / klasy funkcjonalnej, wraz z (być może) innym losowo pobranym zestawem. (W tym przypadku priorytetem byłyby zestawy ujemne, które pod względem właściwości / cech są podobne do zestawu dodatniego, a jednocześnie mają cechy definiujące). 2) Uczenie się w jednej klasie - byłoby fajne, ale jak rozumiem, jest przeznaczone tylko do wykrywania anomalii i ma gorszą wydajność niż podejścia dyskryminujące.
*) Słyszałem o nauce PU, co brzmi nieźle, ale jestem programistą N00b i nie znam żadnych istniejących implementacji. (W Python / sci-kit learn).
Czy podejście 1 ma sens w teoretycznym POV? Czy istnieje najlepszy sposób na tworzenie wielu zestawów ujemnych? (Mógłbym również po prostu użyć ogromnej ilości [50 000] białek „negatywnych”, ale wszystkie one bardzo się od siebie różnią, więc nie wiem, jak dobrze klasyfikator poradziłby sobie z nimi jako jedną dużą, niezrównoważoną mieszanką ). Dzięki!
źródło
Odpowiedzi:
Ogólnie rzecz biorąc, chciałbym zaatakować problem, wykorzystując analizę statystyczną, taką jak analiza głównych składników lub zwykłe najmniejsze kwadraty, aby pomóc określić, które atrybuty w tych sekwencjach białek najlepiej nadają się do klasyfikacji białek jako prekursorów hormonu neuropeptydowego.
Aby to zrobić, będziesz musiał przekonwertować sekwencje białkowe na dane liczbowe, ale wierzę, że już pewne prace zostały już zrobione w tym zakresie przy użyciu formuł wykorzystywanych w aminokwasach PCA.
Zobacz te dwa linki: http://www.ncbi.nlm.nih.gov/pubmed/24496727
http://www.ncbi.nlm.nih.gov/pubmed/16615809
Po zakończeniu tej pracy spróbowałbym sklasyfikować przy użyciu całego zestawu danych i algorytmu uczenia wzmacniającego, takiego jak Naive Bayes, jednocześnie zmniejszając dane do tych, które PCA uznało za ważne.
Powodem, dla którego spróbuję użyć Bayesa jest to, że okazało się, że jest to jedna z najlepszych metod wykrywania spamu w porównaniu ze zwykłą pocztą e-mail, która ma podobnie wypaczony zestaw danych.
Powiedziawszy to wszystko ...
Zmniejszenie liczby lub rodzaju negatywnych klasyfikacji może zniekształcić twoje wyniki o kilka punktów w jedną lub drugą stronę, ale nie sądzę, że zobaczysz, że długoterminowa skuteczność zmieni się znacznie, dopóki nie wykonasz pracy polegającej na ustaleniu, jak najlepiej usunąć nieostrość z danych treningowych. Będzie to wymagać eksperta terenowego lub analizy statystycznej.
Mógłbym być całkowicie poza bazą. Chciałbym zobaczyć inne odpowiedzi, ale to moje 2 centy.
źródło
Uczenie się w jednej klasie
Nie byłbym zbyt szybki, aby odrzucić metody klasyfikacji jednoklasowej (opcja 2) - kluczem jest modelowanie klasy dodatniej (mniejszości) za pomocą modelu jednoklasowego.
Przeprowadzono badania pokazujące przypadki, w których klasyfikacja jednej klasy przewyższyła inne podejścia, takie jak pobieranie próbek w celu uzyskania wysoce niezrównoważonych danych, co często występuje w przypadku zadań klasyfikacji białek.
Nie mogłem znaleźć badań, które sobie przypomniałem, ale znalazłem kilka innych porównań, pokazujących, że zastosowanie klasyfikatorów jednoklasowych (zwykle modelujących klasę mniejszości) osiągnięto tak dobrą lub lepszą wydajność niż klasyfikacja binarna zwykle z próbkami „negatywów” z dużego zestawu białek, o których wiadomo, że nie są pozytywne.
Dodatkowo takie podejście daje również korzyść w postaci znacznie poprawionego czasu pracy - ponieważ wystarczy ćwiczyć klasyfikator na mniejszym, dodatnim zestawie. Kilka dokumentów:
„Przewidywanie interakcji białko-białko przy użyciu metod klasyfikacji jednej klasy i integracji różnorodnych danych biologicznych”
„Jednoczęściowe podejście do klasyfikacji sekwencji i struktur białek”
Przynajmniej spróbowałbym metod jednej klasy i porównałbym wydajność przy użyciu walidacji z twoimi podejściami do klasyfikacji binarnej / wieloklasowej. Dla wielu z nich istnieją również implementacje typu open source, więc ich wypróbowanie nie powinno być zbyt kosztowne, na przykład LibSVM ma implementację SVM jednej klasy. Dodatkowo może okazać się cenny do użycia w zespole z klasyfikatorami binarnymi, ponieważ w ich przewidywaniach może być więcej nieporozumień.
Osadzanie / grupowanie reprezentacji na wyższym poziomie
Wzdłuż tego, o czym myślałeś (1) i drugiego postu sugerującego PCA, podejścia takie jak grupowanie, rzadkie kodowanie, a nawet modelowanie tematów - traktując każde białko jako ciąg dokumentów i różne rodziny białek jako różne tematy - może dać reprezentację co może ułatwić klasyfikację białek.
Tzn. Możesz określić, do której grupy / klastra należy białko lub sklasyfikować członkostwa w klastrze / wbudowane reprezentacje.
Na przykład takie metody osadzania, jak kodowanie rzadkie, mogą dawać reprezentacje, które ujawniają, do którego klastra należy również białko - dzięki czemu niektóre zestawy cech są aktywne (niezerowe) dla białek w tym samym klastrze - co znacznie ułatwia ich klasyfikację.
Ponadto w przypadku większości metod można włączyć etykiety klas lub znane członkostwo w klastrze.
Ensemble
Zespoły wielu klasyfikatorów zwykle działają najlepiej - zwłaszcza gdy klasyfikatory są bardzo zróżnicowane i indywidualnie mogą osiągnąć porównywalną wydajność.
Istnieją co najmniej dwa sposoby wykorzystania zestawów dla tego problemu.
źródło
Istnieją trzy podejścia, które możesz zastosować: APP, OAA, AAO. APP to dyskryminacja między obiektami na podstawie wszystkich możliwych par klas. OAA polega na stosowaniu metody „jeden na wszystkich” (pozostałe klasy), a AAO działa na raz, np. Na zastosowaniu testu F dla wielu klas jednocześnie (lub testu Hotelling na MVN). APP i AAO są w rzeczywistości wieloma przebiegami klasyfikacji binarnej, ale z więcej niż dwiema oryginalnymi klasami. Każde z tych podejść daje różne wyniki dla różnych stosowanych klasyfikatorów.
Losowe pobieranie próbek jest dobrą techniką. Możesz także spróbować skupić wszystkie obiekty w centra za pomocą k-średnich, a następnie użyć centrów jako nowych obiektów. Tak czy inaczej, liniowe i nieliniowe metody redukcji wymiarów mogą pomóc odejść od dużej próby.
źródło