Большинство проблем машинного обучения в современном мире относятся к классификационным. В основном специалисты по анализу данных и инженеры по машинному обучению используют корреляции как Пирсона или Спирмена, чтобы найти функции, которые больше всего коррелируют с прогнозируемым значением. Однако эти типы корреляций лучше работают с непрерывно-непрерывной парой функций. Вот почему мы в Sigmoid решили добавить в нашу библиотеку разделов функций - Kydavra, метод, который будет работать также с дихотомическими данными (сериями, имеющими только 2 значения).
Использование PointBiserialCorrSelector из библиотеки Kydavra.
Как всегда, для тех, кто в основном пытается решить свою проблему, есть команды и код:
Итак, чтобы установить kydavra, просто введите следующую строку в терминале или в командной строке.
pip install kydavra
Теперь вы можете импортировать селектор и применить его к своему набору данных следующим образом:
from kydavra import PointBiserialCorrSelector selector = PointBiserialCorrSelector() new_columns = selector.select(df, ‘target’)
PointBiserialCorrSelector имеет следующие параметры:
- min_corr - минимальная корреляция для важности признака (по умолчанию = 0,5)
- max_corr - максимальная корреляция для важного признака (по умолчанию = 0,8)
- last_level - количество уровней корреляции, которые будет учитывать селектор. Рекомендуется не изменять его (по умолчанию = 2).
Так что давайте не будем тестировать это на Наборе данных Heart Disease UCI. Обратите внимание, что он был очищен раньше.
from kydavra import PointBiserialCorrSelector selector = PointBiserialCorrSelector() df = pd.read_csv(‘cleaned.csv’) new_columns = selector.select(df, ‘target’) print(new_columns)
Результат:
['cp', 'thalach', 'exang', 'oldpeak', 'sex', 'slope', 'ca', 'thal']
Обратите внимание, что элементы упорядочены по убыванию в зависимости от значения точечной бисериальной корреляции.
Чтобы увидеть влияние выбора функций на разные типы моделей, я решил обучить 3 модели (LogisticRegression, линейная, TreeDecissionClassifier - нелинейная, и SVC с гауссовым ядром). Итак, перед выбором функции у нас было следующее cross_val_score:
LINEAR - 0.8346127946127947 TREE - 0.7681481481481482 SVC - 0.8345454545454546
После применения выбора функции оценки были:
LINEAR - 0.838047138047138 TREE - 0.7718518518518518 SVC - 0.8418181818181818
Таким образом, мы получили немного больше точности для Tree и SVC (почти 1%), но теперь мы используем только 8 функций вместо 13, и это прилично.
Создано с ❤ компанией Sigmoid.
Если вы хотите глубже понять, как работает бисериальная корреляция, я настоятельно рекомендую ссылки в конце статьи. Если вы пробовали kydavra, я предлагаю вам оставить отзыв и поделиться своим опытом использования, бросив ответ на эту форму.
Полезные ссылки: