169 похожих чатов

Ребят, всем привет. Я тут изучаю для собственного проекта рекоммендационные

системы и возник вопрос. Я от коммерческого DS далек достаточно, поизучал материал, состряпал CF модель, но не понимаю как принято строить пайплайн. Прогонять ETL в airflow и дальше запускать pipe с R скриптом или как ? Если поделить ссылкой или собственным рассуждением о best practices, то буду рад

9 ответов

7 просмотров

не думаю, что на этот вопрос есть универсальный ответ, дело в том, что вы по сути говорите об MLOps и там по хорошему следует определить архитектуру исходя из того какая предметная область и идея использования модели рекомендации ... там вопросов масса... НО, если хочется по-простому т.е. без армии архитекторов и MLOps и также хочется остаться внутри R то рекомендую посмотреть R targets вместо Airflow https://books.ropensci.org/targets/

Evgeny-Afanasev Автор вопроса
Dm Kb
не думаю, что на этот вопрос есть универсальный от...

Меня смущает отсутствие драйвера для многих olap решений и выглядит как написать самому, поэтому я думал на одном стеке сделать весь ETL, а ML уже на другом

Evgeny Afanasev
Меня смущает отсутствие драйвера для многих olap р...

ну вам видимо известно какие OLAP решения нужно поддерживать и в каком виде , а следовательно можно это проверить т.е. сделать небольшой дизайн, но честно не очень понимаю зачем в рекомендациях вообще OLAP: модель генерит инференс и вы это отправляете целевой аудитории

Evgeny-Afanasev Автор вопроса
Dm Kb
ну вам видимо известно какие OLAP решения нужно по...

Olap как лейк для событий на базе которых и будет cf строится. Дизайн: Абстракция: Нужно построить рекомендационку для заведений на базе user based collaborative filtering. 1. ETL пайплайном строю CSV в котором пользовательским рейтингом будет служить метрика кол-ва посещений, соответственно группирую и перекладываю в CSV в S3 2. С помощью tidyverse либ строю матрицу user item, заполняю нули и ранжирую по кол-вам посещений похожих пользователей и складываю в какое нибудь KV или document хранилище

простой cron очень часто работает на ура.

Evgeny Afanasev
Olap как лейк для событий на базе которых и будет ...

Похоже у вас модель работает батчем т.е. реал тайма у вас нет и следовательно уже можно смотреть варианты решения задачи попроще, если нет сложной логики подготовки данных , то и targets будет перебор. Опять же судя по использованию CSV и tidyverse объемы не очень значительные, но все таки лучше присмотреться к Arrow/parquet. Возможно, стоит сделать два докер контейнера: на подготовку данных и собственно модель для гибкости(в теории можно по разному готовить разные данные). Можно автоматизировать сборку и деплой на том же GitHub actions. Возможно, стоит инвестировать свое время в валидацию данных на входе и логирование. Также подумать о логике инкрементной загрузки данных из источников потому как полный батч в каждый раз - это не очень кошерно )))

Evgeny-Afanasev Автор вопроса
Dm Kb
Похоже у вас модель работает батчем т.е. реал тайм...

Да. Насчет инкремента тоже думал и есть планы по реализации. Спасибо за помощь. Поизучаю arrow тогда еще и видимо действительно на кроне построю пайплайн для 2 докер контейнеров. 1 подготовит статистику просмотров, другой построит рекомендации )

Dm Kb
Похоже у вас модель работает батчем т.е. реал тайм...

Для небольших объемов fst быстрее порядка на два если данные все брать

Сам каркас "ETL" вообще может быть крошечным. Вот пример достаточно простой и надежной конструкции: https://t.me/r_in_action/186

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет. Я верно понимаю, что в определении класса Монад m — зафиксирован (к тому же поскольку это моноид в категории эндофункторов). Т.е. используя байнд я не могу перемещать...
Arseny
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта