Ответы:
Очень интересный вопрос (+1). Хотя мне неизвестно о каких-либо программных инструментах, которые в настоящее время предлагают всеобъемлющие функциональные возможности для разработки функций, в этом отношении , безусловно, существует широкий спектр вариантов. В настоящее время, насколько мне известно, разработка функций по-прежнему в значительной степени трудоемкий и ручной процесс (т. Е. См. Этот пост в блоге ). Говоря о предметной области разработки функций, эта превосходная статья Джейсона Браунли дает довольно полный обзор темы.
Бен Лорика, главный специалист по данным и директор по стратегии контента для данных в O'Reilly Media Inc., написал очень хорошую статью , описывающую современные (по состоянию на июнь 2014 года) подходы, методы, инструменты и стартапы в область автоматизации (или, как он выразился, рационализация ) особенности проектирования.
Я кратко рассмотрел некоторые стартапы, на которые ссылался Бен, и продукт Skytree действительно выглядит довольно впечатляюще, особенно в отношении предмета этого вопроса. Сказав это, некоторые из их заявлений кажутся мне действительно подозрительными (например, «Skytree ускоряет методы машинного обучения в 150 раз по сравнению с опциями с открытым исходным кодом» ). Продолжая говорить о коммерческих предложениях в области науки о данных и машинного обучения, я должен упомянуть о решениях Microsoft, в частности их Azure Machine Learning Studio . Этот веб-продукт является достаточно мощным и элегантным и предлагает некоторые функциональные возможности (FEF). Для примера простого FEF посмотрите это хорошее видео .
Возвращаясь к вопросу, я думаю, что самый простой подход, который можно применить для автоматизации проектирования функций, - это использование соответствующих IDE . Поскольку вы (я тоже) интересуетесь языком R в качестве бэкэнда для науки о данных, я бы предложил, в дополнение к RStudio, проверить еще одну похожую IDE с открытым исходным кодом, которая называется RKWard . Одним из преимуществ RKWard по сравнению с RStudio является то, что он поддерживает написание плагинов для IDE, что позволяет ученым-специалистам автоматизировать разработку функций и оптимизировать анализ данных на основе R.
Наконец, с другой стороны спектра технических решений мы можем найти несколько исследовательских проектов . Похоже, что двумя наиболее заметными из них являются проект Columbus Стэнфордского университета , подробно описанный в соответствующей исследовательской статье , и Brainwash , описанный в этой статье .
Featuretools - недавно выпущенная библиотека python для автоматизированного проектирования объектов. Он основан на алгоритме под названием Deep Feature Synthesis, первоначально разработанном в MIT в 2015 году и протестированном на публичных соревнованиях по науке о данных в Kaggle.
Вот как это вписывается в общий процесс науки о данных.
Цель библиотеки - не только помочь экспертам быстрее построить лучшие модели машинного обучения, но и сделать процесс обработки данных менее пугающим для людей, пытающихся учиться. Если у вас есть управляемые событиями или реляционные данные, я настоятельно рекомендую вам проверить это!
Отказ от ответственности: я являюсь одним из разработчиков проекта.
Функциональная инженерия лежит в основе машинного обучения и довольно трудоемка и требует много времени. Были предприняты различные попытки автоматизировать проектирование объектов в надежде вывести человека из цикла. Одной конкретной реализацией, которая делает это для задач классификации, является auto-sklearn . Он использует процедуру оптимизации под названием SMAC, чтобы выбрать соответствующий набор преобразований и алгоритма (и параметров алгоритма).
Обратите внимание, что Trifacta предлагает действительно простой в использовании инструмент для преобразования данных. Он имеет интуитивно понятный графический интерфейс, который позволяет создавать карты преобразования / разработки функций. Существует также бесплатная пробная версия, которая может быть использована для решения проблем разумного размера.
Scikit-learn недавно выпустила новые трансформаторы, которые занимаются многими аспектами разработки функций. Например:
С помощью SimpleImputer
( http://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html ) можно использовать несколько методов пропуска пропущенных данных , включая вложение среднего, среднего и произвольного значения как в числовые, так и в категориальные переменные. ,
Вы можете выполнить многовариантное вменение, используя несколько оценщиков, таких как Байес, случайный лес и другие (эквивалентные R's MICE, Amelia и MissForest) с помощью IterativeImputer
( https://scikit-learn.org/stable/modules/generated/sklearn.impute.IterativeImputer. .html # sklearn.impute.IterativeImputer )
Вы можете сделать одно горячее кодирование с помощью OneHotEncoder()
Scikit-learn.
Вы можете кодировать категориальные переменные числами с помощью LabelEncoder
.
Вы можете выполнить преобразование переменных Йео-Джонсона с помощью PowerTransformer
( http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PowerTransformer.html )
Вы можете сделать дискретизацию с помощью KBinsDiscretiser
( https://scikit-learn.org/stable/auto_examples/preprocessing/plot_discretification.html )
Потенциально в Scikit-learn есть и другие функциональные преобразователи, и разработчики регулярно обновляют библиотеку.
В качестве альтернативы известной библиотеке Scikit-learn есть недавно выпущенная библиотека с открытым исходным кодом, называемая feature-engine . С помощью функции двигателя вы можете:
Больше подробностей в репозитории и документации на github ( https://feature-engine.readthedocs.io/en/latest/ )
Отказ от ответственности: я создал движок функций и сделал его открытым исходным кодом.
Другой пакет Python с открытым исходным кодом допускает различные типы кодирования категориальных переменных: https://contrib.scikit-learn.org/categorical-encoding/
Наконец, Feature tools - хорошая библиотека с открытым исходным кодом для транзакционных данных.
Вам следует рассмотреть возможность проверки платформы машинного обучения Azure . Это онлайн, и вы можете использовать его с бесплатной учетной записью.
Azure ML предоставляет вам рабочий процесс, используя модули в графическом пользовательском интерфейсе. Многие из них связаны с Data Munging, и вы можете легко очистить ваши данные. Если есть что-то, что вы не можете сделать в графическом интерфейсе, тогда вы можете просто добавить модуль, который позволит вам запускать пользовательский R или Python-скрипт для манипулирования вашими данными.
Приятной частью этого является то, что вы можете легко визуализировать свои данные в любое время и проверять простую статистику, такую dataframe.describe()
как R.
Amazon Machine Learning - это инструмент, который я иногда использую для разработки функций.
Поскольку сервисы Amazon AWS продемонстрировали многообещающие и стандартные требования, я бы определенно рассчитывал на Amazon ML с его перспективами и обещаниями, которые упростят рабочий процесс исследователей данных. Но на данный момент он все еще маленький.
Но, как вы просили инструмент для разработки функций, так что это один из них.
Некоторые часто задаваемые вопросы о / для использования Amazon ML.