Нужен ли человек для построения самообучающихся моделей?

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

Какое-то время продолжим трудится на общее благо по адресу https://n-n-n.ru.
На новой платформе мы уделили особое внимание удобству поиска материалов.
Особенно рекомендуем познакомиться с работой рубрикатора.

Спасибо, ждём вас на N-N-N.ru

Конечно, в Data Science существует множество самообучающихся моделей, но действительно ли они являются таковыми? На самом деле, нет: сейчас в машинном обучении сложилась ситуация, когда человеческий фактор играет решающую роль в построении эффективных моделей.

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

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

Это серьезный недостаток, и поэтому возникла идея: может ли машинное обучение — обучить себя тому же, что делает человек? Такая система была создана.

ТРОТ (Tree-based Pipeline Optimization Tool)

Ренди Ольсон (Randy Olson), аспирант из Computational Genetics Lab (University of Pennsylvania) в качестве своего дипломного проекта разработал систему ТРОТ (Tree-based Pipeline Optimization Tool).

Эта система позиционируется как Data Science помощник. Она автоматизирует самую утомительную часть машинного обучения, изучая и подбирая среди тысячи возможных цепочек построения именно ту, которая лучше всего подойдёт для обработки ваших данных.

Система была написана на Питоне с использованием библиотеки scikit-learn, и посредством генетических алгоритмов самостоятельно строит полную цепочку подготовки и построения модели. На рисунке в начале этой статьи представлены те части цепочки, которые можно автоматизировать с её помощью: предобработка и выбор предикторов, выбор моделей, оптимизация их параметров.

Идея достаточно проста – генетический алгоритм.

Это алгоритм поиска нужной нам цепочки путём случайного подбора, с использованием механизмов, аналогичных естественному отбору в природе. О них достаточно подробно написано в википедии, или в книге «Самообучающиеся системы» (рекомендую для интересующихся этой темой, есть в сети в электронном виде).

В качестве функции отбора (Fitness функции) выступает точность предсказания в тестовой выборке, в качестве объекта популяции – scikit-методы и их параметры.

Результаты

У автора представлен простой пример того, как можно использовать TPOT для решения эталонной задачи по классификации рукописных цифр из набора MNIST

from tpot import TPOT from sklearn.datasets import load_digits from sklearn.cross_validation import train_test_split

digits = load_digits() X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, train_size=0.75)

tpot = TPOT(generations=5, verbosity=2) tpot.fit(X_train, y_train)

print( tpot.score(X_train, y_train, X_test, y_test) ) tpot.export(‹tpot_exported_pipeline.py›)

При запуске кода, через пару минут TPOT может получить цепочку построения модели, точность которой достигает 98%. Это произойдёт в том случае, когда TPOT обнаружит что классификатор Random Forest отлично работает на данных MNIST.

Правда, так как этот процесс вероятностный, для повторяемости результатов рекомендуется задавать параметр random_state – у меня, например, за 5 поколений нашлась только цепочка с SVC и KNeighborsClassifier.

Проверка системы на ещё одной классической задаче, ирисах Фишера, дало точность 97% за 10 поколений.

Будущее

ТРОТ – это опенсорсный проект, который возник всего месяц назад (что для таких систем вообще детский возраст) и сейчас активно развивается. На сайте проекта автор призывает сообщество Data Scientists присоединятся к развитию системы, код которой доступен на гитхаб (https://github.com/rhiever/tpot)

Конечно, сейчас система очень далека от идеала, но идея этой системы выглядит крайне логичной – полная автоматизация всего процесса машинного обучения. И если идея будет развиваться – то возможно, скоро появятся системы, где от человека требуется лишь загрузить данные, и получить результат. И тогда возникнет другой вопрос:

А нужен ли вообще человек для построения самообучающихся моделей?

Пожалуйста, оцените статью:
Ваша оценка: None Средняя: 5 (2 votes)
Источник(и):

geektimes.ru