Использовать / преобразовывать обученную модель машинного обучения в клиентском javascript?

Так что это немного безумная идея, над которой я размышлял. Я подумываю создать классификатор для (специализированного подмножества) некоторого веб-контента, а затем предоставить его пользователям в виде расширения Chrome. (Итак: пользователь переходит на веб-страницу, нажимает кнопку на расширении Chrome, расширение применяет предварительно обученную модель для создания прогноза, представляет результат пользователю.)

Но я дешев, и я не хочу запускать сервер для получения данных от расширения Chrome, создания прогноза и отправки его пользователю. Мне приходит в голову: почему бы просто не найти способ сериализовать обученную модель или что-то в этом роде, и сделать все это на стороне клиента.

Так что, если я в конечном итоге подгоню очень простую модель, например, логистическую регрессию или что-то в этом роде, то ее будет легко перенести на клиентскую сторону. В конечном счете, обученная логистическая регрессия просто выражается как обычная математическая функция, отображающая функции предсказаний, это как одна строка кода. И я думаю, что это верно и для некоторых более модных моделей (линейный SVM). В этих условиях расширение Chrome могло бы выполнять всю очистку данных и тому подобное, а затем создание прогнозов - это просто вопрос вычисления скалярного произведения. Но то же самое не так, если я в конечном итоге использую, скажем, случайные леса или что-то в этом роде.

К сожалению, не существует библиотеки PMML или чего-либо подобного для javascript.

Итак, я обращаюсь к мудрости Интернета. Есть ли другие методы создания моделей машинного обучения, которые можно было бы использовать на клиентском javascript? Или варианты действительно просто (1) запустить сервер, (2) написать библиотеку PMML для JS, (3) нет третьего варианта?

Спасибо!


person Paul Gowder    schedule 24.02.2017    source источник


Ответы (1)


Есть ли у вас уже имеющиеся модели в формате данных PMML?

Если да, то:

  1. Переведите PMML в исходный код Java. Это легко сделать с помощью библиотек JPMML.
  2. Переведите исходный код Java в исходный код JavaScript. Это еще проще сделать с помощью Google Web Toolkit.

В результате у вас будет автономный объект модели JavaScript, который предоставляет запрос схемы модели и API оценки, аналогичный Библиотека JPMML-Evaluator.

person user1808924    schedule 24.02.2017
comment
Ох, это УМНО. Спасибо. Я определенно смогу перенести свои модели в PMML после того, как обучу их, почти уверен, что R / sklearn, что бы я ни использовал, хорошо работает с форматом. - person Paul Gowder; 25.02.2017
comment
Это очень интригующая / вдохновляющая тема. На шаге 1 переведенный исходный код Java будет зависеть от API JPMML-Evaluator для тяжелой работы (например, скалярное произведение вектора, всевозможные встроенные функции и нормализации). На шаге 2 это не проблема, потому что библиотеки JPMML-Model и JPMML-Evaluator основаны на стандартных API-интерфейсах JDK (т. Е. Без причудливых сторонних зависимостей), что очень удобно для GWT. - person user1808924; 25.02.2017