← Вернуться к списку

Какие онлайн методы машинного обучения следует использовать для задачи многоклассовой классификации с несколькими входными данными?

Краткое содержание

У меня возникла следующая проблема. У нас есть $4$ отдельных входных сигнала, которые могут принимать любое целое значение в диапазоне от$-63$до$63$. Выход также должен быть дискретным значением в диапазоне от$-63$до$63$. Дополнительное ограничение заключается в том, что решение должно допускать онлайн-обучение с помощью собственных векторов или мини-пакетов, поскольку набор данных слишком велик для загрузки всей обучающей выборки в память. Я попробовал следующий метод, но прогнозы не очень хорошие. Я создал MLP или прямолинейную сеть с $4$ входами и $127$ выходами. Входы подаются без нормализации. Количество скрытых слоев составляет $4$ с $[8, 16, 32, 64]$ единицами в каждом (соответственно). Таким образом, это по сути рассматривает проблему как задачу классификации последовательности. Для обучения мы подаем ненормализованный вход вместе с одним-горячим вектором для этого конкретного значения в качестве выхода. Вывод выполняется таким же образом. Нахождение самого горячего вывода и возврат его в качестве следующего числа в последовательности.

Полный текст

Какой онлайн метод машинного обучения использовать для многоклассовой классификационной задачи с несколькими входами? Задать вопрос

Задано 6 лет, 7 месяцев назад Изменено сегодня Просмотрено 331 раз

Задано 6 лет, 7 месяцев назад

4 $\begingroup$ У меня есть следующая проблема. У нас 4 отдельных дискретных входа, которые могут принимать любое целое значение между -63 и 63. Выход также должен быть дискретным значением между -63 и 63. Другой constraint заключается в том, что решение должно позволять онлайн-обучение с помощью сингулярных значений или мини-пакетов, поскольку набор данных слишком велик для загрузки всей обучающей выборки в память. Я попытался использовать следующий метод, но прогнозы не очень хорошие. Я создал MLP или многослойную нейронную сеть с 4 входами и 127 выходами. Входы подаются без нормализации. Количество скрытых слоев составляет 4 с [8, 16, 32, 64] единицами в каждом (соответственно). Таким образом, по сути, эта проблема рассматривается как задача классификации последовательностей. Для обучения мы подаем ненормализованный ввод вместе с одним-гоховым вектором для этого конкретного значения в качестве вывода. Вывод выполняется тем же способом. Находим самый горячий выход и возвращаем его как следующее число в последовательности. машинное-обучение ai-дизайн классификация многослойные-персептроны онлайн-обучение Поделиться Улучшить этот вопрос Следить за редактированием 20 июля 2019 г., 17:43 nbro 43,2 тыс. 14 14 золотые значки 121 121 серебряные значки 222 222 бронзовые значки задано 20 июня 2019 г., 9:58 John Mayer 41 3 3 бронзовые значки $\endgroup$ 0 Добавить комментарий | 3 Ответы 3 Отсортировано по: Сбросить по умолчанию Наивысший балл (по умолчанию) Измененная дата (новые первыми) Созданная дата (старые первыми) 0 $\begingroup$ Я предлагаю использовать алгоритмы потоковой обработки для решения ваших проблем, поскольку вы запрашиваете "онлайн-обучение с сингулярными значениями или мини-пакетами, так как набор данных слишком велик для загрузки всей обучающей выборки в память." MOA является хорошим выбором для этих алгоритмов. Hoeffding Trees также является хорошим первым вариантом для попытки. Поделиться Улучшить этот ответ Следить за ответом Ответ дан 20 июня 2019 г., 13:04 Atilla Ozgur 196 4 4 бронзовые значки $\endgroup$ Добавить комментарий | 0 $\begingroup$ Если вы предпочитаете использовать Python (вместо Java, который используется для реализации MOA, что предложено в другом ответе), вам может быть интересно посмотреть на библиотеку creme Python, API которой описан по адресу https://creme-ml.github.io/api.html, которая является библиотекой для инкрементного и онлайн-обучения. В частности, вас может заинтересовать класс OneVsRestClassifier. Поделиться Улучшить этот ответ Следить за ответом Ответ дан 20 июля 2019 г., 18:08 nbro 43,2 тыс. 14 14 золотые значки 121 121 серебряные значки 222 222 бронзовые значки $\endgroup$ Добавить комментарий | 0 $\begingroup$ То, как я бы подошел к этому (и что я уже применял в прошлом для похожей задачи), основано на нескольких точках. Предположим, мы работаем с PyTorch. Я начну нормализовать каждый ввод в [-1, 1]. Поскольку каждое свойство ввода находится в $\mathbb{Z}$ и $\in [-63, +63]$, нормализуя его и преобразовывая в fp16, можно уменьшить общую размерность пакетов в памяти и позволить автоматическую смешанную точность обучения. В принципе, вам действительно следует нормализовать значения, чтобы получить меньшие веса в сети. То же самое для вывода: Поскольку ваша задача по сути является ограниченной регрессией (эти 127 значений не являются классами), лучше всего использовать один выходной нейрон, который может предсказывать значения $\in [-1, 1]$ с помощью функции активации tanh. Это пересчитает последний слой вашей сети из $Q*H$ (не включая смещения) в $Q$ веса, где $Q$ - это количество нейронов в последнем скрытом слое, а $H$ - количество выходных нейронов. Во время вывода можно умножить свой вывод на 63, округлить его до ближайшего целого числа и получить свое предсказание. Поскольку у вас только 4 признака, простирающихся от [-63, 63], у вас всего $260144641 = 127^4$ значений, и было бы интересно изучить распределение каждого отдельного признака, пары признаков и троек признаков, чтобы провести подбор.