Попытаюсь изложить своими словами что нам, в общем-то, надо.
Весь проект пока на этапе раннего изучения. Просто оцениваем вариант использования нейросетей в каких-то своих продакшн-проектах.
Нам нужен некий аналог AutoML т.к. мы не знаем какой тип сети с какими параметрами лучше всего подойдет. Что посоветуете?
Есть такой AutoKeras. Хотим попробовать использовать его.
Опытным путем (с использованием H2O) мы поняли, что лучше всего работает XGBoost и DeepLearning.
Но мы можем ошибаться. Какие ещё есть оптимальные? Поскольку не удалось добиться точности более 77%.
С использованием Google AutoML Tables далось добиться таких результатов:
Т.е. точность 97%. Космос! И он выдает процент вероятности по каждой модели (в случае классификации). Это важно, поскольку значение «1» на выходе встречается достаточно редко. И мы сейчас используем начиная от 25% вероятности «1».
В идеале нужно два Python скрипта (консольных):
1. train.py для обучения
2. predict.py для предсказания
Входные параметры для обучения:
-name=Model_1 (название папки как-то надо делить все модели по попыткам... и куда-то складывать получившиеся модели после прогона AutoKeras)
-file-train=train.csv (примерно 80% будем пробовать разные варианты соотношения процента данных для обучения и тестирования)
-file-test=test.csv (примерно 20%)
Содержание файлов file-train и file-test (test.csv для примера в приложении):
ENUM,ENUM,DOUBLE,INT,INT,ENUM
1,0,0.32,1,4,0
1,2,0.30,3,2,1
Разделитесль строк « n» (UNIX style). Кодировка UTF-8.
Заголовок (первая строка) это тип данных в колонке. Колонок может быть от 20 до 1000.
Строк примерно до 1000к (в среднем 100-150к). Последняя колонка всегда результат.
Результат может быть или ENUM (значения: 0, 1 или -1, 0, 1), или INT. Других вариантов быть не может. Соответственно, если она ENUM модель классификации и нужен % по каждому варианту. Если INT число предсказания (от 0 до 1000 примерно, максимум 5000). Причем, в случае INT если модель предсказала 15, а на самом деле 20 это терпимо. Если предсказала 20, а на самом деле 15 это значительно более грубая ошибка.
Соответственно, нужно чтобы AutoKeras перебирал все возможные варианты и складывает полученные модели в папку «Model_1/какое-то_название.model» (или только одну самую лучшую модель). В случае если складировать все модели (как делает H2O), то таблицу лучших вариантов складывает в лог: «Model_1/result.log» с сортировкой лучшая > худшая.
Параметры предсказания:
-name=Model_1/какое-то_название.model (какую конкретную модель использовать)
-data="1,2,0.4,0.9,-3,............" (аналогичный поток данных структура данных 1-в-1 как использовался для обучения)
На выходе надо получать или
-1: 0.0000
0: 0.3000
1: 0.7000
- это в случае классификации. Или число.
Для обучения используем:
Intel Core i9-10980XE (18 ядер, 36 потоков), 48Гб оперативы, GTX 1080ti. Использовался для рендеринга. Пока простаивает.
Поставили Ubuntu 18.04.
Обучать можем сутками главное получить максимально хороший результат!