Эти коэффициенты не вычисляются для обеспечения идентифицируемости модели. Другими словами, их не вычисление гарантирует, что коэффициенты для других классов будут уникальными . Если у вас есть три набора коэффициентов, существует бесконечное количество моделей, которые дают одинаковые прогнозы, но имеют разные значения коэффициентов. И это плохо, если вы хотите знать стандартные ошибки, p-значения и т. Д.
lo git отсутствующего класса предполагается равным нулю. Демо:
mm = st.MNLogit(
np.random.randint(1, 5, size=(100,)),
np.random.normal(size=(100, 3))
)
res = mm.fit()
xt = np.random.normal(size=(2, 3))
res.predict(xt)
Результаты в:
array([[0.19918096, 0.34265719, 0.21307297, 0.24508888],
[0.33974178, 0.21649687, 0.20971884, 0.23404251]])
Теперь это логиты плюс нули для первого класса
logits = np.hstack([np.zeros((xt.shape[0], 1)), xt.dot(res.params)])
array([[ 0. , 0.54251673, 0.06742093, 0.20740715],
[ 0. , -0.45060978, -0.4824181 , -0.37268309]])
И прогнозы через softmax:
np.exp(logits) / (np.sum(np.exp(logits), axis=1, keepdims=1))
array([[0.19918096, 0.34265719, 0.21307297, 0.24508888],
[0.33974178, 0.21649687, 0.20971884, 0.23404251]])
, которые соответствуют предсказаниям модели.
Повторяю: вы не можете найти эти коэффициенты. Для первого класса используйте константу lo git, равную нулю. И вы не можете понять, насколько важны функции для первого класса. На самом деле это некорректный вопрос: функции не могут влиять на ссылочный класс, потому что ссылочный класс никогда не прогнозируется напрямую. Коэффициенты говорят вам о том, насколько логарифмические шансы для данного класса по сравнению с эталонным классом изменяются в результате увеличения единицы для конкретной характеристики.