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

Введение в автоматизированное машинное обучение в Python с автоголом

Фото Шарлотты Карлсен на Unsplash Autogoal – это новая структура Python для автоматизированной машины … Tagged с помощью машинного обучения, Python.

фото Шарлотта Карлсен на Неспособный

Автомал это новая рамка Python для Автоматическое машинное обучение , также известный как Автомат .

Что такое Automl

Automl-это захватывающее новое поле машинного обучения, которое пытается преодолеть разрыв между очень сложными методами машинного обучения и неэкспериментальными. Другими словами, сокращение входного барьера в мир машинного обучения для тех из нас, у кого нет времени и/или ресурсов для изучения всех тонкостей каждого алгоритма, но которые должны решать реальные проблемы.

Существует множество ароматов Automl, но с очень прагматической точки зрения вы можете думать о нем как о разработке инструментов высокого уровня, которые автоматизируют большую часть процесса машинного обучения, от предварительной обработки данных до выбора модели и настройки параметров. Основная проблема заключается в том, что, несмотря на то, что машинное обучение очень многообещающее, привлечь настоящий алгоритм машинного обучения для работы с реальными данными, помимо академических примеров, трудно: вам нужно подготовить данные, выбрать один алгоритм (или семейство алгоритмов) и возможна на мелодию Куча очень специфических параметров, таких как коэффициенты регуляризации, количество нейронов в слое нейронной сети, функции активации и еще много чего. Существует просто слишком много вариантов, и это требует нетривиального уровня опыта, чтобы даже понять, что они имеют в виду, и, что хуже всего, влияют на окончательную производительность вашей модели.

В идеале, привлечение машинного обучения на работу должно быть таким же простым, как:

from machine_learning import BlackMagic

algorithm = BlackMagic()
algorithm.learn(my_data)    # freshly taken from your DB
algorithm.predict(new_data) # maybe even from the users? 

К сожалению, текущие инструменты машинного обучения далеки от этого идеала, но исследователи Automl пытаются туда добраться. По этой причине есть много академических исследований, а также гул в Automl прямо сейчас. Если вы хотите (довольно техническое) введение, Automl Book отличный ресурс.

На самом деле, в следующую субботу, 18 июля, наша команда представит первую итерацию Autogoal в Automl Workshop Слокал с Международная конференция по машинному обучению (ICML) , одна из ведущих академических конференций по машинному обучению.

Однако, несмотря на то, что поле молодо, есть много Потрясающие инструменты Automl Уже вы можете использовать сегодня. Наиболее полезными, по крайней мере, с точки зрения нового разработчика, являются те, которые дают вам решения в области машинного обучения черного ящика.

Если вы слышали об Automl ранее в мире с открытым исходным кодом, скорее всего, вы слышали о Autosklearn , AutoWeka или Autokeras Анкет Это замечательные инструменты, которые, как могут намекнуть их имена, действуют как обертки поверх очень известных библиотек машинного обучения, чтобы дать вам что-то вроде этого идеального алгоритма черного ящика. Если вам нужны решения для машинного обучения Сегодня , во что бы то ни стало, посмотрите на эти инструменты.

Аутогоальный подход к автоматическому

Autogoal-это новая библиотека в этом мире, которая пытается обжаловать как пользователей высокого уровня (не эксперта), так и пользователей низкого уровня (эксперт).

Например, с помощью автогола вы можете что -то подобное (по -настоящему):

from autogoal.ml import AutoML 
X, y = # load data

automl = AutoML()
automl.fit(X, y)

Круто, не так ли? Autogoal автоматически искутся через обширную коллекцию различных алгоритмов (такие вещи, как логистическая регрессия, деревья решений, несколько нейронных сетей) и найдут оптимальное (или, по крайней мере, достаточно хорошее) решение с указанным временем и ограничениями памяти. Однако это не серебряная пуля, есть много ограничений на то, что X и y должно быть. Но это на шаг ближе к этому идеалу.

Это API высокого уровня , черная коробка Automl Класс, который работает со многими различными типами проблем, от классификации изображений до распознавания сущности в тексте. Под капюшоном Autogoal фактически имеет обертки до сотен различных алгоритмов из Sklearn , Генсим , nltk , Pytorch , Керас В шпажина , и более. И это первое различие между автоголом и Большинство Другие подобные инструменты. Autogoal на самом деле не знает о каком -либо конкретном API или библиотеке, и при этом не реализовано какое -либо машинное обучение, это тонкая коллекция оберток, совместимых с практически всем, что даже напоминает алгоритм машинного обучения.

Итак, если вы установите Autogoal Now ( PIP установить Autogoal ), вы на самом деле получите только этот тонкий слой. Вы на самом деле есть установить Sklearn , и/или Керас , и/или Другие библиотеки, а затем Autogoal обнаружит эти библиотеки и автоматически их используют. Мы постоянно добавляем новые обертки по часам (например, opencv

API низкого уровня для мелкого контроля

Есть много деталей для автогора, но основные строительные блоки основаны на концепции определения классов или методов с Тип аннотации это указывает на пространство значений параметров. Например, предположим, что вы хотите попробовать логистическую регрессию от Sklearn На некотором наборе данных. Это базовый код для создания и оценки его на некоторых случайных данных:

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)  # Fixed seed for reproducibility

from sklearn.linear_model import LogisticRegression

def evaluate(estimator, iters=30):
    scores = []

    for i in range(iters):
        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
        estimator.fit(X_train, y_train)
        scores.append(estimator.score(X_test, y_test))

    return sum(scores) / len(scores)

lr = LogisticRegression()
score = evaluate(lr)  # around 0.83

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

Вместо того, чтобы писать цикл через группу различных параметров, мы можем использовать AutogoAl для автоматического изучения пространства возможных комбинаций. Мы можем сделать это с помощью API на основе класса, предоставив аннотации для параметров, которые мы хотим изучить.

from autogoal.grammar import Continuous, Categorical

class LR(LogisticRegression):
    def __init__(self, penalty: Categorical("l1", "l2"), C: Continuous(0.1, 10)):
        super().__init__(penalty=penalty, C=C, solver="liblinear")

Наказание: категорическое ("L1", "L2") Аннотация сообщает Autogoal, что для этого класса штраф параметров может получить значения из списка предопределенных значений. Кроме того, C: непрерывный (0,1, 10) Аннотация указывает, что параметр C может взять значение поплавка в указанном диапазоне.

Теперь мы будем использовать AutoGooal для автоматического генерации различных экземпляров нашего LR класс автоматически. Мы достигаем этого, построив Контекстная грамматика Это описывает все возможные случаи.

from autogoal.grammar import  generate_cfg

grammar =  generate_cfg(LR)
print(grammar)

Это выход для Печать (грамматика) :

         := LR (penalty=, C=)
 := categorical (options=['l1', 'l2'])
       := continuous (min=0.1, max=10)

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

from autogoal.search import PESearch

optimizer = PESearch(grammar, evaluate)
best, fn = optimizer.run(1000)

После нескольких итераций Лучший будет лучшим экземпляром Лр и fn будет фактическим значением оценить для этого случая.

Что дальше

Теперь это может пойти намного глубже. Вы можете определить полную иерархию классов, с параметрами, которые являются экземплярами других классов (даже рекурсивные экземпляры себя), а автогол выведет правильную грамматику для этого пространства и оптимизируется в нем.

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

Автогол все еще является альфа -стадией и в активном развитии. Если вам нужна готовая к производству фреймворк Automl, есть альтернативы с изготовленными из ящика. Но если вы хотите разорвать, Autogoal обеспечивает большой уровень выразительности и требует очень мало кода. Вы можете найти его в GitHub и в Docker Hub предварительно загружены кучей библиотек машинного обучения и Поддержка графического процессора Анкет

Оригинал: “https://dev.to/apiad/introduction-to-automated-machine-learning-in-python-with-autogoal-45n4”