Изучение трех разных методов важности функций

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

Мой проект на третьем этапе заключался в создании модели XGBoosted для прогнозирования уровня адаптивности учащихся к онлайн-обучению. Было собрано четырнадцать независимых характеристик каждого учащегося, и каждый учащийся присвоил себе уровень адаптивности: низкий, средний или высокий. Однако я не хотел просто строить модель для прогнозирования уровня адаптивности ученика. Я хотел иметь возможность использовать модель, чтобы увидеть, какие функции оказывают наибольшее влияние на учащегося с низким или средним уровнем адаптивности по сравнению с высоким уровнем адаптивности. Для меня, пришедшего из онлайн-образовательной карьеры до того, как стать студентом специалиста по данным, это был вопрос, который значил для меня больше всего. Как я мог помочь своим бывшим учащимся добиться большего успеха в онлайн-обучении? Иногда техническая сложность может мешать реальным потребностям, которые пытается удовлетворить проект. Чтобы дать рекомендацию о том, как помочь студентам, какой инструмент Data Science мне нужно использовать? Этот инструмент имел важность функции.

Наивно я предполагал, что есть только один способ приблизиться к важности функций. Спойлеров там нет. Наука о данных — это наука в конце концов, и наука не имеет дело с абсолютными или правильными ответами. Изучив различные методы, я выбрал три, чтобы попробовать. Это были: Важность встроенной функции XGBoost, Важность функции перестановки и значения SHAP. В конце концов я решил использовать метод значений SHAP в своем анализе, потому что это был единственный метод, который включал важность функций с разбивкой по различным категориям зависимой переменной. Но после завершения проекта я задался вопросом, является ли метод значения SHAP лучшим способом расчета важности функции. Чтобы ответить на этот вопрос, я углубился в каждый из трех способов, которыми я рассчитывал важность функции. чтобы понять, подходит ли мой выбор значений SHAP для проекта. Для желающих заранее ознакомиться с проектом ЗДЕСЬ — ссылка.

Функция важности встроенной функции XGBoost

Преимущество использования модели с градиентным усилением заключается в том, что после построения усиленных деревьев относительно просто получить показатель важности для каждой функции. Важность функции рассчитывается для одного дерева решений на величину, на которую точка разделения каждого атрибута улучшает показатель производительности, взвешенный по количеству наблюдений, за которые отвечает узел. Другими словами, вы просто суммируете насколько разбиение каждого признака позволило вам уменьшить нечистоту по всем разбиениям в дереве. Затем важности признаков усредняются по всем деревьям решений в модели.

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

Есть некоторые недостатки. Во-первых, созданная гистограмма показывает важность функции в целом, но не дает информации о том, на какую категориальную зависимую переменную она влияет. Необходимо провести дополнительные исследования, чтобы определить, для какой категориальной зависимой переменной важны эти функции. После проведения некоторых исследований кажется, что разбить важность признаков на категории зависимой переменной — непростая задача. Поэтому именно по этой причине значения SHAP могут быть лучшим способом определения важности функций для рекомендаций.

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

Дальнейшие исследования привели меня к статье ЗДЕСЬ, написанной Скоттом Лундбергом. Он более подробно рассказывает о том, как функция важности функций, встроенная в XGBoost, может быть ненадежной для древовидной модели. Функция может рассчитать важность функции по трем различным показателям: прирост, вес и покрытие. Чтобы изучить это, я попытался запустить функцию со всеми тремя метриками, чтобы увидеть, определяют ли они различные функции как важные или остались прежними.

Как видно, все три графика дают три разных ответа на то, какие функции являются наиболее важными. Это несоответствие между тремя показателями похоже на то, что обнаружил Скотт Лундберг в ходе своего исследования. Это несоответствие вызывает вопрос, какая метрика (прирост, покрытие, вес) лучше всего подходит для набора данных? Никто не был ответом Скотта Лундберга. Проведя эксперимент, он обнаружил, что только метод ценности SHAP был последовательным и точным, поскольку это единственный метод, который обеспечивает справедливое распределение прибыли с использованием теории игр. Использование коэффициента усиления для расчета важности признаков приводит к смещению в сторону более низких разбиений в дереве. В отличие от этого, говорит Лундберг, метод дерева SHAP математически эквивалентен усреднению различий в прогнозах по всем возможным порядкам признаков, а не только по порядку, определяемому их положением в дереве. По этой причине похоже, что встроенный метод важности признаков будет менее полезен, чем метод значения SHAP.

XGBoost Метод важности функций на основе перестановок

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

Подобно встроенной функции, этот метод важности признаков не разбивает важность признаков по категориям зависимой переменной. Таким образом, опять же, похоже, что значения SHAP дадут наиболее релевантную информацию для рекомендации. Однако мне было любопытно, почему разные функции были оценены как наиболее важные с помощью этого метода по сравнению со встроенным методом. Для встроенного метода важности характеристик тремя главными характеристиками были ноль часов обучения, финансовое положение богатых и от одного до пяти часов обучения. Напротив, для метода важности признаков, основанного на перестановках, мальчик оказался самым важным признаком, затем государственное учебное заведение, а затем ноль часов обучения. Как эти два метода могли так сильно расходиться?

Согласно статье, найденной ЗДЕСЬ на сайте mljar.com, метод на основе перестановок может иметь проблемы с высококоррелированными функциями. Одна горячая кодировка, используемая для обработки категориального в этом наборе данных, будет абсолютно сильно коррелировать друг с другом. Таким образом, используя логику, важность функции, похоже, привела к сомнительным выводам и, следовательно, не является правильным методом для использования в этом проекте.

Важность функции с помощью метода значений SHAP

Значения SHAP определяются с использованием значений Шепли из теории игр для оценки вклада каждой функции в прогноз. Само значение SHAP представляет собой индивидуальный вклад каждой функции в выходные данные модели для каждого примера или наблюдения. По сравнению с использованием коэффициентов в качестве показателя общей важности каждой функции, значения SHAP позволяют избежать искажений и неправильных интерпретаций, возникающих, когда функции масштабируются с масштабом самой переменной. Значения SHAP также могут учитывать локальную важность функции. Код и впоследствии созданный график приведены ниже.

Наконец, решена проблема разбивки важности признаков по категориям зависимых переменных. Используя значения SHAP, на графике легко увидеть, какие функции являются наиболее важными для каждого уровня адаптивности: "низкий", "средний" и "высокий". Согласно значениям SHAP. , наиболее важными характеристиками являются скорость сети 4G для Wi-Fi, финансовое положение богатых и ноль часов обучения. Быть богатым и иметь ноль часов обучения согласуется с выводами первого встроенного в функции важности выводов. Тем не менее, скорость сети 4G, являющаяся самой важной особенностью, стала новым открытием. Как эта новая функция получила гораздо более высокую оценку, чем любой из двух предыдущих методов?

После некоторых исследований особенно полезная статья была написана Денисом Воротынцевым на Medium, найденном ЗДЕСЬ. В этой статье Дэнис проводит эксперимент, чтобы выяснить, какой метод определения важности признаков лучше всего подходит для древовидной модели. Его эксперимент приводит к выводу, что значение перестановки не следует использовать, поскольку оно плохо интерполирует в невидимых областях.

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

Заключение

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

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