Здравствуйте друзья,
Это мой первый блог, и я полностью помогу вам понять ключевые инструменты науки о данных 😉.
Мой первый блог основан на выборе функций.
Выбор функций – это процесс выбора оптимального количества функций из большого набора функций. Есть несколько преимуществ этого процесса выбора признаков, а также существуют различные методы, доступные для этого процесса выбора признаков. В этом блоге мы рассмотрим эти преимущества и различные методы выбора функций.
Почему мы выбираем функции?
Этот вопрос возникает у многих специалистов по данным и у тех, кто интересуется областью науки о данных. Если вы знакомы с областью науки о данных, то вы должны знать основной ключевой инструмент науки о данных, который является машинным обучением. Вы должны знать, как мы создаем модели машинного обучения, как они работают и почему они важны в области науки о данных.
Если вы новичок и хотите погрузиться в море машинного обучения. Я рекомендую проверить блоги Daniel Deutsch, чтобы получить глубокие знания о машинном обучении. Он проделал невероятную работу в своем курсе, в которой он поместил все основные методы машинного обучения в несколько частей, чтобы легко просматривать их один за другим. Я адаптировал некоторые советы из его блогов. Я хотел бы поздравить его с отличной работой.
Как мы говорили о том, зачем нам нужен отбор признаков? ответ заключается в том, что мы подготавливаем наши данные в информативной форме и строим модель машинного обучения, чтобы предсказать желаемый результат, и мы всегда стараемся добиться хорошей точности и масштабируемости нашей модели машинного обучения. но как мы это получим? ответ — выбрать «Мощные функции». если у вас есть 10 функций, но некоторые из них не очень эффективны или полезны для нашей модели ML и не слишком сильно повышают точность нашей модели, тогда нам нужен инструмент выбора функций. мы выбираем важные функции для нашей модели ML, чтобы повысить точность. есть много других преимуществ использования выбора функций, о которых я упоминал в абзаце ниже.
Преимущества выбора функций:
- Повышенная точность
- Простые модели легче интерпретировать.
- Более короткое время обучения
- Улучшенное обобщение за счет уменьшения переобучения
- Легче реализовать разработчикам программного обеспечения
- Снижение риска ошибок данных при использовании модели
- Переменная избыточность
- Плохое поведение при обучении в многомерных пространствах
Выбор функций — методы:
- Методы фильтрации
- Методы-оболочки
- Встроенные методы
Это 3 основных метода выбора признаков в области науки о данных. У них также есть типы, поэтому мы обсудим их один за другим.
1. Методы фильтрации
- Методы фильтрации состоят из различных методов, как указано ниже:
- Основные методы
- Одномерные методы
- Прирост информации
- Корреляционная матрица с тепловой картой или без тепловой карты
Эти методы фильтра в основном используются в качестве этапа предварительной обработки. Выбор функций не зависит от каких-либо алгоритмов машинного обучения. Вместо этого функции выбираются на основе их оценок в различных статистических тестах на предмет их корреляции с переменной результата. Характеристики этих методов следующие:
- Эти методы основаны на характеристиках данных (характеристик признаков).
- Они не используют алгоритмы машинного обучения.
- Это модельные агностики.
- Они, как правило, менее затратны в вычислительном отношении.
- Обычно они дают более низкую производительность прогнозирования, чем методы-оболочки.
- Они очень хорошо подходят для быстрого просмотра и удаления неактуальных функций.
1.1 Базовые методы: в рамках основного метода мы удаляем постоянные и квазипостоянные функции.
- Постоянные функции — это те, которые показывают одно и то же значение, только одно значение, для всех наблюдений набора данных. Эти функции имеют нулевую дисперсию, потому что они имеют одинаковое значение для всех строк и не изменились ни в одной ячейке. Эти функции не предоставляют информации, которая позволяет модели машинного обучения различать или прогнозировать цель.
- Идентификация и удаление постоянных функций — это простой первый шаг к выбору функций и более легко интерпретируемым моделям машинного обучения. Для определения постоянных функций у нас есть несколько способов, но мы можем использовать функцию VarianceThreshold из sklearn.
- Вот ссылка для просмотра кода: https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.VarianceThreshold.html
В квазипостоянном методе мы проверяем те функции, которые имеют очень низкую дисперсию, что означает, что у них есть несколько строк с разными значениями, но с очень низкой популяцией. Квазипостоянный метод находит те признаки, которые имеют одинаковое значение для подавляющего большинства наблюдений набора данных. Как правило, эти функции предоставляют мало информации, если вообще предоставляют какую-либо информацию, которая позволяет модели машинного обучения различать или прогнозировать цель. Но могут быть и исключения. Поэтому мы должны быть осторожны при удалении таких функций. Выявление и удаление квазипостоянных функций — это простой первый шаг к выбору функций и более легко интерпретируемым моделям машинного обучения.
мы используем ту же функцию, что и для постоянного метода, VarianceThreshold от sklearn.
Код:
import pandas as pd from sklearn.preprocessing import VarianceThreshold train_data = pd.read_csv('any_file_train.csv') // you can use any csv file vt = VarianceThreshold(threshold=0.2) // indicates 80% of the observation vt.fit(train_data) // fit function finds the features with low variance. vt.get_support() // use this function to find out the features which does not meet the threshold or we can say that we will use these features. // Simple way of using it: print(train_data.columns[vt.get_support()]) // it finds features we will use.
1.2 Одномерные методы отбора:
Методы одномерного отбора, используемые для выбора лучших функций с использованием некоторого тестирования и некоторых статистических методов, таких как ANOVA. Scikit-learn предоставляет подпрограммы выбора функций как объекты, реализующие метод преобразования.
Методы, основанные на F-тесте, оценивают степень линейной зависимости между двумя случайными величинами. Они предполагают линейную связь между функцией и целью. Эти методы также предполагают, что переменные следуют распределению Гаусса.
Есть несколько методов, которые подпадают под эту категорию:
SelectKBest, SelectKPercentile и некоторые другие.
Исходный код: https://scikit-learn.org/stable/modules/feature_selection.html
Исходный код SelectKBest: https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest
SelectKPercentile: выберите объекты в соответствии с процентилем наивысших оценок.
Эти объекты принимают в качестве входных данных функцию оценки, которая возвращает одномерные оценки и p-значения (или только оценки для SelectKBest и SelectKPercentile).
для задач регрессии используйте: f_regression и Mutual_info_regression
для задач классификации используйте: chi2, f_classif, Mutual_info_classif
Методы, основанные на F-тесте, оценивают степень линейной зависимости между двумя случайными величинами. С другой стороны, методы взаимной информации могут фиксировать любую статистическую зависимость, но, будучи непараметрическими, они требуют большего количества выборок для точной оценки.
1.3 Получение информации:
это метод, используемый для измерения важности функции в модели. он проверяет, насколько функция способствовала правильному прогнозированию цели.
Исходный код для дискретной цели: https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.mutual_info_classif.html#sklearn.feature_selection.mutual_info_classif
Исходный код для постоянной цели: https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.mutual_info_regression.html#sklearn.feature_selection.mutual_info_regression
1.4 Корреляционная матрица с тепловой картой и без тепловой карты
корреляция - это метод в статистике, который используется для обнаружения коррелированных функций, или, можно сказать, он показывает линейную связь между двумя переменными. В корреляции Пирсона значения от -1 до +1. Важные функции тесно связаны с целевой переменной. с другой стороны, переменная с высокой корреляцией с другими переменными должна быть исключена, поскольку она снижает точность, поскольку показывает зависимость одной переменной от другой, что может привести к смещению в модели машинного обучения.
Здесь нужно объяснить следующее: «Хорошие подмножества признаков содержат признаки, сильно коррелирующие с целевыми, но не коррелирующие друг с другом».
Если корреляция между двумя признаками меньше 0, это означает, что увеличение значений одного признака приведет к уменьшению значений другого признака (чем ближе коэффициент корреляции к -1 и тем сильнее будет эта связь между двумя признаками). разные особенности).
это выглядит так:
существуют разные виды тепловых карт, чтобы показать корреляцию, но я показал здесь только одну, чтобы понять концепцию корреляции.
2. Методы обертки
- В методах-оболочках мы пытаемся использовать подмножество функций и обучать модель, используя их. Основываясь на выводах, которые мы сделали из предыдущей модели, мы решили добавить или удалить функции из подмножества. Задача по существу сводится к задаче поиска. Эти методы обычно очень дороги в вычислительном отношении.
- Некоторые распространенные примеры методов-оболочек:
- Выбор вперед,
- Обратная элиминация,
- Исчерпывающий выбор функций,
- Рекурсивное устранение признаков.
- Рекурсивное устранение признаков с перекрестной проверкой
2.1 Выбор вперед
Этот процесс начинается с пустого набора функций, и мы постепенно добавляем функции, которые лучше всего улучшают нашу модель, и критерием остановки является то, что если функция добавлена, но не улучшает производительность нашей модели, она перестанет добавлять функции.
Выбор функций шаг вперед начинается с индивидуальной оценки всех функций и выбора той, которая генерирует наиболее эффективный алгоритм в соответствии с заранее установленными критериями оценки. На втором этапе он оценивает все возможные комбинации выбранной функции и второй функции и выбирает пару, которая создает наиболее эффективный алгоритм на основе тех же предварительно установленных критериев. предустановленными критериями являются roc_auc для классификации и r в квадрате для регрессии.
Пакет mlxtend используется для прямого выбора.
from mlxtend.feature_selection import SequentialFeatureSelector as SFS mod = SFS(RandomForestClassifier(), k_features=5, forward=True, floating=False, verbose=6, scoring='roc_auc', cv=5) // fit this mod.fit(np.array(train_data),y) // y is the output column and train_data is the input columns.
2.2 Обратное исключение
Это противоположно прямому выбору, используется со всем набором функций, и на каждой итерации он обнаруживает наименее важную функцию, которая улучшает производительность модели. повторяем до тех пор, пока улучшения не обнаружим.
Он также использует пакет mlxtend и использует ту же функцию, но с небольшим изменением параметров.
from mlxtend.feature_selection import SequentialFeatureSelector as SFS mod = SFS(RandomForestClassifier(), k_features=5, forward=False, floating=False, // just false this it will be backward verbose=6, scoring='roc_auc', cv=5) // fit this mod.fit(np.array(train_data),y) // y is the output column and train_data is the input columns.
2.3 Полный выбор функций
Этот алгоритм выбора признаков представляет собой подход-оболочку для грубой оценки подмножеств признаков; лучшее подмножество выбирается путем оптимизации указанной метрики производительности с учетом произвольного регрессора или классификатора. Например, если классификатор представляет собой логистическую регрессию, а набор данных состоит из 4 признаков, алгоритм будет оценивать все 15 комбинаций признаков.
- все возможные комбинации 1 признака
- все возможные комбинации 2 признаков
- все возможные комбинации 3 признаков
- все 4 функции
мы также используем пакет mlxtend для этой функции.
Я определил 3 метода выбора функций, которые используются в базовой форме. но чтобы узнать больше о методах оболочки и оставшихся трех методах, я предлагаю проверить эти сайты:
Для исключения рекурсивных функций: https://scikit-learn.org/stable/auto_examples/feature_selection/plot_rfe_digits.html#sphx-glr-auto-examples-feature-selection-plot-rfe-digits-py
Для исключения рекурсивных функций с перекрестной проверкой: проверка-py»
3. Встроенные методы
- Встроенные методы являются итеративными в том смысле, что они заботятся о каждой итерации процесса обучения модели и тщательно извлекают те функции, которые в первую очередь способствуют обучению для выбранной итерации. Методы регуляризации — это наиболее часто используемые встроенные методы, которые наказывают функцию с учетом порогового значения коэффициента.
- Некоторыми из наиболее популярных примеров этих методов являются регрессия LASSO и RIDGE, которые имеют встроенные функции штрафа для уменьшения переобучения.
3.1 Регрессия LASSO
Он используется вместо методов регрессии для более точного прогноза. В этой модели используется усадка. Сокращение — это сжатие значений данных к центральной точке как к среднему значению.
Исходный код: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html
3.2. Важность случайного леса
Случайный лес — одна из самых важных моделей в машинном обучении. это вдохновляет от великой техники мешков. Случайный лес работает, так как разные деревья решений показывают свои результаты, и большинство результатов будет выбрано в качестве основного результата модели случайного леса.
- Это более точно, чем алгоритм дерева решений.
- Это обеспечивает эффективный способ обработки отсутствующих данных.
- Он может дать разумный прогноз без настройки гиперпараметров.
- Это решает проблему переобучения в деревьях решений.
- В каждом дереве случайного леса подмножество признаков выбирается случайным образом в точке разделения узла.
Важность функции - это атрибут модели случайного леса, использование этого атрибута после функции подгонки означает после обучения модели случайного леса.
from sklearn.ensemble import RandomForestClassifier // I assume to have x_train,y_train,x_test and y_test data in clean form. model = RandomForestClassifier(n_estimators=100,max_depth=5) model.fit(x_train,y_train) model.feature_importances_
Здесь мы ясно видим, что odor_n имеет наивысшую важность признака, а некоторые — очень низкую, но мы легко выбираем некоторые из столбцов для дальнейшей классификации.
Я упомянул эти пункты на основе своих знаний, если вы новичок и хотите делать проекты и совершенствовать свои навыки. Я бы порекомендовал использовать платформу Kaggle, чтобы начать свою карьеру в науке о данных.
Если у вас есть какие-либо вопросы по этой или любой другой теме, не стесняйтесь спрашивать в комментариях.
Использованная литература:
[1]:
[2]:
https://www.izen.ai/blog-posts/feature-selection-filter-method-wrapper-method-and-embedded-method/