Локально взвешенная логистическая регрессия
я пытался реализовать локально взвешенный алгоритм логистической регрессии в Ruby. Насколько я знаю, в настоящее время для этого алгоритма не существует библиотеки, и информации очень мало, поэтому это было сложно.
моим основным ресурсом был Диссертация доктора Кан Дэн, в котором он описал алгоритм в том, что я чувствую, довольно легкие детали. Моя работа в библиотеке пока здесь.
я запуск в неприятности при попытке вычислить B
(бета). Из того, что я понял,B
Это (1+d x 1)
вектор, представляющий локальное взвешивание для определенной точки. После этого, pi
(вероятность положительного выхода) для этой точки является сигмоидной функцией, основанной на B
для ссылки. Чтобы получить B
используйте Ньютона-Рафсона алгоритм рекурсивно определенное количество раз, вероятно, не более десяти.
уравнение 4-4 на стр. 66, Ньютон-Рафсон сам алгоритм не имеет для меня смысла. Основываясь на моем понимании того, что X
и W, (x.transpose * w * x).inverse * x.transpose * w
должно быть (1+d x N)
матрица, которая не совпадает с B
, которая составляет (1+d x 1)
. Единственный способ, который будет работать, тогда, если e (N x 1)
вектор.
использование pi'
также сбивает меня с толку. Уравнение 4-5, производная сигмоидной функции w.r.т. B, дает константу, умноженную на вектор, или вектор. Из моего понимания, однако,pi'
просто предполагается, что это число, умноженное на w и образующее диагональ алгоритма веса W.
Итак, мои два главных вопроса вот, что такое e
на странице 67 и это 1xN
матрица мне нужна, и как pi'
в уравнении 4-5 закончить ряд?
я понимаю, что на этот вопрос трудно ответить, поэтому, если есть хороший ответ, я вернусь через несколько дней и дам ему награду в пятьдесят очков. Я бы отправил письмо доктору Денгу, но не смог выяснить, что с ним случилось после 1997 года.
если кто-нибудь имеет какой-либо опыт работы с этим алгоритмом или знает другие ресурсы, любая помощь была бы очень признательна!
1 ответов
насколько я вижу, это просто версия логистической регрессии, в которой термины в функции логарифмического правдоподобия имеют мультипликативный вес в зависимости от их расстояния от точки, которую вы пытаетесь классифицировать. Я бы начал с ознакомления с объяснением логистической регрессии, например http://czep.net/stat/mlelr.pdf. "E", о котором вы говорите, кажется, совершенно не связано с константой Эйлера - я думаю, что он использует e для ошибки.
Если вы можете вызовите Java из Ruby, вы можете использовать логистический классификатор в Weka, описанный вhttp://weka.sourceforge.net/doc.stable/weka/classifiers/functions/Logistic.html - это говорит: "хотя исходная логистическая регрессия не имеет дело с весами экземпляров, мы немного модифицируем алгоритм для обработки Весов экземпляров."Если ничего другого, вы можете скачать его и посмотреть на его исходный код. Если вы сделаете это, обратите внимание, что это довольно сложный подход, например, они предварительно проверяют, действительно ли все точки лежат в некотором подпространстве входного пространства, и проецируют вниз несколько измерений, если они это делают.