SVM регрессия (пример)
Материал из MachineLearning.
(→Пуассоновское распределение) |
(→Литература) |
||
Строка 183: | Строка 183: | ||
== Литература == | == Литература == | ||
* Alex J. Smola, Bernhard Schölkopf. A tutorial on support vector regression. DOI Bookmark: [http://dx.doi.org/10.1023/B:STCO.0000035301.49549.88 10.1023/B:STCO.0000035301.49549.88] | * Alex J. Smola, Bernhard Schölkopf. A tutorial on support vector regression. DOI Bookmark: [http://dx.doi.org/10.1023/B:STCO.0000035301.49549.88 10.1023/B:STCO.0000035301.49549.88] | ||
+ | * Gunn, S., 1998. Support Vector Machines for Classification and Regression. ISIS Technical Report ISIS-1-98. Image Speech & Intelligent Systems Research Group, University of Southampton, U.K. | ||
{{Задание|Алексей Корниенко|В.В.Стрижов|28 мая 2010}} | {{Задание|Алексей Корниенко|В.В.Стрижов|28 мая 2010}} |
Версия 01:34, 29 апреля 2010
SVM (Support Vector Machine, машина опорных векторов) — это особый класс алгоритмов, который характеризуется использованием ядер, отсутствием локальных минимумов, и используется для решения задач классификации и регрессии. В этой статье рассматривается пример использования метода опорных векторов в задачах регрессии.
Содержание |
Постановка задачи
Дано: Обучающая выборка , где -признаковое описание i-го объекта, - характеристика, приписываемая объекту. Функция потерь имеет вид для каждого вектора , где .
Найти: такую функцию , которая описывает зависимость наилучшим образом.
Алгоритм
В этом примере решается задача построения линейной SVM регрессии. Для этого решается прямая задача минимизации функционала потерь, в предположении что решение задается линейной комбинацией неких порождающих функций, из которых можем составить вектор-функцию .
Тогда функционал примет вид:
В предположении что
Для этого вводятся обозначение и дополнительные переменные и :
- , , .
Геометрический смысл и :
Далее решается задача квадратичного программирования:
Эту же задачу можно преобразовать к виду , при условии, что а также, , где - вектор-столбец, составленный из столбцов , тоесть, где все переменные объеденены в один столбец неизвестных. В таких обозначениях , где единиц и нулей в и соответственно столько же, сколько порождающих фукций, а размерность матрицы и вектора равна размерности .
Теперь построим матрицу А и столбцы и . Преобразуем задачу квадратичного программирования к виду
Получаем, , и количество минус бесконечностей в lb равно количеству порождающих функций, а количество нулей равно .
Таким образом, мы свели задачу к задаче квадратичного программирования.
В нашем примере значения С, и порождающие функции задаются экспертом.
Вычислительный эксперимент
Вычислительный эксеримент состоит из трех основных частей:
- Генерация данных;
- Работа алгоритма;
- Визуализация и анализ данных.
Генерация данных
При генерации данных мы выбираем некую линейную комбинацию наших порождающих функций, и добаляем к ней случайный шум. В ходе эксперимента исследуются различные, как дискретные, так и непрерывные шумы. В качестве базовой функции выбрана функция y = 3 + x - 1.5*sin(x). А в качестве порождающих функций x, exp(x), sin(x), cos(x), x^0.5, x^1.5, x^0.
Нормальное распределение
дисперсия=1
дисперсия=0.1
Зависимость весов соответствующих функций от обратной дисперсии
Пуассоновское распределение
Пуассоновское распределение с большой дисперсией
Пуассоновское распределение с малой дисперсией, получаем почти точное решение
Часть предыдущего графика, на которой мы видим, что даже с идеальными данными мы не получим идеальное приближение, т.к. среди прочего минимизируем
Зависимость весов соответствующих функций от параметра
Равномерное распределение
Работа алгоритма на примере с равномерным шумом. На этом графике шум равномерно распределен на отрезке
Зависимость весов соответствующих функций от параметра
Распределение sin(unif)
Тест на распределении вида sin(unifrnd(-3.1415/2,3.1415/2))/parameter, тоесть синуса от равномерного распределения.
Если выбрать большую амплитуду(=5), решение может сильно отличаться от верного
При малых(=0.5) такого не наблюдается.
Зависимость весов соответствующих функций от параметра
Реальные данные
Пример взят из Репозитория UCI. В этом примере рассматриваются автомобили 1970-1973 года выпуска. Строится зависимость мощьности автомобиля [л.с.] от веса [кг]
Пример иллюстрирует, что очень важно правильно выбирать порождающие функции. Хотя потери меньше, чем на следующем графике, такое решение не является достаточно точным.
Вектор порождающих функций: f = [x, exp(-x), sin(x), cos(x), sqrt(x), diag(x)*sqrt(x), x.^0];
Вектор порождающих функций: f = [x, exp(-x), diag(x)*(x), 0*cos(x), sqrt(x), diag(x)*sqrt(x), x.^0];
Исходный код
- Исходный код Matlab
Смотри также
Литература
- Alex J. Smola, Bernhard Schölkopf. A tutorial on support vector regression. DOI Bookmark: 10.1023/B:STCO.0000035301.49549.88
- Gunn, S., 1998. Support Vector Machines for Classification and Regression. ISIS Technical Report ISIS-1-98. Image Speech & Intelligent Systems Research Group, University of Southampton, U.K.
Данная статья является непроверенным учебным заданием.
До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |