Когда мы добавляем «Машина» ко всему, это выглядит круто … возможно, из-за предположения о введении «интеллекта» и «автоматизации», намекаемого на использование такого термина.
Итак, давайте возьмем это, и мы вернемся к старой классической векторной алгебре. Это похоже на человека с кучей палочек, чтобы выяснить, какой из них лежать в двухмерной плоскости, чтобы отделить один класс объектов от другого, при условии, что определения классов уже известны.
Проблема в том, какую конкретную форму и длину нужно выбрать, чтобы показать максимальный контраст между классами.
Нам нужно прийти к определению функции таким образом, чтобы значение, которое принимает данная функция, резко изменилось (например, с большого положительного значения на большое отрицательное значение).
В простейшей форме выходной сигнал Y может быть представлен как векторное произведение двух независимых векторов K и X соответственно, где мы должны вычислить значения вектора K для заданного входного вектора X, чтобы минимизировать ошибку между вычисленным приближением Yhat и Y ,
р
x
1
Yhat<-t(K)*X
Вам также может понравиться:
R Essentials .
(K) * (X) является обобщенным точечным произведением (или «внутренним произведением» входных векторов). Выполнение точечного произведения X с транспонированием K равносильно вычислению проекции вектора X на вектор K. Это «теневой» бросок одного вектора на другой.
Проще говоря, это взвешенная сумма значений векторов K и X соответственно; для каждого значения наблюдения X, где соответствующее значение K для заданного значения X должно быть вычислено для достижения Yhat, что наиболее близко напоминает наборы классификации, существующие в Y.
р
xxxxxxxxxx
1
K1*X1+K2*X2+K3*X3+...KN*XN
Значение, которое принимает такое вычисление, учитывая, что оно будет числовым, должно обеспечивать достаточно хорошее разграничение для разделения различных классов, существующих в Y. Такое «разграничение» должно быть как можно более широким, чтобы не мешать границы отдельных классов.
Контур такого разграничения зависит от пространства измерений, в котором мы работаем.
Для двумерного пространства это просто плоскость (Z1 * X + Z2 * Y = C) — подумайте о зоне DMZ или «ничейной земле», которая существует между нациями, которые имеют общие границы. И эта плоскость оценивается как резко контрастирующее значение (-C для одной стороны и + C для другой, для симметричного разграничения между двумя границами классов).
Фактически, уравнение Yhat <-t (K) * X, которое совпадает с: K1 * X1 + K2 * X2 + K3 * X3 + … KN * XN, для N наблюдений, действительно является той плоскостью, которая стремится различать и разделите два класса по обе стороны.
Резкий контраст в вычисленном значении по обе стороны от разграничения приведет к более выраженным ошибкам неправильной классификации и, в свою очередь, позволит алгоритму оптимизации минимизировать такие ошибки путем корректировки значений вектора K.
р
xxxxxxxxxx
1
K1*X1+K2*X2= -100 for class A
2
K1*X1 +K2*X2 =+100 for class B
3
Например, вычисленное значение резко переключается с -100 на +100, поскольку модель пытается отличить класс А от класса В.
Целью оптимизации алгоритма было бы максимизировать этот резкий контраст.
Очевидно, что плоскости могут различать линейно распределенные классы. Если мы не можем представить линию, которая может разделить два класса, не сгибая и не скручивая ее, то мы посмотрим на нелинейные решения для достижения максимальной контрастности.
Проблема похожа на прогулку или поездку, чтобы запомнить важные ориентиры, чтобы мы могли вернуться или вернуться туда снова. При этом каждое посещаемое место необходимо сравнивать по сходству с набором ранее определенных ориентиров.
Следовательно, нам нужна функция подобия, которая сообщает в двоичных или логических терминах, очень ли данное наблюдение очень похоже на данный ориентир.
Функции подобия обычно можно выразить как сходство (L, X).
Одна обычно используемая форма будет полиномом, выраженным как:
x
1
((gamma*t(x))*L+c)^a ##where epsilon, c are constants to make coefficients of vector product more generic and open for selection appropriate for optimization, while a is an integer. gamma >0
Еще одна популярная общая функция может быть гауссовой - та, которая принимает форму:
р
xxxxxxxxxx
1
exp(-Z^2/2) ##where Z= (x[i]-mean(x))/sd(x)
Мы настраиваем его, заменяя среднее (X) на LM [i], где LM - вектор ориентиров. Затем мы вводим постоянную эпсилон (так же, как мы делали это в функции полиномиального подобия), которая в этом случае принимает значение как (1 / (2 * sd (x) ^ 2))
р
x
1
exp(-gamma*(K^2)) ##where K= (x[i]-LM[i]) and gamma is a constant= (1/(2*(sd(x))^2))
Очевидно, может быть трудно выбрать, какая функция подобия будет наиболее подходящей, а какие должны быть значениями различных констант.
В R функция пригодится (в пакете e1071 ). best.svm
Мы будем использовать это в нашем предыдущем наборе данных german_credit.csv . (Обратитесь к моей предыдущей статье .)
р
xxxxxxxxxx
1
#tune and decide on SVM parameters
2
>
3
> best.svm(Creditability~., y = NULL, data = train, degree = NULL, gamma = NULL, coef0 = NULL,
4
+ cost = NULL, nu = NULL, class.weights = NULL, epsilon = NULL, kernel="radial")
5
Call:
7
best.svm(x = Creditability ~ ., y = NULL, data = train, degree = NULL,
8
gamma = NULL, coef0 = NULL, cost = NULL, nu = NULL, class.weights = NULL,
9
epsilon = NULL, kernel = "radial")
10
Parameters:
13
SVM-Type: eps-regression
14
SVM-Kernel: radial
15
cost: 1
16
gamma: 0.05
17
epsilon: 0.1
18
Number of Support Vectors: 379
21
best.svm
теперь автоматически выбрал тип функции подобия как Радиальный. (Аналогично определению функции Гаусса , как обсуждалось здесь).
xxxxxxxxxx
1
model<-svm(as.factor(Creditability)~.,data=train,cost=1,gamma=0.05, epsilon=0.1,kernel="radial")
2
xxxxxxxxxx
1
## 1.predict using model , then 2.populate the performance object in ROCR package and now 3. plot confusion matrix to observe various performance metrics and 4. plot visually using npr as elbow line.
2
confusionMatrix(as.factor(dfcomp$Creditability),as.factor(dfcomp$svm))
3
Confusion Matrix and Statistics
4
Reference
6
Prediction 0 1
7
0 70 125
8
1 25 388
9
10
Accuracy : 0.7533
11
95% CI : (0.717, 0.7871)
12
No Information Rate : 0.8438
13
P-Value [Acc > NIR] : 1
14
15
Kappa : 0.3452
16
Mcnemar's Test P-Value : 6.303e-16
17
18
Sensitivity : 0.7368
19
Specificity : 0.7563
20
Pos Pred Value : 0.3590
21
Neg Pred Value : 0.9395
22
Prevalence : 0.1562
23
Detection Rate : 0.1151
24
Detection Prevalence : 0.3207
25
Balanced Accuracy : 0.7466
26
27
'Positive' Class : 0
28
plot(perf2)
30
abline(h=0.9395,col="RED",lty=2)
31