Ich arbeite daran, einen vorhandenen überwachten Klassifikator zu verbessern, um {Protein} -Sequenzen als zu einer bestimmten Klasse gehörig zu klassifizieren (Neuropeptidhormon-Vorläufer) oder nicht.
Es gibt ungefähr 1.150 bekannte "Positive" vor einem Hintergrund von ungefähr 13 Millionen Proteinsequenzen ("Unbekannter / schlecht kommentierter Hintergrund") oder ungefähr 100.000 überprüfte, relevante Proteine, die mit einer Vielzahl von Eigenschaften kommentiert wurden (aber nur sehr wenige, die explizit kommentiert wurden) "negative Weise).
Meine vorherige Implementierung betrachtete dies als ein binäres Klassifizierungsproblem: Positiver Satz = Proteine, die als Neuropeptide markiert sind. Negativsatz: Zufällige Stichprobe von insgesamt 1.300 Proben aus den verbleibenden Proteinen mit einer ungefähr ähnlichen Längenverteilung.
Das hat funktioniert, aber ich möchte die Diskriminierungsfähigkeiten der Maschinen erheblich verbessern (derzeit liegt sie bei etwa 83-86% in Bezug auf die Genauigkeit, AUC, F1, gemessen durch CV, bei mehreren nach dem Zufallsprinzip ausgewählten negativen Sätzen).
Meine Überlegungen waren: 1) Machen Sie dies zu einem Problem mit mehreren Klassen, indem Sie 2-3 verschiedene Proteinklassen auswählen, die auf jeden Fall negativ sein werden, je nach Eigenschaften / Funktionsklasse, zusammen mit (vielleicht) einem anderen zufällig ausgewählten Satz. (Priorität haben hier negative Mengen, die in ihren Merkmalen / Merkmalen den positiven Mengen ähnlich sind und dennoch definierende Merkmale aufweisen). 2) Lernen in einer Klasse - Wäre nett, aber so wie ich es verstehe, ist es nur zur Erkennung von Anomalien gedacht und hat eine schlechtere Leistung als diskriminierende Ansätze.
*) Ich habe von PU-Lernen gehört, was sich gut anhört, aber ich bin ein Programmierer N00b und kenne keine vorhandenen Implementierungen dafür. (In Python / Sci-Kit lernen).
Ist Ansatz 1 in einem theoretischen POV sinnvoll? Gibt es eine beste Möglichkeit, mehrere negative Sätze zu erstellen? (Ich könnte auch einfach eine massive [50K] Auswahl der "negativen" Proteine verwenden, aber sie unterscheiden sich alle sehr stark voneinander, daher weiß ich nicht, wie gut der Klassifikator mit ihnen als einer großen, unausgeglichenen Mischung umgehen würde ). Vielen Dank!
quelle
Antworten:
Ich würde das Problem im Allgemeinen angreifen, indem ich statistische Analysen wie die Hauptkomponentenanalyse oder gewöhnliche kleinste Quadrate nutze, um herauszufinden, welche Attribute in diesen Proteinsequenzen am besten zur Klassifizierung von Proteinen als Neuropeptidhormonvorläufer geeignet sind.
Dazu müssen Sie die Proteinsequenzen in numerische Daten umwandeln, aber ich glaube, dass diesbezüglich bereits einige Arbeiten mit Formeln durchgeführt wurden, die in Aminosäure-PCA eingesetzt werden.
Siehe diese beiden Links: http://www.ncbi.nlm.nih.gov/pubmed/24496727
http://www.ncbi.nlm.nih.gov/pubmed/16615809
Sobald diese Arbeit erledigt ist, würde ich versuchen, anhand des gesamten Datensatzes und eines Verstärkungslernalgorithmus wie Naive Bayes zu klassifizieren, während ich die Daten auf das herunterrechne, was PCA als wichtig identifiziert hat.
Der Grund, warum ich versuchen würde, Bayes zu verwenden, ist, dass es sich als eine der besten Methoden zur Ermittlung von Spam im Vergleich zu regulären E-Mails erwiesen hat, die einen ähnlich verzerrten Datensatz aufweisen.
Davon abgesehen ...
Wenn Sie die Anzahl oder den Typ der negativen Klassifizierungen verringern, kann dies zu einer Verzerrung der Ergebnisse führen. Ich glaube jedoch, dass sich die Langzeitwirksamkeit erst dann wesentlich ändert, wenn Sie die erforderlichen Schritte zur Ermittlung der besten Entfernungsmethode unternommen haben die Unschärfe von Ihren Trainingsdaten. Dies erfordert entweder einen Experten vor Ort oder eine statistische Analyse.
Ich könnte völlig außer Kontrolle geraten. Ich bin daran interessiert, einige andere Antworten zu sehen, aber das sind meine 2 Cent.
quelle
Eine Klasse lernen
Ich wäre nicht zu schnell, um Ein-Klassen-Klassifizierungsmethoden (Option 2) auszuschließen - der Schlüssel ist, die positive (Minderheits-) Klasse mit dem Ein-Klassen-Modell zu modellieren.
Es wurden Untersuchungen durchgeführt, in denen Fälle nachgewiesen wurden, in denen die Klassifizierung einer Klasse andere Ansätze übertroffen hat, z.
Ich konnte die Forschung, an die ich mich erinnerte, nicht finden, aber ich fand einige andere Vergleiche, die zeigten, dass mit Ein-Klassen-Klassifikatoren (in der Regel nach dem Vorbild der Minderheitsklasse) eine gute oder bessere Leistung erzielt wurde als mit Binärklassifikatoren, in der Regel mit abgetasteten "Negativen" aus der großen Menge von Proteinen, von denen nicht bekannt ist, dass sie positiv sind.
Darüber hinaus bietet dieser Ansatz den Vorteil einer deutlich verbesserten Laufzeit, da Sie den Klassifikator nur auf die kleinere, positive Menge trainieren müssen. Ein paar Papiere:
"Vorhersage von Protein-Protein-Wechselwirkungen mithilfe von Ein-Klassen-Klassifizierungsmethoden und Integration verschiedener biologischer Daten"
"Ein Ein-Klassen-Klassifizierungsansatz für Proteinsequenzen und -strukturen"
Zumindest würde ich einige Ein-Klassen-Methoden ausprobieren und die Leistung unter Verwendung der Validierung mit Ihren binären / Mehr-Klassen-Klassifizierungsansätzen vergleichen. Es gibt auch Open-Source-Implementierungen für viele von diesen, so dass es nicht zu teuer sein sollte, sie auszuprobieren, zum Beispiel hat LibSVM eine SVM-Implementierung einer Klasse. Darüber hinaus kann es sich für die Verwendung in einem Ensemble mit Binärklassifikatoren als nützlich erweisen, da ihre Vorhersagen möglicherweise nicht übereinstimmen.
Einbettung / Clustering von Darstellungen auf höherer Ebene
In Anlehnung an das, was Sie mit (1) und dem anderen Beitrag über PCA gedacht haben, könnten Ansätze wie Clustering, spärliche Codierung oder sogar Themenmodellierung - die Behandlung jedes Proteins als Dokumentkette und verschiedener Proteinfamilien als unterschiedliche Themen - eine Repräsentation ergeben Das könnte die Klassifizierung der Proteine vereinfachen.
Das heißt, Sie können identifizieren, zu welcher Gruppe / zu welchem Cluster ein Protein gehört, oder die Clustermitgliedschaften / eingebetteten Darstellungen klassifizieren.
Zum Beispiel können Einbettungsansätze wie die spärliche Kodierung Darstellungen ergeben, aus denen hervorgeht, zu welchem Cluster auch ein Protein gehört - so dass einige Merkmalssätze nur für Proteine im selben Cluster aktiv (ungleich Null) sind -, was ihre Klassifizierung erheblich erleichtern kann.
Darüber hinaus können für die meisten Methoden Klassenbezeichnungen oder bekannte Clustermitgliedschaften in den Einbettungsprozess einbezogen werden.
Ensemble
Ensembles aus mehreren Klassifikatoren funktionieren in der Regel am besten - insbesondere, wenn die Klassifikatoren sehr unterschiedlich sind und einzeln eine vergleichbare Leistung erzielen können.
Es gibt mindestens zwei Möglichkeiten, Ensembles für dieses Problem zu verwenden.
quelle
Es gibt drei Ansätze: APP, OAA, AAO. APP ist die Unterscheidung zwischen Objekten basierend auf allen möglichen Klassenpaaren. OAA ist die Verwendung von One-against-All (verbleibende Klassen) und AAO ist die gleichzeitige Verwendung eines F-Tests für mehrere Klassen (oder Hotellings Test für MVN). APP und AAO sind eigentlich mehrere binäre Klassifizierungsläufe, jedoch mit mehr als zwei Ihrer ursprünglichen Klassen. Jeder dieser Ansätze liefert unterschiedliche Ergebnisse für verschiedene verwendete Klassifikatoren.
Zufallsstichproben sind eine gute Technik. Sie können auch versuchen, alle Objekte mit k-means in Zentren zu gruppieren und die Zentren dann als neue Objekte zu verwenden. In beiden Fällen können Methoden zur linearen und nichtlinearen Dimensionsreduktion helfen, die große Stichprobengröße zu umgehen.
quelle