«Одним из Святых Граалей машинного обучения является автоматизация все большего и большего процесса разработки функций». ― Педро Домингос, Несколько полезных вещей, которые нужно знать о машинном обучении
Featuretools — это библиотека Python для автоматизированного проектирования функций. Дополнительную информацию смотрите в документации.
Установить с помощью пипа
python -m pip install featuretools
или с канала Conda-forge на conda:
conda install -c conda-forge featuretools
Вы можете установить дополнения по отдельности или все сразу, выполнив:
python -m pip install "featuretools[complete]"
Премиум-примитивы — используйте премиум-примитивы из репозитория премиум-примитивов.
python -m pip install "featuretools[premium]"
Примитивы НЛП — используйте примитивы естественного языка из репозитория nlp-primitives.
python -m pip install "featuretools[nlp]"
Поддержка Dask — используйте Dask для запуска DFS с njobs > 1.
python -m pip install "featuretools[dask]"
Ниже приведен пример использования глубокого синтеза функций (DFS) для автоматического проектирования функций. В этом примере мы применяем DFS к многотабличному набору данных, состоящему из транзакций клиентов с отметками времени.
>> import featuretools as ft
>> es = ft . demo . load_mock_customer ( return_entityset = True )
>> es . plot ()
Featuretools может автоматически создавать единую таблицу функций для любого «целевого фрейма данных».
>> feature_matrix , features_defs = ft . dfs ( entityset = es , target_dataframe_name = "customers" )
>> feature_matrix . head ( 5 )
zip_code COUNT(transactions) COUNT(sessions) SUM(transactions.amount) MODE(sessions.device) MIN(transactions.amount) MAX(transactions.amount) YEAR(join_date) SKEW(transactions.amount) DAY(join_date) ... SUM(sessions.MIN(transactions.amount)) MAX(sessions.SKEW(transactions.amount)) MAX(sessions.MIN(transactions.amount)) SUM(sessions.MEAN(transactions.amount)) STD(sessions.SUM(transactions.amount)) STD(sessions.MEAN(transactions.amount)) SKEW(sessions.MEAN(transactions.amount)) STD(sessions.MAX(transactions.amount)) NUM_UNIQUE(sessions.DAY(session_start)) MIN(sessions.SKEW(transactions.amount))
customer_id ...
1 60091 131 10 10236.77 desktop 5.60 149.95 2008 0.070041 1 ... 169.77 0.610052 41.95 791.976505 175.939423 9.299023 -0.377150 5.857976 1 -0.395358
2 02139 122 8 9118.81 mobile 5.81 149.15 2008 0.028647 20 ... 114.85 0.492531 42.96 596.243506 230.333502 10.925037 0.962350 7.420480 1 -0.470007
3 02139 78 5 5758.24 desktop 6.78 147.73 2008 0.070814 10 ... 64.98 0.645728 21.77 369.770121 471.048551 9.819148 -0.244976 12.537259 1 -0.630425
4 60091 111 8 8205.28 desktop 5.73 149.56 2008 0.087986 30 ... 83.53 0.516262 17.27 584.673126 322.883448 13.065436 -0.548969 12.738488 1 -0.497169
5 02139 58 4 4571.37 tablet 5.91 148.17 2008 0.085883 19 ... 73.09 0.830112 27.46 313.448942 198.522508 8.950528 0.098885 5.599228 1 -0.396571
[5 rows x 69 columns]
Теперь у нас есть вектор функций для каждого клиента, который можно использовать для машинного обучения. Дополнительные примеры см. в документации по Deep Feature Synthesis.
Featuretools содержит множество различных типов встроенных примитивов для создания функций. Если нужный вам примитив не включен, Featuretools также позволяет вам определить ваши собственные примитивы.
Прогнозировать следующую покупку
Репозиторий | Блокнот
В этой демонстрации мы используем многотабличный набор данных из 3 миллионов онлайн-заказов продуктов от Instacart, чтобы предсказать, что покупатель купит дальше. Мы покажем, как создавать функции с помощью автоматизированного проектирования функций и создавать точный конвейер машинного обучения с помощью Featuretools, который можно повторно использовать для решения множества задач прогнозирования. Для более опытных пользователей мы покажем, как масштабировать этот конвейер до большого набора данных с помощью Dask.
Дополнительные примеры использования Featuretools можно найти на нашей демонстрационной странице.
Сообщество Featuretools приветствует запросы на включение. Инструкции по тестированию и разработке доступны здесь.
Сообщество Featuretools радо оказать поддержку пользователям Featuretools. Поддержку проекта можно найти в четырех местах в зависимости от типа вопроса:
featuretools
.Если вы используете Featuretools, рассмотрите возможность ссылки на следующую статью:
Джеймс Макс Кантер, Калян Вирамачанени. Глубокий синтез функций: на пути к автоматизации исследований данных. IEEE DSAA 2015 .
Запись в BibTeX:
@inproceedings { kanter2015deep ,
author = { James Max Kanter and Kalyan Veeramachaneni } ,
title = { Deep feature synthesis: Towards automating data science endeavors } ,
booktitle = { 2015 {IEEE} International Conference on Data Science and Advanced Analytics, DSAA 2015, Paris, France, October 19-21, 2015 } ,
pages = { 1--10 } ,
year = { 2015 } ,
organization = { IEEE }
}
Featuretools — это проект с открытым исходным кодом, поддерживаемый Alteryx. Чтобы увидеть другие проекты с открытым исходным кодом, над которыми мы работаем, посетите Alteryx Open Source. Если создание эффективных конвейеров обработки данных важно для вас или вашего бизнеса, свяжитесь с нами.