#python #svm
#python #svm
Вопрос:
Итак, я работаю над проектом для школы, и я в тупике. Проект заключается в создании программы, способной обучать SVM простым линейно разделяемым 2d-данным. Единственное, что предоставляется нашей программе, — это количество точек данных и их соответствующих меток. Я так смущен и потерян. Функции, которые я должен написать, следующие:
[w, b, S] = svm_train_brute(training_data)
dist = distance_point_to_hyperplane(pt, w, b)
margin = compute_margin(данные, w, b)
y = svm_test_brute(w, b, x)
где S — опорные векторы для предоставленных обучающих данных. Каждая из функций после svm_train_brute предлагается в описании проекта как необходимая для обучения svm, однако я не могу понять, как даже запустить это. Для каждой из этих вспомогательных функций требуются w и b, но я понятия не имею, как найти w и b с учетом обучающих данных. Если бы я знал, какие точки были support_vectors, то я думаю, что мог бы найти w и b, учитывая y (wx b) = 1 для опорных векторов, но я не могу придумать, как найти опорные векторы. Я попытался использовать аналогичный подход к peceptrons, чтобы найти w и b, но безуспешно. Мне просто нужна помощь, чтобы разобраться в этом. Как я могу найти w и b, используя y (wx b) = 1 или иным образом найти гиперплоскость? спасибо за любую помощь и извините, если это основной вопрос.
Комментарии:
1. Можете ли вы сделать это для игрушечного 2D примера
(x, y)
точек на плоскости? Сначала разберитесь в математике, затем начните с части кодирования.2. @swag2198 Я попробовал это с «тестовым» набором данных, предоставленным для проекта; [-5,0,1], [-4,0,1], [-3,0,1], [-2,0,1], [-1,0,1], [1,0,-1], [2,0,-1], [3,0,-1], [4,0,-1], [5,0,-1]. Я нашел среднюю точку между двумя ближайшими точками с противоположными метками, а затем пришел к выводу, что средняя точка находится на гиперплоскости. Если я решу систему уравнений, используя y (wx b) = 1 для двух ближайших точек (называя их опорными векторами) и wx b = 0 со средней точкой, это решит w и b, но будет ли это работать, когда существует более двух опорных векторов? Будет ли средняя точка двух ближайших точек всегда находиться на гиперплоскости?
3. SVM намеревается решить проблему оптимизации. Вы можете найти формальную обработку в любой стандартной книге по ML или в Интернете. Поймите проблему оптимизации и узнайте, как ее решить.