Я пытаюсь научиться писать линейный классификатор, используя логистическую регрессию и градиентный спуск.
Задача алгоритма - узнать весовые коэффициенты, которые минимизируют стоимость (у - ч w ( x )) 2 по всем примерам.
Где гипотеза h w ( x ) = 1 / (1 + e - w * x )
ВесЯ использую обновленное правило из «Искусственного интеллекта - современный подход» Стюарта Рассела и Питера Норвиг.
ш i <- ш <sub>i + α (гг ш ( x )) * ч* ** 1 039 тысяча тридцать-восемь * ш * +1041 * (* * х одна тысяча сорок две ) (1-х ш * * одна тысяча сорок-семь ( х )) *x i
Я использую только два примера для очень простого теста.
(1, 1) с меткой 1
(3, 3) с меткой 0
После 10000 итераций стохастического градиентного спуска алгоритм выдает следующий результат
w0 = 5,62
w1 = -1,47
w2 = -1,47
Итак, уравнение дляграница принятия решения составляет 5,62 - 1,47x1 - 1,47x2.
После 100000 итераций
w0 = 8,17
w1 = -2,10
w2 = -2.10
Чем больше итераций градиентного спуска я использую, тем больше масштабируется вес.Он не сходится ни к одному решению, как для линейной регрессии.
Из того, что я понимаю об использовании логистической регрессии для классификации, большое преимущество заключается в том, что новые точки данных классифицируются с вероятностью принадлежности к классу 0 или классу.1. Но вероятность, определяемая логистическими функциями, зависит от размера весов.
Например, предположим, у меня есть точка (2,2), которую я хочу классифицировать, используя мою модель.Использование границы решения, найденной после 100000 итераций:
1 / (1 + e ^ - (8,17 * 1 - 2,10 * 2 - 2,10 * x) ) = 0,44
Но еслиЯ (или алгоритм после многих итераций) умножить все веса на 10, тогда результат будет
1 / (1 + e ^ - (81,7 * 1 - 21 * 2 - 21 * 2) )= 0,09
Для меня это не имеет смысла, точкам, находящимся близко к границе решения, следует присвоить значение ближе к 0,5, как в случае после 100000 итераций, но с увеличением числа итераций оно становится все ближе и ближедо 0.
Может кто-нибудь сказать мне, что я неправильно понял или как это имеет смысл?Разве градиентный спуск не должен достигать одного уникального решения?Если нет, то когда подходящее время, чтобы остановить алгоритм?Я надеюсь, что кто-то может помочь мне понять это.