🎲 Что такое predict_proba? 💻 Предположим, вы решаете задачу оттока и вам нужно понять с какой вероятностью пользователь будет оттекать из сервиса. Фактический флаг, обычно, это 1 и 0 ничего нам не скажут о том, что пользователи собирают покинуть наш сервис. Для этого вам нужны определенные вероятности отнесения к оттоку (1), далее можно с этим как-то работать, например, изучать распределения, тестировать определенные гипотезы и т.д.
predict_proba выдает на выходе вероятности отнесения к какому-либо классу. Мы решаем задачу с Propenity Score Matching, нам нужно в первой итерации (как бы сокращая размерность) для каждого объекта выборки определить вероятность отношения к тритменту (то есть определить 1 - пользователь совершил какое-то действие).
🤔 Как работает?
1. Сначала мы вычисляем линейную комбинацию векторов признаков и весов (с определенным байесом). 2. Результат подается в функцию активацию, например, классический вариант, это сигмоида (для бинарной классификации) и softmax (для многоклассовой классификации). 3. Определяем вероятности.
🐍 Пример отрабатывания вручную `python from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression
X, y = make_classification() lr = LogisticRegression()
lr.fit(X, y)
z = np.dot(X, lr.coef.reshape(-1, 1)) + lr.intercept
model_predict = lr.predict_proba(X)[:5, 1]
naive = 1 / (1 + np.exp(-z)).flatten()[:5]
print(model_predict) print(naive)
🥰 Как видим, результаты идентичные (для вероятностей). Можно также поставить трешхолды и определить 1 или 0, чтобы замерять качество полученных моделей. Дополнительные материалы:
1. How to Use Logistic Regression predict_proba Method in scikit-learn 2. CatBoost. Predict Proba 3. Predict_proba examples in MLflow - October 2024 ❤️ Понравился пост? Поддержи бустом, пиши комментарии. Если наберется много реакций, выпущу пост про различные функционалы качества, функции ошибки в машинном обучении или про Sequential Testing 🔥`