Локально взвешенная логистическая регрессия

я пытался реализовать локально взвешенный алгоритм логистической регрессии в 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 - это говорит: "хотя исходная логистическая регрессия не имеет дело с весами экземпляров, мы немного модифицируем алгоритм для обработки Весов экземпляров."Если ничего другого, вы можете скачать его и посмотреть на его исходный код. Если вы сделаете это, обратите внимание, что это довольно сложный подход, например, они предварительно проверяют, действительно ли все точки лежат в некотором подпространстве входного пространства, и проецируют вниз несколько измерений, если они это делают.