Я могу обучить логистической регрессии в R
использовании
glm(y ~ x, family=binomial(logit)))
но, IIUC, это оптимизирует для логарифмической вероятности.
Есть ли способ обучить модель, используя линейную ( ) функцию потерь (которая в этом случае такая же, как общее расстояние изменения )?
Т.е., учитывая числовой вектор и битовый (логический) вектор , я хочу построить монотонную (фактически возрастающую) функцию такую, чтосводится к минимуму
Смотрите также
Ответы:
То, что вы хотите сделать, не существует, потому что это, из-за отсутствия лучшего слова, математически ошибочно.
Но сначала я подчеркну, почему я считаю, что предпосылки вашего вопроса обоснованы. Затем я попытаюсь объяснить, почему я думаю, что выводы, которые вы из них делаете, основаны на неправильном понимании логистической модели, и, наконец, я предложу альтернативный подход.
Я буду обозначать ваших наблюдений (более жирные буквы обозначают векторы), которые лежат в мерном пространстве (первая запись в равна 1) с , и является монотонной функцией , скажем, как логистическая кривая исправить идеи. Для целесообразности, я просто предположу , что является достаточно большой по сравнению с . np x{(xxi,yi)}ni=1 n p p<n y i ∈[0,1]f( xxxi p<n yi∈[0,1] xf(xxi)=f(xx′iββ) n pxx′iββ n p
Вы правы в том, что если вы намерены использовать TVD в качестве критерия для оценки подобранной модели, то разумно ожидать, что ваше соответствие оптимизирует этот же критерий среди всех возможных кандидатов в ваших данных. следовательно
Проблема в ошибке : и если мы (мы просто хотим, чтобы наша модель была асимптотически несмещенной ), тогда должен быть гетероскедастичным . Это потому, что может принимать только два значения, 0 и 1. Поэтому, учитывая, что , также может принимать только два значения: когда , что происходит с вероятностью и когдаϵi=yi−f(xx′iββ) E(ϵϵ)=0 ϵi yi xxi ϵi 1−f(xx′iββ) yi=1 f(xx′iββ) −f(xx′iββ) yi=1 , что происходит с вероятностью .1−f(xx′iββ)
Эти соображения вместе подразумевают, что:
следовательно, не является константой, но имеет вогнутую форму параболы и максимизируется, когда такова, что .var(ϵϵ) xx E(y|xx)≈.5
Эта неотъемлемая гетероскедастичность остатков имеет последствия . Это подразумевает, среди прочего, что при минимизации потерь вы асимптотически часть вашей выборки. То есть подогнанная не помещается в данные вообще, а только в той части, которая сгруппирована вокруг мест, где такова, что . То есть это наименее информативные точки данных в вашей выборке : они соответствуют тем наблюдениям, для которых шумовая составляющая является самой большой. Следовательно, ваше соответствие подтягивается к , например, не имеет значения.l1 ββ∗ xx E(yy|xx)≈.5 ββ∗=ββ:f(xx′ββ)≈.5
Как видно из приведенного выше описания, одно из решений состоит в том, чтобы отменить требование непредвзятости. Популярный способ смещения оценки (с приложением некоторой байесовской интерпретации) состоит в том, чтобы включить термин усадки. Если мы изменим масштаб ответа:
и для вычислительной целесообразности замените другой монотонной функцией --Оно будет удобно продолжение , чтобы обозначить первую компоненту вектора параметра , как , а остальных из них - и включает в себя термин усадки (например , одного вида ), в результате возникает проблема оптимизации:f(xx′ββ) g(xx,[c,γγ])=xx′[c,γγ] c p−1 γγ ||γγ||2
Обратите внимание, что в этой новой (также выпуклой) задаче оптимизации штраф за правильно классифицированные наблюдения равен 0, и он растет линейно с для неправильно классифицированной - как в потеря. Решением этой второй задачей оптимизации является знаменитым линейным SVM (с совершенным разделением) коэффициентами. В отличие от , имеет смысл выучить эти из данных со штрафом типа TVD ('type' из-за термина смещения) , Следовательно, это решение широко реализовано. Смотрите, например, R пакет LiblineaR .xx′[[c,γ] l1 [c∗,γγ∗] ββ∗ [c∗,γγ∗]
источник
Я не уверен, почему вы хотели бы использовать потерю L1 для чего-то ограниченного от 0 до 1. В зависимости от вашей цели, вы можете вместо этого рассмотреть что-то вроде потери шарнира, которая аналогична потере L1 в одном направлении и плоскости в другом.
В любом случае код ниже должен делать то, что вы просили. Обратите внимание, что оптимальный ответ - это в основном пошаговая функция.
источник
Вы можете использовать пакет glmnet для установки моделей L1, L2. Это не ограничивается логистической регрессией, но включает ее.
Вот виньетка: http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html
Существует также веб-семинар: https://www.youtube.com/watch?v=BU2gjoLPfDc
Liblinear хорош, но я нашел glmnet легче начать. Glmnet включает в себя функцию, которая выполняет перекрестную проверку и выбирает для вас параметр регуляризации на основе различных метрик, таких как AUC.
Что касается теории, я бы прочитал статью Тибшиарини о лассо (регуляризация L1) и главу, посвященную элементам статистического обучения. http://statweb.stanford.edu/~tibs/lasso/lasso.pdf
По поводу потери лога, это просто для оценки моделей. Это не функция потерь для подгонки модели.
источник