Ich sehe hier zwei Fragen.
1) Was ist der Unterschied zwischen weights
und parms
in rpart
?
Wenn Sie sich den Code ansehen, weights
wird das Argument an das model.frame
Objekt ü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 parms
gilt für die Klassengewichte, die sich mit unausgeglichener Klassengröße befassen. Ich glaube, das ist es, wonach Sie suchen.
2) Wie verwende parms
ich 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 y
Ihre 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)))
parms = list(prior = c(0.2, 0.3, 0.5))