Beste Methode zum Klassifizieren von Datasets mit gemischten Attributtypen

13

Ich würde gerne wissen, wie man einen Datensatz, der aus gemischten Attributtypen besteht, am besten klassifiziert, z. B. in Textform und numerisch. Ich weiß, dass ich Text in Boolean konvertieren kann, aber der Wortschatz ist vielfältig und die Daten werden zu spärlich. Ich habe auch versucht, die Attributtypen separat zu klassifizieren und die Ergebnisse durch Meta-Lerntechniken zu kombinieren, aber es hat nicht gut funktioniert.

user900
quelle

Antworten:

11

Christophers Antworten scheinen sehr vernünftig. Insbesondere baumbasierte Methoden eignen sich gut für diese Art von Daten, da sie sich auf Unterscheidungsmerkmale konzentrieren. Es ist ein wenig schwer zu sagen, ohne Ihre spezifische Anwendung zu kennen, aber im Allgemeinen, wenn Sie der Meinung sind, dass einige Ihrer Funktionen erheblich diskriminierender sind als andere, könnten Sie einige Techniken zur Dimensionsreduzierung ausprobieren, um dies ein wenig zu bereinigen.

Wenn Sie eine Technik zur Dimensionsreduzierung verwenden, erhalten Sie ein etwas robusteres Format für Ihren Merkmalsvektor (im Allgemeinen handelt es sich um gerade numerische Vektoren anstelle gemischter Datentypen), wodurch Sie möglicherweise verschiedene Methoden nutzen können. Sie können sich auch mit handwerklichen Funktionen befassen. Mit korrekt handgefertigten Funktionen Random Forestsind Sie bei den meisten Aufgaben dem neuesten Stand der Technik sehr nahe.

indico
quelle
2
Ein weiteres Votum für Dimensionsreduzierung. Nur einige Ergänzungen: Principal Component Analysisoder Non-Negative Matrix Factorizationwird die Anzahl der Variablen reduzieren, spärliche Daten anreichern und alle Variablen in quantitative umwandeln. Darüber hinaus kann der Frageautor bei der Bewertung der Qualität des Dimensionalitätsreduktionsmodells den Nutzen von Textvariablen abschätzen.
Sobach
@indico tolle Antwort. Könnten Sie uns in einem Buch oder einer Arbeit einen Hinweis geben, dass baumbasierte Algorithmen mit gemischten Daten (kategoriale und quantitative Daten) eine bessere Leistung erbringen?
ZelelB,
6

Es ist schwer, diese Frage zu beantworten, ohne mehr über die Daten zu wissen. Trotzdem würde ich folgenden Rat geben:

Die meisten maschinellen Lerntechniken können gemischte Daten verarbeiten. Baumbasierte Methoden (wie AdaBoost und Random Forests) eignen sich gut für diese Art von Daten. Das wichtigere Problem ist eigentlich die Dimensionalität, um die Sie sich zu Recht kümmern.

Ich würde vorschlagen, dass Sie etwas tun, um diese Dimensionalität zu reduzieren. Suchen Sie beispielsweise nach den Wörtern oder Ausdrücken, die die Daten am besten trennen, und verwerfen Sie die anderen Wörter (Anmerkung: Baumbasierte Methoden tun dies automatisch).

Christopher Louden
quelle
2

Mit den wenigen Informationen, die Sie über die Art Ihrer Daten angegeben haben, rate ich Ihnen, den folgenden Ansatz zu verfolgen:

  1. Konvertieren Sie Textdaten in Kategorien. Sie können verschiedene Alternativen ausprobieren, um zu bestimmen, wie viele Informationen die Kategorien enthalten sollen. Für jede Variable müssen jedoch bestimmte Kategorien vorhanden sein. Als Beispiel nehme ich eine Variable an, die aus einem Textfeld eines Fragebogens über die bevorzugte Art und Weise, wie Menschen zur Arbeit gelangen, stammt.

    Zunächst müssen wir sicherstellen, dass Antworten mit ähnlicher Bedeutung auf dieselbe Weise geschrieben sind und zur selben Kategorie gehören (z. B. "mit dem Fahrrad", "Radfahren", "mit dem Fahrrad" haben alle dieselbe Bedeutung). Dann können Sie versuchen, weitere Zusammenführungen in weniger detaillierte Kategorien vorzunehmen (z. B. "Straßenbahn", "U-Bahn" und "Bus" in "ÖPNV" zusammenzuführen) oder noch mehr (z. B. "Gehen", "Joggen", "Radfahren" in "). Körperliche Aktivität "), je nachdem, was Sie herausfinden möchten.

    Sie können sogar verschiedene Kombinationen in Ihren Datensatz einfügen. In den nächsten Schritten wird festgelegt, welche für die Analyse verwendet werden. Stellen Sie in Fällen, in denen die Textdaten in geordneten Variablen "übersetzt" werden können, sicher, dass Sie dies tun (z. B. wenn Sie "klein, mittel, hoch" haben, transformieren Sie sie in "1,2,3").

  2. Verwandeln Sie Ihre kategorialen Variablen (nicht die ordinalen) in Dummy-Variablen (Binärvariablen). Die meisten Klassifizierungs- / Merkmalsauswahlalgorithmen tun dies automatisch, stellen Sie jedoch sicher, dass dies bei den von Ihnen ausgewählten Algorithmen der Fall ist. Mir ist klar, dass die Dimensionalität der Daten an diesem Punkt ziemlich groß werden wird, aber dies wird im nächsten Schritt behandelt.

  3. Wenden Sie eine Technik zur Merkmalsauswahl / Dimensionsreduzierung auf Ihre Daten an. Eine nützliche Übersicht über solche Techniken finden Sie hier . Wenn Sie Python verwenden, bieten Ihnen die sklearn-Tools viele Optionen (weitere Informationen finden Sie hier ). Stellen Sie sicher, dass Sie eine Technik verwenden, die auch Multikollinearität berücksichtigt. Ich würde es mit der Hauptkomponentenanalyse oder einem baumbasierten Algorithmus versuchen.

  4. Für die Klassifizierung der Daten würde ich Decision Tree Classifier verwenden (auch über sklearn verfügbar ). Es führt auch die Merkmalsauswahl durch, wobei die Wichtigkeitsgewichte für die Merkmale festgelegt werden. Sie können den Detaillierungsgrad für den generierten Baum in Abhängigkeit von Ihren Optionen festlegen (z. B. max_depth, min_samples_split). Stellen Sie sicher, dass Sie den Detaillierungsgrad basierend auf der Kreuzvalidierung anpassen, um eine Überanpassung zu vermeiden.

missrg
quelle