Выбор функций – это процесс, в котором вы автоматически или вручную выбираете те функции, которые вносят наибольшую вклад в вашу переменную прогнозирования или вывод, в которых вы заинтересованы.
Одна из основных причин заключается в том, что машинное обучение следует правилу “мусор в мусоре” И именно поэтому вы должны быть очень обеспокоены функциями, которые подаются в модель.
Наличие неактуальных функций в ваших данных может увеличить вычислительную стоимость моделирования и снизить точность моделей и заставить вашу модель изучать неактуальные функции. Это означает, что вам нужно выбрать только важные функции, которые будут представлены во время обучения модели.
Главные причины применения выбора функций:
- Это позволяет алгоритму машинного обучения тренироваться быстрее.
- Это уменьшает сложность модели и облегчает интерпретацию.
- Это повышает точность модели, если выбрано правое подмножество.
- Это уменьшает переживание.
” Я подготовил модель, выбрав все функции, и я получил точность около 65%, что не очень хорошо для прогнозирующей модели, и после некоторого выбора функций и инженерии функций без каких -либо логических изменений в коде моей модели моя точность подскочила до 81 %, что довольно впечатляет »- Рахил Шейх
Методы выбора функций предназначены для уменьшения количества функций к тем, которые, как считается, являются наиболее полезными/важными для модели, чтобы предсказать целевую функцию. Существуют различные методы выбора функций, которые могут помочь вам выбрать важные функции. Самые популярные методы.
- Коэффициент корреляции Пирсона.
- Коэффициент ранга Спирмена.
- Коэффициент корреляции ANOVA.
- Хи-квадратный тест.
- Алгоритмы машинного обучения (случайный лес и дополнительное дерево).
- Взаимная информация.
- Матрица корреляции с тепловой картой.
Вы можете прочитать больше о методах выбора функций из Scikit Learn Library
Одна из проблем этих методов – идентифицировать Какой метод (ы) должен применить в своем наборе данных для выбора важных функций. Каждый метод имеет свой способ идентифицировать важные функции. Например, определенная функция может быть выбрана в качестве важной функции в одном методе и не выбрана в качестве важной функции в другом методе.
Xverse Package может помочь вам решить эту проблему.
«В конце концов, некоторые проекты машинного обучения преуспевают, а некоторые терпят неудачу. Что имеет значение? Легко наиболее важным фактором являются используемые функции ». — Педро Домингос
Что такое xverse?
Xverse обозначает X Universe, которая является пакетом Python для машинного обучения, чтобы помочь ученым -данных с преобразованием функций и выбором функций. Xverse создан Сундар Кришнан Анкет
Как это работает?
Xverse применяет множество методов для выбора функций. Когда алгоритм выбирает функцию, он дает голос за эту функцию. В конце концов, Xverse рассчитывает общие голоса за каждую функцию, а затем выбирает лучшие из них на основе голосов. Таким образом, мы в конечном итоге выбираем лучшие переменные с минимальными усилиями в процессе выбора функций.
Xverse использует следующие методы для выбора важных функций.
- Информационная стоимость с использованием веса доказательств.
- Переменная важность с использованием случайного леса.
- Рекурсивное устранение функций.
- Переменная важность с использованием классификатора дополнительных деревьев.
- Хи-квадрат лучшие переменные.
- Выбор функций на основе L1.
Установка
Пакет требует Numpy, Pandas, Scikit-learn, Scipy и Statsmodels. Кроме того, пакет тестируется на Python версии 3.5 и выше. Запустите следующую команду, чтобы установить xverse.
PIP установить xverse
Я буду использовать набор данных кредита, чтобы найти лучшие функции, которые могут помочь получить хорошую точность при прогнозировании, заслуживает того, заслуживает ли клиент получить кредит или нет. Вы можете скачать набор данных Здесь Анкет
Импортируйте важные пакеты для этой проблемы.
import pandas as pd import numpy as np from xverse.ensemble import VotingSelector from sklearn.preprocessing import StandardScaler, MinMaxScaler import warnings # To ignore any warnings warnings.filterwarnings("ignore")
Загрузите набор данных кредита.
data = pd.read_csv("data/loans_data.csv") data.columns
Loan_id гендерный брак иждивенцев Образование самостоятельно Заявитель Coapplicantincome Loanmount Loan_amount_term Credit_history Property_area Loan_status
У нас есть 12 независимых функций и цель (Loan_status). Вы можете прочитать описание каждой функции здесь.
Я создал простую функцию Python для обработки отсутствующих данных и инженерии функций.
def preprocessing(data): # replace with numerical values data['Dependents'].replace('3+', 3,inplace=True) data['Loan_Status'].replace('N', 0,inplace=True) data['Loan_Status'].replace('Y', 1,inplace=True) # handle missing data data['Gender'].fillna(data['Gender'].mode()[0], inplace=True) data['Married'].fillna(data['Married'].mode()[0], inplace=True) data['Dependents'].fillna(data['Dependents'].mode()[0], inplace=True) data['Self_Employed'].fillna(data['Self_Employed'].mode()[0], inplace=True) data['Credit_History'].fillna(data['Credit_History'].mode()[0], inplace=True) data['Loan_Amount_Term'].fillna(data['Loan_Amount_Term'].mode()[0], inplace=True) data['LoanAmount'].fillna(data['LoanAmount'].median(), inplace=True) # drop ID column data = data.drop('Loan_ID',axis=1) #scale the data data["ApplicantIncome"] = MinMaxScaler().fit_transform(data["ApplicantIncome"].values.reshape(-1,1)) data["LoanAmount"] = MinMaxScaler().fit_transform(data["LoanAmount"].values.reshape(-1,1)) data["CoapplicantIncome"] = MinMaxScaler().fit_transform(data["CoapplicantIncome"].values.reshape(-1,1)) data["Loan_Amount_Term"] = MinMaxScaler().fit_transform(data["Loan_Amount_Term"].values.reshape(-1,1)) return data
Давайте предварительно обработаем набор данных кредита.
data = prepocessing(data)
Разделите на независимые функции и цель.
X = data.drop('Loan_Status',axis = 1) y = data.Loan_Status
Сейчас пришло время позвонить в Wistingselector из Xverse и обучить его, чтобы найти лучшие функции, используя подход голосования.
#train to find the best features clf = VotingSelector(minimum_votes=2) clf.fit(X, y)
Я установил, что это означает, что функция, которая должна быть выбрана, должна иметь как минимум 2 голоса из шести методов выбора функций, представленных в Xverse. Особенности ниже 2 голосов будут пренебрегаются. После обучения мы можем увидеть важность функции в каждом методе выбора функции, используемом во время обучения.
#show important features clf.feature_importances_
Вывод показывает все функции и их значения важности в каждом методе.
Теперь давайте соблюдаем голоса из этих методов выбора функций.
# votes clf.feature_votes_
Вывод показывает имя переменной, список методов выбора функций и их голоса, и, наконец, он показывает общее количество голосов за каждую функцию. Он начинается с выставочных функций со многими голосами за функции с низкими или нулевыми голосами.
Вы можете увидеть это Credit_history имеет в общей сложности 6 голосов , что означает Credit_history является очень важной функцией для этой проблемы с кредитом. Но и пол, и Self_employed функции имеют 0 голосов , что означает, что мы можем пренебрегать этими двумя функциями из -за очень низкого вклада в прогноз, заслуживает ли клиент получить кредит или нет.
Теперь мы можем преобразовать наши данные, чтобы оставаться только важными выбранными функциями.
# transform your data into important features X = clf.transform(X)
Вывод
Xverse находится в активном развитии. В настоящее время Xverse Package обрабатывает только бинарную цель.
Код для этого поста доступен на GitHub .
Если вы узнали что -то новое или понравилось читать эту статью, пожалуйста, поделитесь ею, чтобы другие могли ее увидеть. Не стесняйтесь оставить комментарий тоже. До тех пор, увидимся в следующем посте! Меня также можно связаться в Твиттере @Davis_mcdavid
Оригинал: “https://dev.to/davisy/features-selection-by-using-voting-approach-3kj8”