Положим, на своих данных мы тренируем модель M
, переводя опции X
(вектор) в метки Y
(тоже вектор) X -> M -> Y
.
Положим ещё, что по своему человеческому разумению данной задачи мы понимаем, что другой набор выводимых опций (меток) из тех же исходных опций X
может иметь решающее значение. И модель для них есть, N
. Иначе говоря, X -> N -> Z
. И хотя сами по себе эти метки не имеют для нас большой ценности, опираясь на свой опыт, мы понимаем, что они могут быть важным фактором в определении Y
.
Если модель M
достаточно мощная, вполне вероятно, что опции Z
уже присутствуют в ней в качестве внутренних абстракций. А может и нет. Как правило, ни узнать этого, ни повлиять мы не можем. У нас нет возможности обнаружить внутри M сущности, которые мы могли бы надежно идентифицировать и соотнести с Z
, да еще сообщить модели об их важности.
Единственный продуктивный способ сообщить модели M
о необходимости учитывать вторичные опции, это добавить их к основным. То есть, получив X -> N -> Z
относительно простым способом, мы добавляем результат к опциям модели M
: (X, Z) -> M -> Y
. Тренировать ли M
и N
синхронно или раздельно — вопрос отдельный.
Например, я говорил уже о бесполезности прогнозов (если только вы не торгуете прогнозами). Но! От прогнозов мало толку в качестве конечного результата. Но мы же понимаем, что если основа данных — временной ряд, от хорошего прогноза может быть реальная польза. Надо лишь дать основной модели подсказку. То есть, если сделать даже простенький прогноз чем-то вроде ARIMA
и прибавить его к входным опциям основной модели, то есть кормить модель M
данными не только о прошлом, но и о предполагаемом будущем, её качество может заметно возрасти. Просто потому, что дополнительная опция дала модели подсказку о том, что нам представляется важным.
Результатом модели M
может быть стратегия.
Оригинал: VK.com