Почему Mahout еще не имеет линейной регрессии - PullRequest
4 голосов
/ 26 марта 2012

Я только начинаю работать с Махоутом, и одна вещь, которая сильно меня озадачила, - это отсутствие линейной регрессии. Даже логистическая регрессия, которая намного сложнее, в некоторой степени поддерживается исследованиями, но все о молчании по фронту линейной регрессии!

Насколько я понимаю, OLS - одна из самых простых проблем для решения -

Y = Xb + e

имеет решение для линейной регрессии b = (X ^ TX) ^ (- 1) X ^ TY, где X ^ T транспонируется в X, и если матрица (X ^ TX) оказывается единственной (то есть не обратимой) ) тогда совершенно нормально показывать сообщение об ошибке, даже если существует решение с использованием обобщенного обратного.

Вычисления как X ^ T X, так и X ^ Y - это просто вычисления сумм и сумм произведений элементов, что, как я понимаю, проще всего сделать с MapReduce.

(Что заставляет меня задуматься ... существует ли модуль, который поддерживает операции с исходной матрицей, необходимые для вычисления коэффициентов регрессии? Это действительно сделает модуль регрессии ненужным ...)

Мне не хватает чего-то, что затрудняет вычисление регрессии в Mahout?

Ответы [ 2 ]

5 голосов
/ 26 марта 2012

Я не знаю, есть ли «почему» к таким вещам. Его просто не существует.

Однако я думаю, что это противоположно тому, что вы предполагаете; это слишком "легко". Если вы не решаете решение из десяти миллионов уравнений, это, вероятно, не тот масштаб, к которому призывает Hadoop. Существует множество существующих пакетов, которые могут сделать это действительно хорошо на одной машине. Если вы хотите что-то и в Java от Apache, просто посмотрите на Commons Math, например.

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

0 голосов
/ 25 апреля 2013

Я думаю, что это просто потому, что сложность инверсии матрицы NxN равна O (N ^ 3) и подвержена численной нестабильности, что довольно часто встречается при разреженных матрицах высокой размерности.

У кого-нибудь есть другое объяснение или кто-то может подтвердить мои мысли?

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