Сверхбольшая генерация матриц из таблиц MySQL? - PullRequest
0 голосов
/ 27 января 2012

У меня есть две таблицы MySql, одна из которых содержит набор из 6000 пользователей, а другая - 10000 оценок, которые они предоставили для продуктов. Я хотел бы сделать матрицу векторов признаков, которые имеют для каждой строки, которая обозначает пользователя 1 или 0, если они дали оценку конкретному продукту (или даже значение оценки). Каков наилучший способ сделать это (учитывая, что матрица будет разреженной?).

Мне любопытно, какие реализации можно протестировать с помощью имеющихся в моем распоряжении инструментов (таких как MySQL или Matlab) - конечная цель - выполнить кластеризацию похожих пользователей. Почему-то я думаю, что таблица MySQL с 10 000 столбцами не сделает моего администратора базы данных счастливым ... вообще.

Спасибо!

1 Ответ

0 голосов
/ 29 января 2012

Очевидный способ хранения матрицы разреженной в SQL - это использование трех столбцов, где user и product вместе являются первичным ключом, а дополнительный столбец - рейтингом.

Нет смысла проводить фактическую обработку с базой данных SQL. Это просто огромные накладные расходы и замедляет работу. Просто выведите данные в примитивную и быструю структуру данных, проведите анализ, а затем, в конечном итоге, переведите выходные данные в любой нужный выходной формат.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...