Рисунок 1. двумерный случай
Один из методов, позволяющих решить нашу проблему, это алгоритм наименьшей среднеквадратичной ошибки (НСКО алгоритм).
Интерес данный алгоритм представляет не только в том, что он помогает построить необходимые нам ЛРФ, а в том, что при возникновении ситуации, когда классы линейно неразделимы, мы можем построить ЛРФ, где ошибка неправильной классификации стремится к минимуму.
Рисунок 2. линейно неразделимые классы
Далее перечислим исходные данные:
— обозначение класса (i — номер класса)
— обучающая выборка
— метки( номер класса к которому относится образ )
— скорость обучения (произвольная величина)
Этой информации нам более чем достаточно для построения ЛРФ.
Перейдем непосредственно к самому алгоритму.
Алгоритм
1 шаг
а) переводим в систему , где равен , у которого в конце приписан класс образа
Например:
Пусть задан образ .
Тогда
, если из 1 класса
, если из 2 класса
б) строим матрицу размерностью Nx3 которая состоит из наших векторов
в) строим
г) считаем где произвольный вектор(по умолчанию единичный)
д) (номер итерации)
2 шаг
Проверяем условие останова:
Если то «СТОП»
иначе — переходим к шагу 3
3 шаг
а) (где + это функция Хэвисайда)
Например(функция Хэвисайда):
(если )
(если или )
После подсчетов меняем номер итерации:
б) переходим на шаг 2
Пример работы алгоритма НСКО
принадлежат 1 классу
принадлежат 2 классу
а)
б)
в)
г)
д)
, т.к. все элементы «СТОП»
Завершили работу алгоритма, и теперь можно подсчитать нашу ЛРФ.
Спасибо parpalak за онлайн редактор.
Спасибо за внимание.
Комментарии (8)
masai
13.10.2016 19:09+1Какова общая идея метода? Как вычисляется ошибка, которая минимизируется? Почему алгоритм вообще работает? Чем он лучше или хуже других методов классификации? Какова скорость сходимости?
Я правильно понимаю, что первый шаг — это просто решение задачи методом нормального уравнения для подвыборки?
lorc
13.10.2016 19:09+3Как-то это больше похоже на методичку к лабе, честно говоря. Хотелось бы всё-таки увидеть описание работы алгормитма. Хоть какое-то обоснование, почему он сходится и как быстро сходится. Как выбирается скорость обучения… А то сейчас выглядит так, будто если поставить h_k = 100500, то алгоритм всегда будет сходится за одну итерацию.
Короче, хотелось бы видеть полноценную статью, а не короткую заметку.rocket3
13.10.2016 20:09Спасибо за замечание. Данную тематику можно было бы довести до научного исследования, но в данной статье я постарался изложить теорию кратко, в помощь для тех, кто начинает изучение теории классификации.
masai
13.10.2016 20:40+2При всём уважении, эта статья начинающим вряд ли будет полезна, так как не объясняет область применимости и характер поведения алгоритма.
lorc
13.10.2016 20:43Извините, но теории то как раз нету. Сплошная практика.
Вот вам шаги алгоритма, вот вам пример шагания.
Dark_Daiver
Этот подход чем-то лучше обычных SVM?
rocket3
Метод SVM имеет кардинально иной подход к классификации данных. На практике я не сравнивал, но с точки зрения теории могу сказать, что в случае линейно неразделимых классов в алгоритме SVM предусмотрен переход к пространству большей размерности, дабы получить разделимость, а в НСКО мы, не меняя исходных данных, стараемся разделить классы, сводя ошибку к минимуму.
Dark_Daiver
Ну не обязательно же, достаточно просто перейти от жестких ограничений к мягким. Скажем при помощи Hinge loss.