Warum nicht durch Regression an die Klassifikation herangehen?


51

Einige Materialien, die ich beim maschinellen Lernen gesehen habe, sagten, es sei eine schlechte Idee, ein Klassifizierungsproblem durch Regression anzugehen. Aber ich denke, es ist immer möglich, eine kontinuierliche Regression durchzuführen, um die Daten anzupassen und die kontinuierliche Vorhersage abzuschneiden, um diskrete Klassifizierungen zu erhalten. Warum ist es eine schlechte Idee?


Ich denke, Regression ist immer komplizierter als die Klassifizierung in der Produktionsumgebung

Antworten:


57

"..Ansatz Klassifizierungsproblem durch Regression .." durch "Regression" Ich gehe davon aus, dass Sie lineare Regression meinen, und ich werde diesen Ansatz mit dem "Klassifizierungs" -Ansatz der Anpassung eines logistischen Regressionsmodells vergleichen.

Bevor wir dies tun, ist es wichtig, die Unterscheidung zwischen Regressions- und Klassifizierungsmodellen zu klären. Regressionsmodelle sagen eine kontinuierliche Variable voraus, z. B. die Niederschlagsmenge oder die Sonnenlichtintensität. Sie können auch Wahrscheinlichkeiten vorhersagen, z. B. die Wahrscheinlichkeit, dass ein Bild eine Katze enthält. Ein Wahrscheinlichkeitsvorhersage-Regressionsmodell kann als Teil eines Klassifikators verwendet werden, indem eine Entscheidungsregel auferlegt wird. Wenn beispielsweise die Wahrscheinlichkeit 50% oder mehr beträgt, entscheiden Sie, dass es sich um eine Katze handelt.

Die logistische Regression sagt Wahrscheinlichkeiten voraus und ist daher ein Regressionsalgorithmus. In der Literatur zum maschinellen Lernen wird es jedoch häufig als Klassifizierungsmethode beschrieben, da es zur Erstellung von Klassifizierern verwendet werden kann (und häufig verwendet wird). Es gibt auch "echte" Klassifizierungsalgorithmen wie SVM, die nur ein Ergebnis vorhersagen und keine Wahrscheinlichkeit liefern. Wir werden diese Art von Algorithmus hier nicht diskutieren.

Lineare vs. logistische Regression bei Klassifizierungsproblemen

Wie Andrew Ng es erklärt , passen Sie mit linearer Regression ein Polynom durch die Daten an - sagen wir, wie im folgenden Beispiel, passen wir eine gerade Linie durch den Stichprobensatz {Tumorgröße, Tumortyp} :

Bildbeschreibung hier eingeben

Oben erhalten bösartige Tumoren und nicht bösartige , und die grüne Linie ist unsere Hypothese . Um Vorhersagen zu treffen, können wir sagen, dass wir für jede gegebene Tumorgröße , wenn größer als , einen bösartigen Tumor vorhersagen, andernfalls sagen wir einen gutartigen Tumor voraus.10h(x)xh(x)0.5

Sieht so aus, als könnten wir jede einzelne Trainingsset-Stichprobe richtig vorhersagen, aber jetzt wollen wir die Aufgabe ein wenig ändern.

Intuitiv ist klar, dass alle Tumoren, die eine bestimmte Schwelle überschreiten, bösartig sind. Fügen wir also eine weitere Probe mit einer großen Tumorgröße hinzu und führen Sie erneut eine lineare Regression durch:

Bildbeschreibung hier eingeben

Jetzt funktioniert unser nicht mehr. Um weiterhin korrekte Vorhersagen treffen zu können, müssen wir sie auf oder so ändern - aber so sollte der Algorithmus nicht funktionieren.h(x)>0.5malignanth(x)>0.2

Wir können die Hypothese nicht bei jedem Eintreffen einer neuen Stichprobe ändern. Stattdessen sollten wir es aus den Trainingssatzdaten lernen und dann (unter Verwendung der Hypothese, die wir gelernt haben) korrekte Vorhersagen für die Daten treffen, die wir vorher nicht gesehen haben.

Hoffe, dies erklärt, warum die lineare Regression nicht die beste Lösung für Klassifizierungsprobleme ist! Vielleicht möchten Sie auch VI ansehen . Logistische Regression. Klassifizierungsvideo auf ml-class.org, das die Idee ausführlicher erklärt.


BEARBEITEN

Wahrscheinlichkeitslogik fragte, was ein guter Klassifikator tun würde. In diesem speziellen Beispiel würden Sie wahrscheinlich eine logistische Regression verwenden, die eine Hypothese wie diese lernen könnte (ich denke mir das nur aus):

Bildbeschreibung hier eingeben

Beachten Sie, dass sowohl die lineare Regression als auch die logistische Regression eine gerade Linie (oder ein Polynom höherer Ordnung) ergeben, diese Linien jedoch eine unterschiedliche Bedeutung haben:

  • h(x) für lineare Regression interpoliert oder extrapoliert die Ausgabe und sagt den Wert für voraus, den wir nicht gesehen haben. Es ist einfach so, als würde man ein neues einstecken und eine unformatierte Zahl erhalten. Es eignet sich besser für Aufgaben wie die Vorhersage des Autopreises basierend auf {Autogröße, Alter des Autos} usw.xx
  • h(x) für die logistische Regression sagt Ihnen , die Wahrscheinlichkeit , dass auf die „positive“ Klasse gehört. Aus diesem Grund wird es als Regressionsalgorithmus bezeichnet - es schätzt eine kontinuierliche Größe, die Wahrscheinlichkeit. Wenn Sie jedoch einen Schwellenwert für die Wahrscheinlichkeit festlegen, z. B. , erhalten Sie einen Klassifizierer. In vielen Fällen wird dies mit der Ausgabe eines logistischen Regressionsmodells durchgeführt. Dies entspricht dem Platzieren einer Linie auf dem Plot: Alle Punkte, die über der Klassifikatorlinie liegen, gehören zu einer Klasse, während die Punkte darunter zur anderen Klasse gehören.x h ( x ) > 0,5xh(x)>0.5

Die Quintessenz ist also, dass wir im Klassifizierungsszenario eine völlig andere Argumentation und einen völlig anderen Algorithmus verwenden als im Regressionsszenario.


@andreister: Aber was wäre, wenn alle Ausreißer entfernt oder abgeschnitten worden wären? Ist eine lineare Regression immer noch eine schlechte Idee?
Tomek Tarczynski

Ihr Beispiel ist gut, zeigt jedoch nicht, was ein "guter Klassifikator" tun würde. Könntest du das hinzufügen? Beachten Sie, dass das Hinzufügen von Datenpunkten die Linie für nahezu jede Methode ändern sollte. Sie haben nicht erklärt, warum dies eine schlechte Änderung ist.
Wahrscheinlichkeitslogik

1
@andreister: Ihr Beispiel hat gezeigt, dass einige schlechte Daten die lineare Regression beeinträchtigen können. Aber können wir eine quadratische Regression oder eine noch kompliziertere Hypothese verwenden, um "Regression" zu einem guten Klassifikator zu machen?
7.

1
@ probabilityislogic - guter Punkt, ich habe die Antwort aktualisiert.
Andreister

2
@Strin: Bei komplizierteren Hypothesen ist es wahrscheinlicher, dass die Daten überfüllt werden. (Das heißt, um die Macken der Daten, die Sie in der Hand haben, auszugleichen, was zu einer schlechten Anpassung an zukünftige Daten führt.) Ich erinnere mich an einen Kurs, an dem ein Mann in der ersten Reihe sicher war, dass der Professor uns zurückhielt und Er gab uns nicht die ausgeklügelten Algorithmen, die es uns ermöglichen würden, auf den Strommärkten zu töten ... Er hat die Überanpassung nie wirklich verstanden.
Wayne

14

Ich kann mir kein Beispiel vorstellen, in dem die Klassifizierung tatsächlich das ultimative Ziel ist. Das eigentliche Ziel besteht fast immer darin, genaue Vorhersagen zu treffen, z. B. über Wahrscheinlichkeiten. In diesem Sinne ist (logistische) Regression Ihr Freund.


5
Es scheint mir, dass eine effektive Klassifizierung letztendlich das Ziel in den meisten automatisierten Prozessen ist, in denen es unpraktisch oder unmöglich ist, von Menschen eingegriffen oder beurteilt zu werden. Wenn der Empfänger beispielsweise ein verrauschtes übertragenes Digitalsignal empfängt, kann er nicht entscheiden, dass ein bestimmtes Bit 0,97 anstelle von 0 oder 1 sein soll.
Kardinal

6
Mit Ausnahme der Tatsache, dass die Kosten für ein falsches Positiv oder die Kosten für ein falsches Negativ selten von dem Analysten kontrolliert werden, der die Klassifizierung vorgenommen hat, kann der ursprüngliche Analyst den "richtigen" Schnittpunkt für die Klassifizierung nicht zuverlässig auswählen. Darüber hinaus ist es ratsam, eine "Grauzone" mit mittlerem Risiko zu haben, in der keine Einstufung vorgenommen wird und die Empfehlung lautet "Weitere Daten abrufen".
Frank Harrell

1
Ich glaube, ich glaube genau das Gegenteil der Behauptung in dieser Antwort und bin dieser Perspektive in meiner gesamten Universitätsausbildung im maschinellen Lernen nie begegnet. Es ist sehr überraschend für mich, dass jemand dies sagen würde. In der Praxis bin ich fast immer auf Probleme gestoßen, bei denen die Leute glauben, eine kontinuierliche Menge vorhersagen zu wollen, aber wirklich, sie wollen die Zugehörigkeit zu verschiedenen kategorialen Eimern dieser Menge vorhersagen. Ich bemühe mich, Fälle zu finden, in denen die Vorhersage einer kontinuierlichen Menge für die dem Problem zugrunde liegende inhaltliche Folgerung nützlich ist.
29.

9
Ich denke, Sie haben viel maschinelles Lernen als selbstverständlich angesehen. Sie machen eine große Anzahl ungerechtfertigter Annahmen. Eine davon ist, dass die Leute tatsächlich eine gezwungene Wahl in einen kategorischen Eimer brauchen. Sie können behaupten, dies zu wollen, aber sie brauchen dies in den meisten Situationen wirklich nicht. Entscheidungen müssen nicht erzwungen werden. Eine gute Wahl ist "keine Entscheidung, mehr Daten". Die Vorhersage einer zugrunde liegenden kontinuierlichen Größe ist normalerweise das, was benötigt wird. Es lohnt sich, die optimale Entscheidungstheorie (Bayes) zu studieren. Wenn Sie ein konkretes Beispiel nennen können, werde ich weiter darauf eingehen.
Frank Harrell

11
+1 zu @Frank Harrells Kommentar. Das Vorhersagen von Temperaturen, Niederschlägen und Flussniveaus ist beispielsweise immens hilfreich als Vorhersagen, dass es heiß oder nass sein oder überfluten wird. Auch wenn das Problem Schaf oder Ziege ist? Eine Schätzung von pr (Schaf) ist aussagekräftiger als eine Schaf- oder Ziegenschätzung.
Nick Cox

1

Warum nicht ein paar Beweise anschauen? Obwohl viele argumentieren würden, dass die lineare Regression nicht für die Klassifizierung geeignet ist , könnte sie dennoch funktionieren. Um eine gewisse Intuition zu gewinnen, habe ich die lineare Regression (als Klassifikator verwendet) in den Klassifikatorvergleich von scikit-learn einbezogen . Folgendes passiert:

Bildbeschreibung hier eingeben

Die Entscheidungsgrenze ist enger als bei den anderen Klassifikatoren, die Genauigkeit ist jedoch dieselbe. Ähnlich wie beim linearen Support-Vektorklassifikator bietet das Regressionsmodell eine Hyperebene, die die Klassen im Feature-Space voneinander trennt.

Wie wir sehen, kann die Verwendung der linearen Regression als Klassifikator funktionieren, aber wie immer würde ich die Vorhersagen durch Kreuzvalidierung überprüfen.

So sieht mein Klassifikator-Code aus:

class LinearRegressionClassifier():

def __init__(self):
    self.reg = LinearRegression()

def fit(self, X, y):
    self.reg.fit(X, y)

def predict(self, X):
    return np.clip(self.reg.predict(X),0,1)

def decision_function(self, X):
    return np.clip(self.reg.predict(X),0,1)

def score(self, X, y):
    return accuracy_score(y,np.round(self.predict(X)))


0

1,10,100,...1,2,3,...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.