SVM регрессия (пример)
Материал из MachineLearning.
 (→Исходный код)  | 
			|||
| (2 промежуточные версии не показаны) | |||
| Строка 174: | Строка 174: | ||
== Исходный код ==  | == Исходный код ==  | ||
| - | * Исходный код [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/  | + | * Исходный код [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Group774/Kornienko2010SVMRegression Matlab]  | 
== Смотри также ==  | == Смотри также ==  | ||
| Строка 185: | Строка 185: | ||
* 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.  | * 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|Korial|Strijov}}  | 
[[Категория:Практика и вычислительные эксперименты]]  | [[Категория:Практика и вычислительные эксперименты]]  | ||
[[Категория:Классификация]]  | [[Категория:Классификация]]  | ||
[[Категория:Линейные классификаторы]]  | [[Категория:Линейные классификаторы]]  | ||
Текущая версия
SVM (Support Vector Machine, машина опорных векторов) — это особый класс алгоритмов, который характеризуется использованием ядер, отсутствием локальных минимумов, и используется для решения задач классификации и регрессии. В этой статье рассматривается пример использования метода опорных векторов в задачах регрессии.
Содержание | 
Постановка задачи
Дано: Обучающая выборка , где 
-признаковое описание i-го объекта, 
 - характеристика, приписываемая объекту. Функция потерь имеет вид 
 для каждого вектора 
, где 
.
Найти: такую функцию , которая описывает зависимость 
 наилучшим образом.
Алгоритм
В этом примере решается задача построения линейной SVM регрессии. Для этого решается прямая задача минимизации функционала потерь, в предположении что решение задается линейной комбинацией неких порождающих функций, из которых можем составить вектор-функцию 
. 
Тогда функционал примет вид:
В предположении что
Для этого вводятся обозначение  и дополнительные переменные 
 и 
:
,
,
.
Геометрический смысл  и 
:
Далее решается задача квадратичного программирования:
Эту же задачу можно преобразовать к виду , при условии, что 
а также, 
, где 
 - вектор-столбец, составленный из столбцов 
, тоесть, где все переменные объединены в один столбец неизвестных. В таких обозначениях 
, где единиц и нулей в 
 и 
 соответственно столько же, сколько порождающих функций, а размерность матрицы 
 и вектора 
 равна размерности 
.
Теперь построим матрицу А и столбцы  и 
. Преобразуем задачу квадратичного программирования к виду
Получаем,
, и количество минус бесконечностей в lb равно количеству порождающих функций, а количество нулей равно 
.
Таким образом, мы свели задачу к задаче квадратичного программирования.
В нашем примере значения С,  и порождающие функции задаются экспертом.
Вычислительный эксперимент
Вычислительный эксперимент состоит из трех основных частей:
- Генерация данных;
 - Работа алгоритма;
 - Визуализация и анализ данных.
 
Генерация данных
При генерации данных мы выбираем некую линейную комбинацию наших порождающих функций, и добавляем к ней случайный шум. В ходе эксперимента исследуются различные, как дискретные, так и непрерывные шумы. В качестве базовой функции выбрана функция . А в качестве порождающих функций 
.
Нормальное распределение
 дисперсия=1
 дисперсия=0.1
 Зависимость весов соответствующих функций от обратной дисперсии
Пуассоновское распределение
Пуассоновское распределение с большой дисперсией
 Пуассоновское распределение с малой дисперсией, получаем почти точное решение
Часть предыдущего графика, на которой мы видим, что даже с идеальными данными мы не получим идеальное приближение, т.к. среди прочего минимизируем 
. Функционал потерь состоит из суммы двух частей: 
 и 
. Если точки идут довольно ровно (дисперсия мала по сравнению с 
), то можно выделить целое семейство функций, которые обращают вторую часть в ноль, но при этом первая часть будет принимать различные значения для различных наборов коэффициентов 
. Таким образом, мы в качестве решения получим функцию из семества с минимальным 
, и она будет отличаться от точного решения.
 Зависимость весов соответствующих функций от параметра
Равномерное распределение
 Работа алгоритма на примере с равномерным шумом. На этом графике шум равномерно распределен на отрезке 
 Зависимость весов соответствующих функций от параметра
Распределение sin(unif)
Тест на распределении вида , или же синуса от равномерного распределения.
 Если выбрать большую амплитуду(=5), решение может сильно отличаться от верного
 При малых(=0.5) такого не наблюдается.
 Зависимость весов соответствующих функций от параметра
Реальные данные
Пример взят из Репозитория UCI. В этом примере рассматриваются автомобили 1970-1973 года выпуска. Строится зависимость мощности автомобиля [л.с.] от веса [кг]
Пример иллюстрирует, что очень важно правильно выбирать порождающие функции. Хотя потери меньше, чем на следующем графике, такое решение не является достаточно точным.
Вектор порождающих функций: 
;
Вектор порождающих функций: 
;
Исходный код
- Исходный код 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 в учебном процессе.  | 


