Databox Machine Learning Framework версії 0.8.0 випустила PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Випущена платформа Datumbox Machine Learning Framework версії 0.8.0

Вийшов Datumbox Framework версії 0.8.0 і містить кілька потужних функцій! Ця версія містить нові алгоритми попередньої обробки, вибору функцій і вибору моделі, нові потужні механізми зберігання, які дають кращий контроль над тим, як моделі та фрейми даних зберігаються/завантажуються, кілька попередньо навчених моделей машинного навчання та багато покращень пам’яті та швидкості. Завантажте зараз з Github or Центральне сховище Maven.

Однією з основних цілей версії 0.8.0 було покращити механізми зберігання фреймворка та зробити навчання на основі диска доступним для всіх підтримуваних алгоритмів. Нові механізми зберігання дають кращий контроль над тим, як і коли зберігаються моделі. Одна важлива зміна полягає в тому, що моделі не зберігаються автоматично після завершення методу fit(), а замість цього потрібно явно викликати метод save(), вказавши ім’я моделі. Це дозволяє нам не тільки відкидати простіші тимчасові алгоритми, не проходячи етап серіалізації, але й зберігати/завантажувати фрейми даних:

Configuration configuration = Configuration.getConfiguration();
Dataframe data = ...; //load a dataframe here

MaximumEntropy.TrainingParameters params = new MaximumEntropy.TrainingParameters();
MaximumEntropy model = MLBuilder.create(params, getConfiguration());
model.fit(data);
model.save("MyModel"); //save the model using the specific name
model.close();

data.save("MyData"); //save the data using a specific name
data.close();

data = Dataframe.Builder.load("MyData", configuration); //load the data
model = MLBuilder.load(MaximumEntropy.class, "MyModel", configuration); //load the model
model.predict(data);
model.delete(); //delete the model

Наразі ми підтримуємо два механізми зберігання даних: двигун InMemory, який дуже швидкий, оскільки він завантажує все в пам’яті, і механізм MapDB, який повільніше, але дозволяє навчання на основі диска. Ви можете контролювати, який механізм ви використовуєте, змінюючи свій datumbox.configuration.properties, або ви можете програмно змінити об’єкти конфігурації. Кожен двигун має власний файл конфігурації, але знову ж таки ви можете змінити все програмно:

Configuration configuration = Configuration.getConfiguration(); //conf from properties file

configuration.setStorageConfiguration(new InMemoryConfiguration()); //use In-Memory engine
//configuration.setStorageConfiguration(new MapDBConfiguration()); //use MapDB engine

Будь ласка, зверніть увагу, що в обох двигунах є налаштування каталогу, який контролює, де зберігаються моделі (inMemoryConfiguration.directory та mapDBConfiguration.directory властивості в конфігураційних файлах). Переконайтеся, що ви їх змінили, інакше моделі будуть записані у тимчасову папку вашої системи. Для отримання додаткової інформації про те, як ви структуруєте файли конфігурації, подивіться на Приклад коду Проект.

Завдяки новому механізму сховища тепер його можна ділитися публічно попередньо навчені моделі які охоплюють області аналізу настроїв, виявлення спаму, виявлення мов, класифікації тем та всіх інших моделей, доступних через API Datumbox. Ви можете зараз скачати і використовуйте всі попередньо навчені моделі у своєму проекті, не вимагаючи виклику API та не обмежуючись кількістю щоденних викликів. Наразі опубліковані моделі навчаються за допомогою механізму зберігання InMemory і підтримують лише англійську мову. У майбутніх випусках я планую надати підтримку для інших мов.

У новому фреймворку внесено кілька змін у відкритих методах багатьох класів (тому він несумісний із зворотним шляхом). Найбільш помітна різниця полягає в способі ініціалізації моделей. Як ми бачили в попередньому прикладі коду, моделі не створюються безпосередньо, а замість цього використовується клас MLBuilder для створення або завантаження моделі. Параметри навчання надаються безпосередньо конструктору, і їх не можна змінити за допомогою сетера.

Ще одне покращення полягає в тому, як ми виконуємо вибір моделі. Версія 0.8.0 представляє новий пакет вибору моделей, який пропонує всі необхідні інструменти для перевірки та вимірювання продуктивності наших моделей. У підпакеті метрик ми надаємо найважливіші метрики перевірки для класифікації, кластеризації, регресії та рекомендації. Зауважте, що ValidationMetrics видаляються з кожного окремого алгоритму, і вони більше не зберігаються разом із моделлю. Фреймворк пропонує новий підпакет splitters, який дозволяє розділити вихідний набір даних за допомогою різних схем. Наразі K-кратне розбиття виконується за допомогою класу KFoldSplitter, тоді як розділення набору даних на навчальний і тестовий набір можна досягти за допомогою ShuffleSplitter. Нарешті, щоб швидко перевірити модель, фреймворк пропонує клас Validator. Ось як можна виконати перехресну перевірку K-fold за пару рядків коду:

ClassificationMetrics vm = new Validator<>(ClassificationMetrics.class, configuration)
    .validate(new KFoldSplitter(k).split(data), new MaximumEntropy.TrainingParameters());

Новий пакет попередньої обробки замінює старі трансформатори даних і дає кращий контроль над тим, як ми масштабуємо та кодуємо дані перед алгоритмами машинного навчання. Для масштабування числових змінних підтримуються такі алгоритми: MinMaxScaler, StandardScaler, MaxAbsScaler і BinaryScaler. Для кодування категоріальних змінних у логічні значення можна використовувати такі методи: OneHotEncoder і CornerConstraintsEncoder. Ось як ви можете використовувати нові алгоритми:

StandardScaler numericalScaler = MLBuilder.create(
    new StandardScaler.TrainingParameters(), 
    configuration
);
numericalScaler.fit_transform(trainingData);

CornerConstraintsEncoder categoricalEncoder = MLBuilder.create(
    new CornerConstraintsEncoder.TrainingParameters(), 
    configuration
);
categoricalEncoder.fit_transform(trainingData);

Іншим важливим оновленням є той факт, що пакет Feature Selection був переписаний. Наразі всі алгоритми вибору функцій зосереджені на конкретних типах даних, що дає можливість об’єднати різні методи разом. В результаті класи TextClassifier і Modeler отримують список параметрів вибору функцій, а не лише один.

Як згадувалося раніше, всі алгоритми тепер підтримують навчання на основі диска, включаючи ті, що використовують матриці (виняток становлять машини опорних векторів). Новий механізм механізму зберігання навіть дає можливість налаштувати деякі алгоритми або кадри даних для збереження в пам'яті, а інші на диску. Декілька покращень швидкості були внесені насамперед завдяки новому механізму накопичувача, а також завдяки налаштуванню окремих алгоритмів, наприклад, у сімействі DPMM.

І останнє, але не менш важливе, нова версія оновлює всі залежності до останніх версій і видаляє деякі з них, такі як commons-lang і lp_solve. Commons-lang, який використовувався для розбору HTML, замінено швидшою користувацькою реалізацією HTMLParser. lp_solve замінено на чистий симплексний вирішувач Java, що означає, що Datumbox більше не потребує спеціальних системних бібліотек, встановлених в операційній системі. Крім того, lp_solve довелося піти, оскільки він використовує LGPLv2, який несумісний з ліцензією Apache 2.0.

Версія 0.8.0 приносить ще кілька нових функцій і вдосконалень фреймворку. Для детального перегляду змін, будь ласка, перевірте змін.

Не забудьте клонувати код Datumbox Framework версії 0.8.0 з Github, перевірте Приклади коду і завантажте попередньо підготовлені моделі машинного навчання з Зоопарк Datumbox. Чекаю на ваші коментарі та пропозиції.

Часова мітка:

Більше від Датабокс