Рубрики
Без рубрики

Выбор функций с использованием подхода голосования

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

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

Одна из основных причин заключается в том, что машинное обучение следует правилу “мусор в мусоре” И именно поэтому вы должны быть очень обеспокоены функциями, которые подаются в модель.

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

Главные причины применения выбора функций:

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

” Я подготовил модель, выбрав все функции, и я получил точность около 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”