from sklearn.svm import SVC

clf = SVC(kernel = 'rbf',C=1).fit(X_train, y_train)


В результате получим примерно следующие значения accuracy:

Accuracy of SVC classifier on training set: 0.83

Accuracy of SVC classifier on test set: 0.82


Отметим, что, применив поиск оптимальных параметров классификатора (см. далее раздел «Подбор параметров по сетке»), можно получить значение accuracy, близкое к 0.87.

Примечание. Ноутбук MLF_SVC_Fashion_MNIST_001.ipynb, реализующий упомянутый пример, можно загрузить по ссылке – https://www.dropbox.com/s/0p1i1dqk8wqwp5x/MLF_SVC_Fashion_MNIST_001.html?dl=0

Набор классификаторов scikit-learn включает кроме упомянутых алгоритмов еще и GaussianProcessClassifier, DecisionTreeClassifier, GaussianNB и др. Сравнение между собой классификаторов, имеющих стандартные параметры, описано в классическом примере [[61]], который можно рекомендовать как первую ступень в разработке программы выбора лучшего классификатора.

2.11. Статистические методы в машинном обучении. Наивный байесовский вывод

2.11.1. Теорема Байеса и ее применение в машинном обучении

Машинное обучение использует теорию вероятности для предсказания и классификации. Особенностью ML является создание алгоритмов, способных обучаться. Способ обучения в данном случае заключается в использовании статистических закономерностей. Одна из таких относительно простых возможностей – использование теоремы Байеса.

Напомним, что теорема Байеса говорит о том, что если известна априорная вероятность гипотезы А – P(A), априорная вероятность гипотезы B – P(B) и условная вероятность наступления события B при истинности гипотезы A – P(B|A), то мы можем рассчитать условную вероятность гипотезы А при наступлении события B:



Рассмотрим пример.

Предположим, что нам известна статистика дворовых игр в футбол и погода, при которых они состоялись, например, в таком виде:



То есть мы имеем информацию о количестве игр (14) и сведения о трех видах погоды, при которой они проходили: sunny – солнечно, rainy – дождливо, overcast – пасмурно. Попробуем рассчитать, состоится ли очередная игра, если на улице солнечно (sunny). Для этого нам нужно рассчитать вероятность того, что игра состоится ('yes') при условии 'Sunny', то есть нам нужно рассчитать:

P('yes'|'Sunny').


Другими словами, мы хотим оценить вероятность справедливости гипотезы, что А = 'yes' – игра состоится при условии, что B = 'Sunny'.

Для такого расчета нам нужно вычислить априорные вероятности того, что погода солнечная – P('Sunny') и что игра вообще состоится P('yes'). Кроме этого, рассчитать условную вероятность того, что погода является солнечной при состоявшейся игре P('Sunny'|'yes'). Тогда в соответствии с теоремой Байеса мы сможем рассчитать искомую вероятность:

P('yes'|'Sunny') = P('Sunny'|'yes') * P('yes') / P('Sunny')

Используя таблицу, легко посчитать оценки указанных вероятностей. Положим, что:

A_value = 'yes'

B_hypothes = 'Sunny'

Тогда цель нашего расчета – получить значение величины:

P(A_value|B_hypothes) = P('yes'|'Sunny') = P('Sunny'|'yes') * P('yes') / P('Sunny')

Рассчитаем условную вероятность:

P('Sunny'|'yes') = 3 / 9 = 0.33

Рассчитаем априорные вероятности солнечной погоды и того, что игра состоится:

P('Sunny') = 5 / 14 = 0.36

P('yes') = 9 / 14 = 0.64

Подставив полученные значения, получим:

P('yes'|'Sunny') = 0.33 * 0.64 / 0.36 = 0.60.

2.11.2. Алгоритм Naïve Bayes

Однако как быть, если игра зависит не только от погоды, но и от других условий, например, готовности поля, здоровья игроков и т.п.? В этом случае вывод классификатора можно строить на отношении условных вероятностей следующим образом: