Логистическая регрессия против прогнозирования вероятности путем разделения данных в ячейку

#python #machine-learning #statistics #logistic-regression #bins

#python #машинное обучение #Статистика #логистическая регрессия #ячейки

Вопрос:

Итак, я изучаю использование модели логистической регрессии для прогнозирования вероятности попадания, приводящего к цели. У меня есть два предиктора, но для простоты предположим, что у меня есть один предиктор: расстояние от цели. При выполнении некоторого исследования данных я решил исследовать взаимосвязь между расстоянием и результатом цели. Я сделал это графически, разделив данные на ячейки одинакового размера, а затем взяв среднее значение всех результатов (0 для промаха и 1 для цели) в каждой ячейке. Затем я построил среднее расстояние от цели для каждой ячейки в зависимости от вероятности выигрыша. Я сделал это на python

 #use the seaborn library to inspect the distribution of the shots by result (goal or no goal) 
fig, axes = plt.subplots(1, 2,figsize=(11, 5))
#first we want to create bins to calc our probability
#pandas has a function qcut that evenly distibutes the data 
#into n bins based on a desired column value
df['Goal']=df['Goal'].astype(int)
df['Distance_Bins'] = pd.qcut(df['Distance'],q=50)
#now we want to find the mean of the Goal column(our prob density) for each bin
#and the mean of the distance for each bin
dist_prob = df.groupby('Distance_Bins',as_index=False)['Goal'].mean()['Goal']
dist_mean = df.groupby('Distance_Bins',as_index=False)['Distance'].mean()['Distance']
dist_trend = sns.scatterplot(x=dist_mean,y=dist_prob,ax=axes[0])
dist_trend.set(xlabel="Avg. Distance of Bin",
       ylabel="Probabilty of Goal",
       title="Probability of Scoring Based on Distance")
 

Вероятность выигрыша в зависимости от расстояния

Итак, мой вопрос в том, зачем нам проходить процесс создания модели логистической регрессии, когда я мог бы подогнать кривую к графику на изображении? Разве это не предоставило бы функцию, которая предсказывала бы вероятность выстрела с расстояния x.

Я предполагаю, что проблема будет заключаться в том, что мы уменьшаем, скажем, 40 000 точек данных до 50, но я не совсем уверен, почему это будет проблемой для прогнозирования будущего выстрела. Можем ли мы увеличить количество ячеек или это просто добавит изменчивости? Является ли это случаем компромисса между отклонениями и отклонениями? Я просто немного смущен тем, почему это было бы не так хорошо, как логистическая модель.

Комментарии:

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

Ответ №1:

Метод биннинга немного более сложный, чем логистическая регрессия, поскольку вам нужно попробовать разные типы графиков, чтобы соответствовать кривой (например, обратная зависимость, логарифм, квадрат и т. Д.), В то время как для логистической регрессии вам нужно только настроить скорость обучения, чтобы увидеть результаты.

Если вы используете одну функцию (ваш предиктор «расстояния»), я бы не увидел большой разницы между методом биннинга и логистической регрессией. Однако, когда вы используете две или более функции (я вижу «Расстояние» и «Угол» на предоставленном вами изображении), как бы вы планировали объединить вероятности для каждого, чтобы сделать окончательную классификацию 0/1? Это может быть сложно. Во-первых, возможно, «расстояние» является более полезным предиктором, чем «Угол». Однако логистическая регрессия делает это за вас, потому что она может корректировать веса.

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