Категориальная логистическая регрессия, библиотека - PullRequest
2 голосов
/ 15 апреля 2011

В настоящее время я работаю над проектом, касающимся сегментации географических регионов на основе растений, которые растут в каждом из нескольких значимых слоев (то есть каждый слой сегментации имеет значение, уникальное по отношению к другим слоям)

При этом мы используем логистическую регрессию для перехода от списка регионов с сегментом, к которому они принадлежат на каждом слое, и к каким растениям они относятся, к вероятности роста растения в каждой комбинации сегментов. На данный момент мы используем SPSS, связанный с реализацией сегментации в C #.

Пока все хорошо. Проблема в том, что SPSS медленный, как патока в холодный день. Для полного набора (2500 заводов и 565 регионов) один цикл займет около полугода. Это время, которого у нас нет, поэтому сейчас мы используем сокращенные наборы данных, но даже это занимает несколько часов.

Мы изучили другие библиотеки с логистической регрессией (в частности, Accord.NET и Extreme Optimization), но ни одна из них не имеет категориальной логистической регрессии.

В этот момент мне, вероятно, следует указать, что я имею в виду под категориальной логистической регрессией. Учитывая, что каждая строка в наборе данных, которую мы передаем в механизм статистики, имеет переменную для каждого слоя, и одну для завода, который нас интересует в данный момент, значения переменных слоя считаются категориями. 0 не лучше и не хуже 1, это просто другое. То, что мы хотим от движка статистики, - это значение для каждой категории каждой переменной слоя (а также, конечно, точки пересечения), поэтому в установке со слоем с 3 сегментами и одним с 2 сегментами мы получили бы 5 значения и перехват.

Я должен отметить, что мы экспериментировали с фиктивными или индикаторными переменными как в Accord.NET (где это должно было быть сделано вне библиотеки), так и в Extreme Optimization (которая имела некоторую поддержку в библиотеке), но это не дал необходимых результатов.

TL; DR

Итак, короче говоря, кто-нибудь знает хорошее решение для категориальной логистической регрессии в C #? Это может быть библиотека классов или просто интерфейс для подключения к внешнему механизму статистики, если он стабилен и достаточно быстр.

1 Ответ

0 голосов
/ 04 марта 2013

Стандартный подход к созданию логистической регрессии с категориальными входными переменными заключается в преобразовании категориальных переменных в фиктивные переменные. Таким образом, вы должны иметь возможность использовать любую из библиотек логистической регрессии, которые вы упомянули в своем вопросе, при условии, что вы выполняете соответствующее преобразование для входных данных.

Отображение из одной категориальной переменной с n категориями в n-1 числовых фиктивных переменных называется контрастом. Этот пост содержит некоторые дополнительные объяснения того, как контрасты складываются.

Обратите внимание, что число фиктивных переменных на 1 меньше, чем количество значений категории. Если вы попытаетесь использовать одну фиктивную переменную для каждого значения категории, вы обнаружите, что последняя фиктивная переменная не зависит от предыдущих фиктивных переменных, и если вы попытаетесь подогнать к ней регрессионную модель, вы получите ошибки (или бессмысленные коэффициенты).

Итак, чтобы взять пример модели с перехватом, 3-уровневой категориальной входной переменной и 2-уровневой категориальной входной переменной, число коэффициентов будет 1 + (3 - 1) + (2 - 1) = 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...