2012-06-15 2 views
0

Я обучил простую модель логистической регрессии в SSAS, используя пол и сетевой адаптер в качестве дискретных входных узлов (NIC равен 0 для некурящего, 1 для курильщика) со счетом (0-100) в качестве непрерывного выходного узла.Представленные коэффициенты логистической регрессии, рассчитанные в SSAS, создают формулу для вычисления непрерывного выходного значения

Я хочу предсказать оценку на основе значений нового участника для Gender и NIC. Конечно, я могу запустить singleton-запрос в DMX; например, следующий код производит значение 49.51 ....

SELECT Predict(Score) 
    FROM [MyModel] 
    NATURAL PREDICTION JOIN 
    (SELECT 'M' AS Gender, '1' AS NIC) as t 

Но вместо того, чтобы использовать DMX, я хочу, чтобы создать формулу из модели для расчета оценки в то время как «отключен» от SSAS.

Исследуя модель, у меня есть следующая информация в NODE_DISTRIBUTION выходного узла:

ATTRIBUTE_NAME ATTRIBUTE_VALUE SUPPORT PROBABILITY VARIANCE  VALUETYPE 
    Gender:F   0.459923854  0  0    0    7 (Coefficient) 
    Gender:M   0.273306289  0  0    0    7 (Coefficient) 
    Nic:0   -0.282281195  0  0    0    7 (Coefficient) 
    Nic:1   -0.802106901  0  0    0    7 (Coefficient) 
        0.013983007  0  0    0.647513829 7 (Coefficient) 
    Score   75.03691517  0  0    0    3 (Continuous 

Подставив эти коэффициенты в формуле логистической регрессии - что меня запрещен от загрузки как новый пользователь:) - для курения мужского примера выше,

f(...) = 1/(1 + exp(0 - (0.0139830071136734 -- Constant(?) 
    + 0 * 0.459923853918008      -- Gender:F = 0 
    + 1 * 0.273306289390897      -- Gender:M = 1 
    + 1 * -0.802106900621717      -- Nic:1 = 1 
    + 0 * -0.282281195489355)))     -- Nic:0 = 0 

приводит к значению 0,374 .... Но как я «карта» это значение обратно в распределении счета 0-100? Другими словами, как я могу расширить приведенное выше уравнение для получения того же значения, которое делает однопоточный запрос DMX? Я предполагаю, что это потребует stdev и значение моего распределения баллов, но я точно придерживаюсь того, как использовать эти значения. Я также не уверен, правильно ли я использую ATTRIBUTE_VALUE в пятой строке в качестве константы.

Любая помощь, которую вы можете предоставить, оценят!

ответ

1

Я не эксперт, но мне кажется, что вы не хотите использовать логистическую регрессию вообще. Вы хотите тренировать линейную регрессию. В настоящее время у вас есть модель логистической регрессии, они обычно используются для двоичной классификации, а не для непрерывных значений, т. Е. 0-100.

How to do linear regression in SAS

Wikipedia: linear regression

подробнее: вопрос действительно зависит, как и большинство проблем Datamining/машина Learing, на ваших данных. Если ваши данные бимодальные, более 90% учебных наборов очень близко к 1 или 100, то логическая регрессия МОЖЕТ быть использована. Уравнение, используемое в логистической регрессии, специально предназначено для предоставления ответов ДА/НЕТ. Это технически непрерывная функция, поэтому возможны такие результаты, как .34, но они статистически очень маловероятны (при типичном использовании вы должны округлить до 0).

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

SSAS linear regression

+0

Спасибо, Гарри, я целенаправленно сделал очень простой пример, чтобы я мог решить эту проблему. Я фактически придерживаюсь модели логистической регрессии, но, по крайней мере, в SSAS, она, похоже, поддерживает непрерывные значения как результат, с тем преимуществом, что формула ограничивает вывод в пределах 0-1, если я понимаю: . [Логистическая регрессия] (http://msdn.microsoft.com/en-us/library/cc645904) – hbeam

+0

да, но используемая S-кривая специально предназначена для визуализации 0 или 1 (технически она непрерывна из-за математического свойства, но просто масштабирование результата этой модели, вероятно, НЕ то, что вы хотите). В большинстве случаев, если вы не выполняете классификацию YES/NO, вам, вероятно, нужна линейная регрессия. Проблема тогда в том, что она предсказывает вне диапазона 1-100. Вы должны решить эту проблему, либо классифицируя эти экземпляры как выбросы, либо округление (до 100 или до 1) в программном обеспечении. –

0

Вы не хотите быть с помощью логистической регрессии, если вы пытаетесь смоделировать счет, ограниченный интервал [0,100]. Логистическая регрессия используется для моделирования либо двоичных данных, либо пропорций на основе биномиального распределения.Предполагая, что функция логической ссылки, которую вы на самом деле моделируете с логистической регрессией, является функцией вероятности (log of odds), и поэтому весь процесс предназначен для предоставления вам значений в интервале [0,1]. Попытка использовать это для сопоставления со счетом не кажется правильным типом анализа вообще.

Кроме того, я не вижу, как регулярная линейная регрессия поможет вам либо в том, что ваша модель будет способна генерировать значения за пределами целевого интервала [0,100], и если вам придется выполнять специальную усечку значений для этого то вы действительно можете быть уверены, что ваши данные имеют какой-либо эффективный смысл?

Я хотел бы указать вам тип анализа, который вам нужен, но я не сталкивался с этим типом анализа. Мой совет вам должен был отказаться от подхода логистической регрессии и рассмотреть возможность присоединения к списку рассылки ALLSTAT, используемому профессиональными статистиками и математиками, и просить совета там. Или что-то подобное.

Смежные вопросы