🎲 Что такое predict_proba?



💻 Предположим, вы решаете задачу оттока и вам нужно понять с какой вероятностью пользователь будет оттекать из сервиса. Фактический флаг, обычно, это 1 и 0 ничего нам не скажут о том, что пользователи собирают покинуть наш сервис. Для этого вам нужны определенные вероятности отнесения к оттоку (1), далее можно с этим как-то работать, например, изучать распределения, тестировать определенные гипотезы и т.д.



predict_proba выдает на выходе вероятности отнесения к какому-либо классу. Мы решаем задачу с Propenity Score Matching, нам нужно в первой итерации (как бы сокращая размерность) для каждого объекта выборки определить вероятность отношения к тритменту (то есть определить 1 - пользователь совершил какое-то действие).



🤔 Как работает?



1. Сначала мы вычисляем линейную комбинацию векторов признаков и весов (с определенным байесом).

2. Результат подается в функцию активацию, например, классический вариант, это сигмоида (для бинарной классификации) и softmax (для многоклассовой классификации).

3. Определяем вероятности.



🐍 Пример отрабатывания вручную







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 🔥