Использование аналитики машинного обучения для повышения шансов поступления в аспирантуру

В этой статье мы будем использовать различные методы машинного обучения для недавних данных о поступлении в аспирантуру, чтобы проанализировать оптимальное сочетание таких факторов, как балл GRE и CGPA, чтобы повысить шансы поступления в аспирантуру.

Основные выводы

  • CGPA - безусловно, самый важный фактор при приеме в аспирантуру.
  • Дополнительный балл на GRE увеличивает шансы на поступление в аспирантуру примерно на 0,14%.
  • Дополнительный балл TOEFL увеличивает шансы на поступление в аспирантуру примерно на 0,28%.
  • Проведение исследований целесообразно только в том случае, если рейтинг колледжа низкий.
  • Высокий балл TOEFL не может противостоять среднему / низкому баллу GRE; TOEFL начинает давать статистически значимый вклад в шансы поступления только после того, как балл GRE становится достаточно высоким.

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

  • Создание модели логистической регрессии для прогнозирования шансов допуска, анализа и визуализации коэффициентов.
  • Использование важности перестановки и модели регрессора дерева решений для определения важности функции.
  • Графики частичной зависимости (PDP) с одной переменной и контуром, чтобы увидеть, как одна или несколько переменных влияют на вероятность поступления.

Данные

Данные можно найти на Kaggle здесь.

Заголовок данных:

Оценка GRE, оценка TOEFL, рейтинг университета, SOP, LOR, CGPA и исследования - это функции для прогнозирования шанса поступления.

Мы можем использовать встроенный pandas .describe ():

Модель логистической регрессии и анализ коэффициентов

Во-первых, используя удобную функцию train_test_split sklearn, мы разбиваем наши данные на обучающие и тестовые наборы.

import sklearn
from sklearn.model_selection import train_test_split
X = data.drop('Chance of Admit ',axis=1)
y = data['Chance of Admit ']
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2)

Обучение модели логистической регрессии в sklearn занимает всего 2 строчки кода:

from sklearn.linear_model import LinearRegression
lin = LinearRegression().fit(X_train,y_train)
print((y_test - lin.predict(X_test)).apply(abs).mean())

Выход:

0.04337302752734804

Средняя средняя ошибка (MAE) для логистической регрессии составляет около 0,045 или 4,5% при прогнозировании шансов поступления в аспирантуру (из 100%).

Теперь возьмем коэффициенты из модели:

coef = pd.DataFrame({'column':X_test.columns,'coefficient':lin.coef_*100}).sort_values('coefficient').reset_index()
coef.drop('index',axis=1)

Выход:

Мы можем заключить, самое главное, следующее:

  • Дополнительный балл на GRE увеличивает шансы на поступление в аспирантуру примерно на 0,14%.
  • Дополнительный балл TOEFL увеличивает шансы на поступление в аспирантуру примерно на 0,28%.
  • Дополнительный балл в GPA колледжа увеличивает шансы на поступление в аспирантуру примерно на 12,34%.
  • Проведение исследований увеличивает шансы на поступление в аспирантуру примерно на 2,97%.

Имейте в виду, что все они находятся в диапазоне ошибок 4%.

import seaborn as sns
import matplotlib.pyplot as plt
plt.style.use('ggplot')
fig = plt.figure(figsize = (15,5))
plt.xticks(rotation=45)
colors = ['#adebad','#adebad','#adebad','#adebad','#99e699','#85e085','#70db70']
sns.barplot(coef['column'],coef['coefficient'],palette = colors)
plt.ylabel("Additional % Admission")
plt.xlabel('Factor')
plt.show()

Важно понимать, что у GRE и TOEFL есть много возможных баллов, поэтому имеет смысл, что они будут иметь низкие коэффициенты.

Большой вывод: средний балл колледжа необходим для поступления в аспирантуру. Каждое дополнительное очко - это дополнительный шанс 12,84%.

Важность перестановки

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

import eli5
from eli5.sklearn import PermutationImportance
perm = PermutationImportance(lin, random_state=1).fit(X_test, y_test)
eli5.show_weights(perm, feature_names = X_test.columns.tolist())

Как и раньше, очень важен CGPA, за которым следуют оценки GRE и TOEFL.

Значения SHAP

Регрессор дерева решений и значения SHAP

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

import shap
from sklearn.tree import DecisionTreeRegressor
dtr = DecisionTreeRegressor().fit(X_train,y_train)
explainer = shap.TreeExplainer(dtr)
shap_values = explainer.shap_values(X_test)

Важность функции SHAP

SHAP - еще один метод оценки важности функций. SHAP не принимает во внимание масштаб, как это делают коэффициенты логистической регрессии.

shap.summary_plot(shap_values, X_test, plot_type="bar")

Мы можем сделать следующие выводы:

  • Как обычно, CGPA - самая важная функция на сегодняшний день
  • Результаты GRE и TOEFL очень важны
  • Рейтинг университета не так важен, как оценка GRE и особенно CGPA. Это означает, что независимо от рейтинга университетов, вы не уйдете слишком далеко с низкими показателями CGPA и GRE.
  • Исследования не кажутся очень важными.

Графики силы SHAP

Графики SHAP Force Plots позволяют нам понять, почему на определенном примере был достигнут такой результат. Например,

i = 0 # or any other index for a different force plot
shap_values = explainer.shap_values(X_train.iloc[i])
shap.force_plot(explainer.expected_value, shap_values, X_test.iloc[i])

В этом примере окончательный шанс поступления был 0,62. Факторы, выделенные красным цветом, объясняют, что увеличило шанс, а факторы, выделенные синим цветом, объясняют, что упало на этот шанс. Длина показывает, насколько велика сила, которую он имел.

В этом конкретном случае достаточно высокий балл TOEFL и SOP повысили результат, но низкий CGPA был огромным фактором, который его снижает.

В этом примере окончательный шанс поступления составил 94%. Высокий уровень CGPA значительно усилил его.

Еще несколько графиков силы SHAP, чтобы понять, какие факторы при совместном применении могут определить окончательный шанс:

Графики PDP

Графики PDP или графики частичной зависимости показывают, как отдельная функция может повлиять на целевую переменную.

Следующий код генерирует график PDP для каждого столбца:

from pdpbox import pdp, info_plots
import matplotlib.pyplot as plt
base_features = data.columns.values.tolist()
base_features.remove('Chance of Admit ')
for feat_name in base_features:
    pdp_dist = pdp.pdp_isolate(model=dtr, dataset=X_test, model_features=base_features, feature=feat_name)
    pdp.pdp_plot(pdp_dist, feat_name)
    plt.show()

Этот график частичной зависимости предполагает, что оптимальная оценка GRE будет примерно на пике в 320 баллов. Тем не менее, данных по верхнему пределу GRE не так много, но то немногое, что есть, предполагает, что высокий GRE может фактически снизить шансы. Возможное объяснение этого заключается в том, что время, потраченное на обучение для GRE, может отнимать время на другие вещи (например, CGPA), которые более важны. Кроме того, обратите внимание на большой диапазон ошибок.

PDP для оценки TOEFL, кажется, предполагает, что лучший результат составляет от 109 до 114. Опять же, обратите внимание на большие полосы ошибок. Жирная линия - это просто среднее значение, и в этом случае слишком большая ошибка и слишком мало данных для вынесения достоверного суждения.

Этот PDP интересен - кажется, что чем престижнее вуз, тем выше шансы на поступление. Возможно, это связано с предвзятостью данных, но возможное объяснение состоит в том, что аспиранты, которые поступают в колледжи с более высоким рейтингом, сами имеют более высокие полномочия.

PDP для CGPA выделяется больше всего из-за очень маленьких полос погрешностей. Существует четкая и очевидная тенденция, согласно которой более высокий уровень CGPA коррелирует с более высокими шансами на поступление.

Как было обнаружено ранее, похоже, что количество выполняемых исследований мало увеличивается по сравнению с их невыполнением в целом. Мы продолжим исследовать эту тему с помощью многомерных графиков PDP.

Контур PDP / многомерные графики PDP

Контурные PDP / многомерные графики PDP - это особая жемчужина - они показывают, как взаимодействие (поэтому их еще называют графиками взаимодействия PDP) между двумя переменными приводит к определенному шансу допуска.

Следующий код генерирует контурные диаграммы для оценки университета по сравнению со всеми функциями.

for column in X_test.columns.drop('University Rating'):
    features = ['University Rating',column]
    inter1  =  pdp.pdp_interact(model=dtr, dataset=X_test, model_features=base_features,features=features)
    pdp.pdp_interact_plot(pdp_interact_out=inter1, feature_names=features, plot_type='contour')
    plt.show()

Оценка университета по сравнению со всеми функциями

На контурной диаграмме больше желтых областей имеют больше шансов быть допущенными. Низкий балл GRE плохо сказывается практически на всех рейтингах университетов. Как было замечено ранее в PDP с одной переменной, диапазон оценок GRE в 320, кажется, является «золотой зоной», поскольку университеты оценили принимающих людей в 5 баллов с примерно этим баллом в самых высоких числах.

Мы должны с подозрением относиться к нехватке данных - этот набор данных не богат данными, поскольку наше открытие о том, что вероятность поступления снижается по мере увеличения балла GRE (после определенного момента), не имеет смысла.

С помощью SOP совершенно очевидно, что самые высокие рейтинги университетов с наивысшими баллами по SOP дают самый высокий процент приема.

Еще один повторяющийся результат - CGPA имеет большое значение независимо от рейтинга вуза.

И, увы, ответ на наш вопрос о проведении исследований: наклонный характер контура показывает, что в университетах с более низким рейтингом проведение исследований полезно - это увеличивает процентную долю с 68% до примерно 71%. Однако в университетах с более высоким рейтингом нет большой разницы в проведении исследований.

Оценка GRE и оценка TOEFL

Вот интересный вопрос - как результаты GRE и TOEFL взаимодействуют друг с другом? Заменяет ли хороший результат GRE плохой результат TOEFL или наоборот?

features = ['GRE Score','TOEFL Score']
inter1  =  pdp.pdp_interact(model=dtr, dataset=X_test, model_features=base_features, 
                            features=features)
pdp.pdp_interact_plot(pdp_interact_out=inter1, feature_names=features, plot_type='contour')
plt.show()

Кажется, что TOEFL очень зависит от GRE для низких баллов GRE, но по мере увеличения баллов GRE баллы TOEFL играют большую роль в шансах поступления.

Оценка GRE по сравнению с CGPA

features = ['GRE Score','CGPA']
inter1  =  pdp.pdp_interact(model=dtr, dataset=X_test, model_features=base_features, 
                            features=features)
pdp.pdp_interact_plot(pdp_interact_out=inter1, feature_names=features, plot_type='contour')
plt.show()

Как мы уже много раз видели, оценка GRE мало способствует низкому CGPA.

Используйте код и больше экспериментируйте, чтобы найти взаимосвязи между другими функциями; просто замените список «функции» желаемыми функциями.

Спасибо за прочтение!

Если вам понравилось, не стесняйтесь проверить некоторые из моих других сообщений.