- Was ist eine Hyperebene?
In n-Dimension Raum, eine Hyperebene ist ein flacher affiner Unterraum mit einem n-1 Abmessungen. Im zweidimensionalen Raum ist eine Hyperebene beispielsweise eine eindimensionale Linie (Abbildung 1). Die mathematische Definition einer zweidimensionalen Hyperebene ist einfach und wird durch die Gleichung (1.1) definiert.
Im p-dimensionalen Raum beträgt die Dimension der Hyperebene p-1, wie in Gleichung (1.2) dargestellt.
2. Klassifizierung mithilfe einer Hyperebene
Eine Hyperebene (schwarze durchgezogene Linie: 2+3 * x_1 + 2 * x_2 = 0 (Gl. 1.3)) im zweidimensionalen Raum ist in Abbildung 1 dargestellt. Wir haben zwei Beobachtungen in zwei Klassen – das heißt y_1,…,y_n ∈ { 1,-1}. Grüne Punkte und rote Punkte sind die Punkte, die (1.3) nicht erfüllen, zum Beispiel:
## user-defined operate to attract 2-d hyperplane
hyper_func = operate(intercept, slope1, slope2, min,max, size){
data_ = checklist()
data_[[1]] <- seq(min, max, size.out = size)
data_[[2]] <- (intercept + slope1 * data_[[1]]) / -slope2
return(data_)
}## randomly generate factors for a selected vary
x1 = runif(200, min=-2, max=2)
x2 = runif(200, min=-2, max=2)
input_data = cbind(x1, x2)
plot(x1,x2, pch = 16)
plane_func = 2+3 * x1 + 2 * x2
input_data = cbind(input_data, plane_func)
## calculate the category for every factors based mostly on which facet they find.
group_data = lapply(input_data[,3], operate(x) if(x>0){return('crimson')}else{
return('inexperienced')})
input_data = cbind(input_data, teams = unlist(group_data))
plot(input_data[,'x1'],input_data[,'x2'],col = input_data[,'groups'], pch = 16, xlab = 'x1', ylab = 'x2')
##draw a 2-D hyperplane,beta_0 = 2, beta_1 = 3, beta_2 = 2. min & max = 2. Size = 200
pts_plane = hyper_func(2,3,2,-2,2,200)
traces(pts_plane[[1]], pts_plane[[2]], col = "black", lwd = 2)
3. Der Maximal-Marge-Klassifikator
Wir können unendlich viele Hyperebenen haben, da selbst eine geringfügige Anpassung der Hyperebene keine der Beobachtungen im Trainingssatz schneidet. Zum Beispiel drei mögliche Hyperebenen, wie in Abbildung 2 dargestellt.
#filter some factors for example this pattern
sample_pts = input_data[which(abs(as.numeric(input_data[,'plane_func'])) > 3),]
plot(sample_pts[,'x1'],sample_pts[,'x2'], col = sample_pts[,'groups'],pch = 16, xlab = 'x1', ylab = 'x2')# draw three potential hyperplane
pts_plane = hyper_func(2,3,2,-2,2,200)
traces(pts_plane[[1]], pts_plane[[2]], col = "black", lwd = 2)
pts_plane = hyper_func(1.5,1.5,2,-2,2,200)
traces(pts_plane[[1]], pts_plane[[2]], col = "black", lwd = 2)
pts_plane = hyper_func(2.2,2.2,2,-2,2,200)
traces(pts_plane[[1]], pts_plane[[2]], col = "black", lwd = 2)
Die Regel, die wir anwenden, um die auszuwählen optimale Hyperebenebekannt als Maximal Margin Hyperplane (MMH), basiert auf der Maximierung der Marge. Der Rand bezieht sich auf den minimalen Abstand zwischen den Punkten im Trainingssatz und der Hyperebene (d+ ist der kürzeste Abstand von der Hyperebene zum nächsten positiven Punkt und d- ist der kürzeste Abstand von der Hyperebene zum nächsten negativen Punkt. Additionally Marge = d+ plus d-).
Indem wir die Hyperebene mit dem größten Abstand suchen, wollen wir diejenige finden, die den weitesten Mindestabstand zu den Trainingspunkten hat. Im Wesentlichen stellt der MMH die lineare Hyperebene dar, die die Daten optimum trennt. Sobald das MMH identifiziert ist, können wir die Testpunkte klassifizieren, indem wir bestimmen, auf welcher Seite der Hyperebene sie liegen. Dieser Ansatz wird allgemein als bezeichnet Maximaler Margin-Klassifikator.
##This instance illustrate the classification for 2 courses based mostly on svm.
##so x variable needs to be numeric format, y variable needs to be issue.
svm_data = knowledge.body(x1 = as.numeric(sample_pts[,'x1']), x2 = as.numeric(sample_pts[,'x2']),teams = as.issue(sample_pts[,'groups']))
##utilizing svm to search out the optimum hyperplane.
svmfit = svm(teams~x1+x2, knowledge = svm_data, kernel = 'linear', price = 5, scale = FALSE)##generate an everyday grid dots
make.grid = operate(x, n = 75) {
grange = apply(x, 2, vary)
x1 = seq(from = grange[1,1], to = grange[2,1], size = n)
x2 = seq(from = grange[1,2], to = grange[2,2], size = n)
develop.grid(x1 = x1, x2 = x2)
}
##x is the x_1 and x_2.
x = svm_data[,c(1,2)]
xgrid = make.grid(svm_data[,c(1,2)])
##predict class for normal grid dots
ygrid = predict(svmfit, xgrid)
##plot common grid dots
plot(xgrid, col = c("inexperienced","crimson")[as.numeric(ygrid)], pch = 20, cex = .2)
##plots factors in two class
factors(svm_data, col = as.character(svm_data[,3]), pch = 19)
##plot assist vector, svmfit$index can present index for assist vector
factors(x[svmfit$index,], pch = 5, cex = 2, col = 'blue')
## get coefficients of optimum hyperplane (beta_0 (intercept), beta_1 and beta_2)
coeffis = coef(svmfit)
## draw optimum hyperplane
pts_plane = hyper_func(coeffis[1],coeffis[2],coeffis[3],-2,2,200)
traces(pts_plane[[1]], pts_plane[[2]], col = "black", lwd = 2)
## draw margin for damaging class, so intercept plus 1. Why plus 1? See in Equation 1.5
pts_plane = hyper_func(coeffis[1]+1,coeffis[2],coeffis[3],-2,2,200)
traces(pts_plane[[1]], pts_plane[[2]], col = "black", lwd = 2, lty = 3)
## draw margin for optimistic class, so intercept minus 1. Why minus 1? See in Equation 1.5
pts_plane = hyper_func(coeffis[1]-1,coeffis[2],coeffis[3],-2,2,200)
traces(pts_plane[[1]], pts_plane[[2]], col = "black", lwd = 2, lty = 3)
In Abbildung 3 beobachten wir drei Punkte, die in gleichen Abständen von der maximalen Randhyperebene positioniert sind und an den gestrichelten Linien ausgerichtet sind. Diese drei Punkte sind Unterstützungsvektoren um die Hyperebene mit maximalem Rand zu „unterstützen“ (jede Klasse muss mindestens eine haben). Unterstützungsvektor). Mit anderen Worten, jede geringfügige Änderung der Place von a Unterstützungsvektor würde folglich die optimale Hyperebene verschieben, während Änderungen an den anderen Punkten die Hyperebene nicht beeinflussen würden
Die beiden gestrichelten Linien (Ebene: H_1 und H_-1)sind die Grenze der optimalen Hyperebene.
Alle Punkte in der Positivklasse erfüllen additionally die Anforderungen
Alle Punkte in der Negativklasse