SVM регрессия (пример)
Материал из MachineLearning.
Строка 57: | Строка 57: | ||
</tex> | </tex> | ||
- | + | Получаем, | |
<tex> | <tex> | ||
A=\begin{Vmatrix} | A=\begin{Vmatrix} | ||
Строка 103: | Строка 103: | ||
При генерации данных мы выбираем некую линейную комбинацию наших порождающих функций, и добаляем к ней случайный шум. В ходе эксперимента исследуются различные, как дискретные, так и непрерывные шумы. | При генерации данных мы выбираем некую линейную комбинацию наших порождающих функций, и добаляем к ней случайный шум. В ходе эксперимента исследуются различные, как дискретные, так и непрерывные шумы. | ||
- | === | + | === Нормальное распределение === |
+ | [[Изображение:Svr Normal.jpg|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> дисперсия=1 | ||
+ | |||
+ | [[Изображение:Svr Normal 2.jpg|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> дисперсия=0.1 | ||
+ | |||
+ | [[Изображение:Svr Weights Normal.jpg|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> Зависимость весов соответствующих функций от обратной дисперсии | ||
+ | |||
+ | === Пуассоновское распределение === | ||
+ | |||
+ | [[Изображение:Svr Poisson.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex>Пуассоновское распределение с большой дисперсией | ||
+ | |||
+ | [[Изображение:Svr Poisson2.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> Пуассоновское распределение с малой дисперсией, получаем почти точное решение | ||
+ | |||
+ | [[Изображение:Svr Poisson3.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex>Часть предыдущего графика, на которой мы видим, что даже с иделаьными данными мы не получим идеальное приближение, т.к. среди прочего минимизируем <tex>(w,w)</tex> | ||
+ | |||
+ | [[Изображение:Weights poisson.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> Зависимость весов соответствующих функций от параметра | ||
+ | |||
+ | === Равномерное распределение === | ||
+ | |||
+ | [[Изображение:Svr Uniformal.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> Работа алгоритма на примере с равномерным шумом. На этом графике шум равномерно распределен на отрезке <tex>[-\frac{1}{2};\\frac{1}{2}]</tex> | ||
+ | |||
+ | [[Изображение:Svr Weights Uniformal.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> Зависимость весов соответствующих функций от параметра | ||
+ | |||
+ | === Распределение sin(unif) === | ||
+ | Тест на распределении вида sin(unifrnd(-3.1415/2,3.1415/2))/parameter, тоесть синуса от равномерного распределения. | ||
+ | |||
+ | [[Изображение:Svr Sin.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> Если выбрать большую амплитуду(=5), решение может сильно отличаться от верного | ||
+ | |||
+ | [[Изображение:Svr Sin2.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> При малых(=0.5) такого не наблюдается. | ||
+ | |||
+ | [[Изображение:Svr Weights Sin.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex> Зависимость весов соответствующих функций от параметра | ||
+ | |||
+ | === Реальные данные === | ||
+ | Пример взят из [http://archive.ics.uci.edu/ml/datasets/Auto+MPG Репозитория UCI]. В этом примере рассматриваются автомобили 1970-1973 года выпуска. Строится зависимость мощьности автомобиля [л.с.] от веса [кг] | ||
+ | |||
+ | [[Изображение:Svr UCI Auto mpg1.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex>Пример иллюстрирует, что очень важно правильно выбирать порождающие функции. Хотя потери меньше, чем на следующем графике, такое решение не является достаточно точным. | ||
+ | |||
+ | <tex>\Uparrow</tex>Вектор порождающих функций: f = [x, exp(-x), sin(x), cos(x), sqrt(x), diag(x)*sqrt(x), x.^0]; | ||
+ | |||
+ | [[Изображение:Svr UCI Auto mpg2.png|800px]] | ||
+ | |||
+ | <tex>\Uparrow</tex>Вектор порождающих функций: f = [x, exp(-x), diag(x)*(x), 0*cos(x), sqrt(x), diag(x)*sqrt(x), x.^0]; | ||
{{Задание|Алексей Корниенко|В.В.Стрижов|28 мая 2010}} | {{Задание|Алексей Корниенко|В.В.Стрижов|28 мая 2010}} |
Версия 23:37, 28 апреля 2010
SVM (Support Vector Machine, машина опорных векторов) — это особый класс алгоритмов, который характеризуется использованием ядер, отсутствием локальных минимумов, и т. д.
Содержание |
Постановка задачи
Дано: Обучающая выборка , где -признаковое описание i-го объекта, - характеристика, приписываемая объекту. Функция потерь имеет вид для каждого вектора , где .
Найти: такую функцию , которая описывает зависимость наилучшим образом.
Алгоритм
В этом примере решается задача построения линейной SVM регрессии. Для этого решается прямая задача минимизации функционала потерь, в предположении что решение задается линейной комбинацией неких порождающих функций, из которых можем составить вектор-функцию .
Тогда функционал примет вид:
В предположении что
Для этого вводятся обозначение и дополнительные переменные и :
- , , .
Геометрический смысл и :
Далее решается задача квадратичного программирования:
Эту же задачу можно преобразовать к виду , при условии, что а также, , где - вектор-столбец, составленный из столбцов , тоесть, где все переменные объеденены в один столбец неизвестных. В таких обозначениях , где единиц и нулей в и соответственно столько же, сколько порождающих фукций, а размерность матрицы и вектора равна размерности .
Теперь построим матрицу А и столбцы и . Преобразуем задачу квадратичного программирования к виду
Получаем, , и количество минус бесконечностей в lb равно количеству порождающих функций, а количество нулей равно .
Таким образом, мы свели задачу к задаче квадратичного программирования.
В нашем примере значения С, и порождающие функции задаются экспертом.
Вычислительный эксперимент
Вычислительный эксеримент состоит из трех основных частей:
- Генерация данных;
- Работа алгоритма;
- Визуализация и анализ данных.
Генерация данных
При генерации данных мы выбираем некую линейную комбинацию наших порождающих функций, и добаляем к ней случайный шум. В ходе эксперимента исследуются различные, как дискретные, так и непрерывные шумы.
Нормальное распределение
дисперсия=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];
Данная статья является непроверенным учебным заданием.
До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |