Ich habe einen Datensatz, für den ich versuche, Zielvariablen vorherzusagen.
Col1 Col2 Col3 Col4 Col5
1 2 23 11 1
2 22 12 14 1
22 11 43 38 3
14 22 25 19 3
12 42 11 14 1
22 11 43 38 2
1 2 23 11 4
2 22 12 14 2
22 11 43 38 3
Ich habe Beispieldaten bereitgestellt, aber bei mir sind Tausende von Datensätzen auf ähnliche Weise verteilt. Hier sind Col1, Col2, Col3, Col4 meine Funktionen und Col5 ist die Zielvariable. Daher sollte die Vorhersage 1,2,3 oder 4 sein, da dies meine Werte für die Zielvariable sind. Ich habe versucht, Algorithmen wie zufällige Gesamtstruktur, Entscheidungsbaum usw. für Vorhersagen zu verwenden.
Wenn Sie hier sehen, treten die Werte 1,2 und 3 im Vergleich zu 4 häufiger auf. Daher ist mein Modell während der Vorhersage stärker auf 1 2 und 3 ausgerichtet, während ich für 4 nur weniger Vorhersagen erhalte (nur 1 vorhergesagt) für policy4 aus Tausenden von Datensätzen, als ich die Verwirrungsmatrix sah).
Um mein Modell zu verallgemeinern, habe ich den gleichen Prozentsatz der Daten, die zu den Werten 1,2 und 3 gehören, zufällig entfernt. Ich habe nach jedem Wert in Spalte 5 gruppiert und dann einen bestimmten Prozentsatz entfernt, sodass ich die Anzahl der Datensätze verringert habe. Jetzt konnte ich eine gewisse Zunahme des Prozentsatzes der Genauigkeit und auch eine vernünftige Zunahme der Vorhersagen für Wert 4 in der Verwirrungsmatrix feststellen.
Ist dies der richtige Ansatz (Entfernen der Daten zufällig aus den Gruppen, auf die sich das Modell bezieht)?
Ich habe versucht, eingebaute Python-Algorithmen wie Adaboost, GradientBoost-Techniken mit sklearn. Ich habe gelesen, dass diese Algorithmen für den Umgang mit Ungleichgewichtsklassen vorgesehen sind. Es gelang mir jedoch nicht, meine Genauigkeit zu verbessern, indem ich die Daten zufällig entfernte, wo ich einige Verbesserungen feststellen konnte.
Handelt es sich bei dieser Reduzierung um eine Unterabtastungstechnik, und ist dies der richtige Ansatz für eine Unterabtastung?
Gibt es vordefinierte Pakete in sklearn oder eine Logik, die ich in Python implementieren kann, um dies zu erreichen, wenn meine zufällige Entfernung falsch ist?
Außerdem habe ich etwas über die SMOTE-Technik gelernt, die sich mit Oversampling befasst. Soll ich das für Wert 4 versuchen? Und können wir dies mit eingebauten Paketen in Python tun? Es wäre toll, wenn mir jemand in dieser Situation helfen würde.