Clustering-Algorithmen für hochdimensionale binäre Daten mit geringer Dichte

7

Ich habe einen Datensatz mit 10.000 Genen wie unten

person gene1 gene2 ... gene10000  ethnic
  1       0      1         1       asian
  2       1      0         1       European

Jede Zeile bedeutet, ob eine Person ein Gen in ihrer DNA hat oder nicht. Wir versuchen, verschiedene ethnische Gruppen anhand der obigen Daten zu klassifizieren. Aber zuerst möchten wir einige Clustering-Algorithmen verwenden, um zu visualisieren, wie der Cluster für verschiedene ethnische Gruppen aussehen würde. Wir werden diese Clustering-Algorithmen nicht zum Klassifizieren von Gruppen verwenden, sondern nur, um zu visualisieren, wie es aussehen würde, wenn wir schöne separate Cluster oder überlappende Cluster usw. haben.

Bitte empfehlen Sie einige Clustering-Algorithmen für diesen Dataset-Typ. Die Dimension ist außerdem 10000. Wird dies ein Problem für das Clustering sein? Sollte ich zuerst einige Algorithmen zur Dimensionsreduzierung verwenden? Wenn ja, geben Sie bitte Ihre Empfehlungen. Danke im Voraus.

asdlfkjlkj
quelle
1
Selbst wenn es kein Problem mit dem Clustering von 10000-Dimensionen gibt (einige Algorithmen haben es, andere nicht so sehr), können Sie es nach dem Clustering nicht visualisieren. Ich kann keinen Weg finden, die Dimensionalität nicht zu reduzieren, weder durch gängige Techniken (PCA und andere) noch durch Auswahl von 2-3 Merkmalen gleichzeitig.
Mephy
Lösen Sie, wie bereits beantwortet, zuerst Ihr Visualisierungsproblem und ziehen Sie dann Clustering in Betracht, wenn dies funktioniert. Clustering macht die Visualisierung etwas schwieriger und nicht einfacher.
Hat aufgehört - Anony-Mousse
Können Sie mir einen Link zu Ressourcen für Visualisierungsprobleme geben?
Asdlfkjlkj

Antworten:

1

Wie viele ethnische Gruppen haben Sie identifiziert?

Wenn ich Ihr Problem visualisieren müsste, würde ich die wichtigsten Einflussfaktoren für jede der ethnischen Gruppen in einem Naive Bayes-ähnlichen Ansatz bestimmen. Diese Gene (Genkombinationen?!) (Einschließlich ihrer Werte) können stark mit einer ethnischen Gruppe korrelieren, während sie nicht (oder umgekehrt) mit einer anderen korrelieren.

Platzieren Sie sie auf einem Pyramidendiagramm. Platzieren Sie die Balken für die Korrelationswerte links und rechts.

Pieter21
quelle
0

"Clustering verschiedener ethnischer Gruppen zur Visualisierung" scheint eher so, als würden Sie versuchen, eine überwachte Dimensionsreduktion durchzuführen, da Sie die Zielvariablen in diesem Fall bereits kennen.

Da Sie es später für die Klassifizierung verwenden werden, gehe ich davon aus, dass Sie die Anzahl der ethnischen Gruppen bereits kennen. Dies kann mithilfe der linearen Diskriminanzanalyse (LDA) erfolgen. Schauen Sie sich diesen Beitrag an: /stats/161362/supervised-dimensionality-reduction

tomar__
quelle
0

Verfahren-1 :

Ich denke, es wäre besser, wenn Sie versuchen könnten, einige Gener zu kombinieren. Es ist sehr wahrscheinlich, dass einige einem ähnlichen Trend folgen, sobald Sie sie identifiziert haben, versuchen Sie, sie zu kombinieren.

Sie können eine gewisse Dimensionsreduzierung verwenden, dann können Sie die Daten sinnvoller nutzen. Selbst wenn Sie direkt angeben, kann es ab sofort einige Zeit dauern, bis das Modell einige nützliche Ergebnisse versteht und liefert.

Sobald Sie das Ergebnis der Dimensionsreduzierung erhalten haben, können Sie direkt Klassifizierungsalgorithmen für mehrere Klassen wie SVM , RF und viele mehr anwenden .

Verfahren-2 :

Eine andere Sache, die Sie ausprobieren können, ist: Sie können alle Funktionen (Gener) zu einer einzigen Funktion zusammenfassen und versuchen, zu verstehen, ob dies sinnvoll ist, oder einige gute Erkenntnisse zu gewinnen (explorative Analyse).

Lassen Sie mich wissen, wenn Sie Fragen haben.

SVM: Support Vector Machine

RF: Zufälliger Wald

Toros91
quelle
War meine Antwort hilfreich?
Toros91
0

Ich vermute, dass die Anzahl der ethnischen Gruppen groß ist und Sie eine ausreichend große Stichprobe von zufälligen Personen mit unterschiedlichem ethnischem Hintergrund erhalten, mit denen Sie arbeiten können. Also schlage ich folgendes vor:

Anstatt Clustering (unbeaufsichtigte Segmentierung) zu verwenden, könnten Sie eine vorhandene, weniger granulare ethnische Gruppierung verwenden. Angenommen, Ihre eindeutigen ethnischen Gruppen in Ihrem Rohdatensatz ähneln denen in https://en.wikipedia.org/wiki/List_of_contemporary_ethnic_groups. Dann können Sie eine Gruppierung auf höherer Ebene mit kleineren Gruppen wie der in https://www.google verwenden. com / search? q = ethnische + Gruppierung + in + der + Welt & rlz = 1C1CHBF_enUS810US810 & oq = ethnische + Gruppierung + in + der + Welt & aqs = chrome..69i57.10445j0j8 & sourceid = chrome & ie = UTF-8 zum Verständnis der Gruppenprofile auf hoher Ebene : Zum Beispiel durch Analyse des absteigenden Ranges der Häufigkeit von Genmerkmalen, die in jeder Gruppe häufiger vorkommen. Technisch gesehen können Sie dasselbe mit den ursprünglich detaillierteren ethnischen Gruppen tun.

Normalerweise können Sie keine herkömmliche Hauptkomponentenanalyse auf die Genmerkmale anwenden, da diese mit den Werten 0 oder 1 kategorisch sind. Sie können jedoch eine geeignetere Methode anwenden, für die keine kontinuierlichen Variableneingaben erforderlich sind, z. B. die in diesem R-Paket verwendete Methode: https: //cran.r-project.org/web/packages/FactoMineR/index.html

Clustering und Empfehlung auf einen Schlag:

Sie können auch eine explizite kollaborative Filterung versuchen, bei der Daten im Format Benutzer nach Element vorliegen müssen:

  1. Da die Genmerkmale alle binär sind, können Sie Ihre numerische ID für ethnische Gruppen als Bewertung verwenden, aber Sie müssen sie in numerische von 1 bis N verschiedene ethnische Gruppen umwandeln
  2. Definieren Sie die Person als Benutzerdimension und die ID jedes Genmerkmals als Elementdimension
  3. Organisieren Sie die Daten neu als [Person, Gene, Gruppe], wobei Gene = [1,2, ..., N_genes] und Gruppe = [1,2, ..., N_ethnic], wobei Zeilen beibehalten werden, in denen nur das Genmerkmal = 1 ist In diesem Format trennt der angenommene Nullwert, wenn die Kombination nicht vorhanden ist, die Daten in Trainings- und Validierungsdatensätzen
  4. Wenden Sie Alternative Least Square ( https://spark.apache.org/docs/2.2.0/ml-collaborative-filtering.html ) auf die Trainingsdaten an und überprüfen Sie anhand der Validierungsdaten, wie gut ALS die ethnische Gruppe vorhersagt Die Anzahl der Elemente in der oben genannten kleineren ethnischen Gruppe als anfängliche Anzahl der Komponenten im ALS-Prozess
  5. Wenn die Anzahl der korrekten Vorhersagen für jede ethnische Gruppe mit bestimmten Genmerkmalen für alle Personen vernünftigerweise höher ist als die falschen Vorhersagen, verwenden Sie das Modell, um die Zugehörigkeit zu einer ethnischen Gruppe vorherzusagen. Sie können auch die Mischung der Genmerkmale betrachten, die für jede ethnische Gruppe charakteristisch sind dieses Ergebnis.
okossial
quelle
0

Wenn Sie die Grundwahrheit von Daten kennen, ist die ethnische hier. Sie können Ihren Binärcluster wie folgt visualisieren. Berechnen Sie die Prototypen jedes Clusters mit der Mehrheit der Stimmen pro Merkmal, die eine lineare Komplexität in Bezug auf die Anzahl der Beobachtungen und die Anzahl der Merkmale aufweisen. Visualisieren Sie dann jeden binären Prototyp als ein binäres Größenraster100×100 für dein 10000Eigenschaften. Wählen Sie zwei Ihrer Lieblingsfarben und genießen Sie. Sie werden sehen, ob sich Zentroide mit anderen überlappen, wenn sie dieselbe Farbe bei denselben Pixeln haben. Wenn Sie Ihre Daten schnell gruppieren möchten, empfehle ich Ihnen, mit zu beginnenK.- -M.Ödes Das ist das binäre Äquivalent von K.- -M.eeinnssind beide in Ö(n), einstellen K.Entsprechend Ihrer Anzahl von ethnischen Gruppen und sobald Sie Cluster haben, beantragen Sie erneut die Mehrheit, um Prototypen zu extrahieren, sie zu visualisieren und zu beobachten, ob sie mit der Grundwahrheit vergleichbar sind. Eine benutzerfreundliche Version des Algorithmus finden Sie hier mit einem praktischen Bootstrap-Beispiel mit Visualisierung in diesem SparkNotebook.

KyBe
quelle
0

Sie wissen bereits, zu welchem ​​Cluster jede Person gehört, daher müssen Sie einen Clustering-Algorithmus ausführen, der diese Vorhersage für Sie erstellt. Ihre Frage bezieht sich auf die Datenexploration: Sie versuchen, Ihre Daten zu verstehen. Ihr eigentliches Problem ist ein überwachtes (Mehrklassen-) Klassifizierungsproblem, und Clustering-Algorithmen sind dafür nicht geeignet, da sie nicht überwacht werden.

Ich würde empfehlen, zwei Dinge zu tun: Erstens die Dimensionalität reduzieren, um visualisieren zu können. Zweitens berechnen Sie Metriken für den ursprünglichen hochdimensionalen Datensatz, um ein besseres Verständnis zu erhalten.

Um die Daten zu visualisieren, empfehle ich , t-SNE zu verwenden, um die ethnische Gruppe in zwei Dimensionen und Farben zu visualisieren . Dies gibt Ihnen eine Vorstellung davon, ob Ihre Daten Cluster im 10k-dimensionalen Raum bilden.

Wenn Sie dann Ihr Gefühl oder Ihre Intuition für Ihre Daten weiter verbessern möchten, indem Sie in Form von Clustern im 10k-dimensionalen Raum darüber nachdenken, können Sie Cluster-Metriken wie den Silhouette-Score und die Cluster-Kompaktheit (durchschnittliche Entfernung zum.) Berechnen Mitte) oder zeigen Sie den Abstand zwischen Clustern in einer Heatmap an . Sie können zwei Cluster zusammenführen, indem Sie ihnen dieselbe Bezeichnung geben und sehen, wie sich Ihre Ergebnisse ändern.

Ich kann die Ergebnisse, die Sie möglicherweise erhalten, nicht vorhersehen, daher kann es sehr aufschlussreich sein, was bedeutet, dass Sie feststellen können, dass bestimmte Cluster sehr kompakt sind, andere sehr umfangreich, einige anderen sehr ähnlich sind und so weiter. Aber vielleicht können Sie mit den oben genannten Methoden Ihre Daten überhaupt nicht verstehen. Wenn das passiert, würde ich sagen, dass es Zeit ist, Ihre Daten nicht mehr als Punkte im "Genraum" zu betrachten, wobei Unterschiede zwischen Personen eine "Entfernung" usw. anzeigen. In diesem Fall kann es sein, dass die Zuordnung von Genen zu ethnischen Gruppen erfolgt Die Gruppierung ist komplexer (nicht linear) als eine räumliche Clusterbildung. Daher müssen Sie einen Klassifizierungsalgorithmus verwenden, der diese Nichtlinearität codieren kann.

Deep Learning hat nicht viele Voraussetzungen, aber eine davon ist, dass es nur kontinuierliche Funktionen codieren kann. Neuronale Netze erfordern auch numerische, reelle Eingabemerkmale. Da Ihr Problem binäre Daten enthält und es keinen Grund zu der Annahme gibt, dass die Zuordnung von Gen zu Ethnizität eine reibungslose Funktion ist, sind Algorithmen, die auf Entscheidungsbäumen basieren, möglicherweise ein guter Ausgangspunkt.

Viel Glück! :-)

Paul
quelle