Здравствуйте друзья,

Это мой первый блог, и я полностью помогу вам понять ключевые инструменты науки о данных 😉.

Мой первый блог основан на выборе функций.

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

Почему мы выбираем функции?

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

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

Как мы говорили о том, зачем нам нужен отбор признаков? ответ заключается в том, что мы подготавливаем наши данные в информативной форме и строим модель машинного обучения, чтобы предсказать желаемый результат, и мы всегда стараемся добиться хорошей точности и масштабируемости нашей модели машинного обучения. но как мы это получим? ответ — выбрать «Мощные функции». если у вас есть 10 функций, но некоторые из них не очень эффективны или полезны для нашей модели ML и не слишком сильно повышают точность нашей модели, тогда нам нужен инструмент выбора функций. мы выбираем важные функции для нашей модели ML, чтобы повысить точность. есть много других преимуществ использования выбора функций, о которых я упоминал в абзаце ниже.

Преимущества выбора функций:

  1. Повышенная точность
  2. Простые модели легче интерпретировать.
  3. Более короткое время обучения
  4. Улучшенное обобщение за счет уменьшения переобучения
  5. Легче реализовать разработчикам программного обеспечения
  6. Снижение риска ошибок данных при использовании модели
  7. Переменная избыточность
  8. Плохое поведение при обучении в многомерных пространствах

Выбор функций — методы:

  1. Методы фильтрации
  2. Методы-оболочки
  3. Встроенные методы

Это 3 основных метода выбора признаков в области науки о данных. У них также есть типы, поэтому мы обсудим их один за другим.

1. Методы фильтрации

  • Методы фильтрации состоят из различных методов, как указано ниже:
  1. Основные методы
  2. Одномерные методы
  3. Прирост информации
  4. Корреляционная матрица с тепловой картой или без тепловой карты

Эти методы фильтра в основном используются в качестве этапа предварительной обработки. Выбор функций не зависит от каких-либо алгоритмов машинного обучения. Вместо этого функции выбираются на основе их оценок в различных статистических тестах на предмет их корреляции с переменной результата. Характеристики этих методов следующие:

  • Эти методы основаны на характеристиках данных (характеристик признаков).
  • Они не используют алгоритмы машинного обучения.
  • Это модельные агностики.
  • Они, как правило, менее затратны в вычислительном отношении.
  • Обычно они дают более низкую производительность прогнозирования, чем методы-оболочки.
  • Они очень хорошо подходят для быстрого просмотра и удаления неактуальных функций.

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: выберите объекты в соответствии с процентилем наивысших оценок.

исходный код: https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectPercentile.html#sklearn.feature_selection.SelectPercentile

Эти объекты принимают в качестве входных данных функцию оценки, которая возвращает одномерные оценки и 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. Методы обертки

  • В методах-оболочках мы пытаемся использовать подмножество функций и обучать модель, используя их. Основываясь на выводах, которые мы сделали из предыдущей модели, мы решили добавить или удалить функции из подмножества. Задача по существу сводится к задаче поиска. Эти методы обычно очень дороги в вычислительном отношении.
  • Некоторые распространенные примеры методов-оболочек:
  1. Выбор вперед,
  2. Обратная элиминация,
  3. Исчерпывающий выбор функций,
  4. Рекурсивное устранение признаков.
  5. Рекурсивное устранение признаков с перекрестной проверкой

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/