Ускорьте одномерную логистическую регрессию с помощью IRLS на большом количестве подвыборок.Python

Программы на Python
Ответить
Anonymous
 Ускорьте одномерную логистическую регрессию с помощью IRLS на большом количестве подвыборок.

Сообщение Anonymous »

Я пытаюсь выполнить логистическую регрессию на выборках, случайно отобранных из огромного набора данных для двоичной классификации. Я реализовал логистическую регрессию с использованием итеративного перевзвешенного метода наименьших квадратов (IRLS), и здесь был показан код Cython с поправкой Ферта для устранения систематической ошибки, возможно возникающей из линейно разделимых данных. Я существенно упростил реализацию, так как рассматривалась только одна переменная, что в несколько раз быстрее, чем LogisticRegress в sklearn. Поскольку данные подвергались подвыборке большое количество раз и логистическая регрессия выполнялась для одной переменной каждой подвыборки, я хотел бы обратиться за советом по ускорению этой процедуры одномерной логистической регрессии.
Проблему можно сформулировать как построение большого количества (обозначаемого как N) деревьев решений для классификации случайных лесов. Каждое дерево решений имеет три узла (корень и два дочерних узла, например, переменная x1 в корне, переменная x2 и x3 в левом и правом узле соответственно), а данные для создания дерева выбираются случайным образом (например, 5000 выборок для каждого класса, но количество может варьироваться) из моего огромного набора данных. Затем логистическая регрессия выполняется для всех x1 , x2 и x3. Таким образом, всего будет получено 3 * N моделей логистической регрессии.
После профилирования моего проекта 36335 вызовов моей функции cythonized логистической регрессии стоили 29,116 секунд , 50% затраченного времени моего проекта.
Я прочитал несколько научных статей и погуглил, чтобы узнать, есть ли способ ускорить это, но, к сожалению, не могу его найти.
После тщательного размышления я попытался использовать информацию, полученную из предыдущих деревьев, воспользовавшись преимуществом того, что переменные неоднократно подвергались подвыборке, и предположив, что распределения подвыборок одной и той же переменной были схожими, что указывает на то, что параметры моделей логистической регрессии, полученные из разных подвыборок одной и той же переменной, должны быть близки. Из онлайн-материалов, касающихся IRLS, первоначальные предположения о наклоне b и intercept a сигмовидной функции либо оба равны 1, либо оба равны 0. Таким образом, вместо этого первоначальными предположениями b и a могут быть наклоны и точки пересечения, полученные из моделей логистической регрессии, построенных на основе предыдущих подвыборок, что может ускорить сходимость IRLS. Например, a1,1 и b1,1 получены из модели логистической регрессии переменной x1 в первом дереве решений с начальной догадкой 1. Затем для второго дерева решений, той же переменной x1, эти два параметра используются в качестве начальных предположений логистической регрессии и так далее. Эта процедура полезна, приводит к ускорению на 20 %.
Однако моя попытка иногда приводит к расхождению IRLS, поэтому я включил проверку Cython isnan в свой код и сбросил a и b на 1, чтобы перезапустить оценку параметра.
Любой алгоритм или процедура, которая может обеспечить более быструю и стабильную логистику регрессия или оптимизация на этих подвыборках?

Подробнее здесь: https://stackoverflow.com/questions/798 ... subsampled
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»