unigrams & bigrame (tf-idf) weniger genau als nur unigrams (ff-idf)?
Dies ist eine Frage, über die lineare regression mit ngrams, mit Tf-IDF (term frequency - inverse document frequency). Um dies zu tun, ich bin mit numpy sparse Matrizen und sklearn für die lineare regression.
Habe ich mit 53 Fällen und über 6000 Funktionen bei der Verwendung von unigrams. Die Vorhersagen basieren auf cross-Validierung mit LeaveOneOut.
Wenn ich ein tf-idf-sparse-matrix nur unigram erzielt, bekomme ich etwas besser Vorhersagen, als wenn ich ein tf-idf-sparse-matrix der unigram+bigram erzielt. Je mehr Spalten ich hinzufügen, um die matrix (Spalten für Zeichen, quadgram, quintgrams, etc.), die weniger genau die regression Vorhersage.
Ist dieses gemeinsame? Wie ist das möglich? Ich hätte gedacht, dass die mehr Funktionen, desto besser.
- Was ist Ihre Aufgabe (z.B. Dokument-Klassifikation) und welche/wie viele Daten haben Sie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es nicht üblich, für die bigrame durchführen schlimmer als unigrams, aber es gibt Situationen, in denen es geschehen kann. Insbesondere das hinzufügen von extra-Funktionen, die führen kann zu overfitting. Tf-idf ist unwahrscheinlich, zu lindern, da längere n-Gramme werden seltener, was zu einer höheren idf-Werte.
Ich bin mir nicht sicher, was für eine Art von variable, die Sie versuchen, vorherzusagen, und ich habe noch nie getan regression auf text, aber ist hier einige vergleichbare Ergebnisse aus der Literatur, um Sie zum nachdenken:
Genau, was passiert, hängt von Ihrer Ausbildung gesetzt; es könnte einfach zu klein sein.
Als larsmans sagte, das hinzufügen von mehr Variablen /Funktionen macht es einfacher für das Modell overfit daher verlieren im test Genauigkeit. In den master-branch von scikit-learn gibt es jetzt eine
min_df
parameter cut-off-Features mit weniger als die Anzahl der vorkommen. Dahermin_df==2
zumin_df==5
könnte Ihnen helfen, loszuwerden, unechte bi-Gramm.Alternativ können Sie die L1 oder L1 + L2 bestraft lineare regression (oder Klassifikation) entweder mithilfe der folgenden Klassen:
Dieser wird es möglich machen, zu ignorieren störende Funktionen und führen zu einer sparse-Modell mit vielen null-GEWICHTE für verrauschte Funktionen. Netz Suchen die Regularisierung Parameter werden jedoch sehr wichtig.
Können Sie auch versuchen, univariate Funktion Auswahl wie erfolgt die text-Klassifizierung Beispiel von scikit-learn (überprüfen Sie die
SelectKBest
undchi2
utilities.chi2
feature-Auswahl nicht tatsächlich für die regression, obwohl. Es könnte gehackt werden, um die Arbeit mit den eingeteilten regression Ergebnisse.min_df
ist nun Teil der veröffentlichten Versionen von scikit-learn (0,14 und später).