Unterschied zwischen Gewichten und vor in Teil und wie man sie verwendet


8

Ich habe eine Frage zu den "Gewichten" und "Prior" in Rs rpart-Funktion. Diese Frage wurde hier schon einmal gestellt , aber die Antwort macht keinen Sinn.

Derzeit habe ich sehr unausgeglichene Daten, bei denen das Ziel nur 0,0066% des gesamten Datensatzes beträgt, der über 2 Millionen Zeilen enthält. Ich möchte wissen, ob mir entweder die "Gewichte" oder die "Prior" bei diesem voreingenommenen Datensatz helfen können und wie sie verwendet werden würden.

Ich habe versucht, das Ziel zu überabtasten und das Rauschen herunterzusampeln und dann ein Ensemble meiner Vorhersagen zu erstellen, aber ich habe nicht das gewünschte Ergebnis erzielt.

Antworten:


4

Ich sehe hier zwei Fragen.

1) Was ist der Unterschied zwischen weightsund parmsin rpart?

Wenn Sie sich den Code ansehen, weightswird das Argument an das model.frameObjekt übergeben, sodass es wie in auf jede Beobachtung Ihres Datensatzes angewendet werden sollte lm.

if (is.data.frame(model)) {
    m <- model  ## <---- m is defined here
    model <- FALSE
}
else {
    indx <- match(c("formula", "data", "weights", "subset"), 
        names(Call), nomatch = 0L)
    if (indx[1] == 0L) 
        stop("a 'formula' argument is required")
    temp <- Call[c(1L, indx)]
    temp$na.action <- na.action
    temp[[1L]] <- quote(stats::model.frame)  ## <---- passed to model.frame
    m <- eval.parent(temp)
}
Terms <- attr(m, "terms")
if (any(attr(Terms, "order") > 1L)) 
    stop("Trees cannot handle interaction terms")
Y <- model.response(m)
wt <- model.weights(m)  ## <---- used as observation weights

Auf der anderen Seite parmsgilt für die Klassengewichte, die sich mit unausgeglichener Klassengröße befassen. Ich glaube, das ist es, wonach Sie suchen.

2) Wie verwende parmsich das Argument?

Wenn Sie sich die Beschreibung von ansehen parms:

Für die Aufteilung der Klassifizierung kann die Liste Folgendes enthalten: den Vektor früherer Wahrscheinlichkeiten (Komponente vor), ...

Daher möchten Sie Ihren vorherigen Wahrscheinlichkeitsvektor in einer Liste mit dem Namen "prior" speichern. Die Reihenfolge der Wahrscheinlichkeit sollte genau der Ausgabe von entsprechenlevels(data$y) , wobei yIhre Antwortvariable angegeben wird. Beispielsweise möchten Sie möglicherweise Folgendes ausprobieren:

fit <- rpart(y ~ x1 + x2 + x3, data = data, parms = list(prior = c(0.000066, 1 - 0.000066)))

Wie berechnet man die vorherigen Werte für mehr, dh Beispiel 3 Klassen? @mark, ich kann keine Kommentare schreiben und im Moment kann ich die Registrierung nicht beenden, um eine neue Frage zu stellen. Nachdem ich auf den Bestätigungslink in der E-Mail geklickt und mein Passwort festgelegt habe, wird mir mitgeteilt, dass ich bereits registriert bin. Vielleicht kann einer der Mods dies zu einem Kommentar machen?
laz

@ guest12345 Du könntest einfach 3 Wahrscheinlichkeiten zum Prior schreiben? zBparms = list(prior = c(0.2, 0.3, 0.5))
Boxuan
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.