Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Разреженные матрицы / 17 сообщений из 17, страница 1 из 1
10.12.2015, 14:16
    #39124947
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
Уважаемые форумчане, хочу по интересоваться, использовали ли в своей практике какие-либо библиотеки по работе с разреженными матрицами? Если да, то что использовали и какие остались ощущения? Что порекомендуете?

Акцент на том, что имеете опыт личного использования, в гугле я не забанен, какие примерно есть варианты в этой области уже смотрел, пока присматриваюсь либо к la4j, либо к апачевским реализациям.
...
Рейтинг: 0 / 0
10.12.2015, 14:21
    #39124957
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
just_vladimir,

А проблема в том чтобы хранить или обрабатывать? Просто не очень понял какие ещё библиотеки нужны. Структуру писали сами, обработка через любую "векторизацию".
...
Рейтинг: 0 / 0
10.12.2015, 14:50
    #39124987
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
У меня есть макетный функционал, в основе которого лежат алгоритмы работы с матрицами, текущая реализация "в лоб" (матрица двумерный массив, честное перемножение за N^3 и т.д.), функционально все вышло то что нужно, но на более менее серьезном объеме с легкостью получится как минимум OutOfMemory, по своей природе матрицы очень разрежены. Желания вкладываться в самостоятельную имплементациею структур для хранения и нужные алгоритмы (в то же перемножение) особо нет.
...
Рейтинг: 0 / 0
10.12.2015, 15:04
    #39125016
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
just_vladimir,

Ну, я на Mahout когда-то смотрел. Но оно мне не сильно понравилось. Заточено всё под хадуп, когда мне эта распраделенность нафиг не упала. Алгоритмы были простые и на существующих объемах было проще на SQL посчитать, чем на Map/Reduce.
Пара умножений на вектор и потом суммирование. Ерунда.
Про OOME, я вообще не понял. Разреженые матрицы они же и хранятся совсем иначе.
...
Рейтинг: 0 / 0
10.12.2015, 15:24
    #39125045
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
Использовал COLT . Но не для матриц.
...
Рейтинг: 0 / 0
10.12.2015, 15:29
    #39125057
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
Blazkowicz,
в макете никак не учитывается, что они разреженные, создается двумерный массив и вперед на встречу к OOME, а чтобы такого не происходило, то как раз и нужно хранить правильно.
...
Рейтинг: 0 / 0
10.12.2015, 15:34
    #39125064
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
just_vladimir,

Рекомендации? Не?
...
Рейтинг: 0 / 0
10.12.2015, 15:38
    #39125073
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
Blazkowicz,

???
...
Рейтинг: 0 / 0
10.12.2015, 15:44
    #39125079
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
just_vladimir,

Просто любопытно чего вы там на этих матрицах считаете. И какие объемы. Потому как если объемы сурьезные, а математика - нет, тогда, есть смысл на Mahout сразу смотреть. А если наоборот - объемы средние, а математики много, то лучше брать мат. пакеты типа того же R и вызывать из Java.
...
Рейтинг: 0 / 0
10.12.2015, 15:56
    #39125094
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
Blazkowicz,
никакого rocket science точно нет :-)
Объемы маленькие до 10 000 и то это с запасом, но допустим мне надо 10 000, то это уже 10 000 * 10 000 * 4 байта и это будет 400 Мб, через чур накладно, в разреженной с легкостью уместилось бы в 1Мб.
Математика тоже весьма не хитрая.
А библиотеку смотрю, чтобы не заниматься велосипедостроением, но и так, чтобы можно было пользоваться, а не баги в библиотеке фиксить.
...
Рейтинг: 0 / 0
10.12.2015, 16:12
    #39125111
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
just_vladimirBlazkowicz,
никакого rocket science точно нет :-)
Объемы маленькие до 10 000 и то это с запасом, но допустим мне надо 10 000, то это уже 10 000 * 10 000 * 4 байта и это будет 400 Мб, через чур накладно, в разреженной с легкостью уместилось бы в 1Мб.
Математика тоже весьма не хитрая.
А библиотеку смотрю, чтобы не заниматься велосипедостроением, но и так, чтобы можно было пользоваться, а не баги в библиотеке фиксить.
Для Java очень мало нормальной математики. Поэтому в большинстве случаев проще взять широкораспространенные алгоритмы и закодить реализацию.
...
Рейтинг: 0 / 0
10.12.2015, 18:14
    #39125222
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
just_vladimir , если заведомо известно что ваши коэффициенты "скучились" возле диагонали и возле краёв
то не составит большого труда самому закодить подобную матрицу.

Возможно на некоторых тестах скорости она будет обгонять обобщённые варианты sparsed matrices.
...
Рейтинг: 0 / 0
11.12.2015, 17:30
    #39126048
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
Всем спасибо, переписал с использованием la4j, пока доволен. Библиотечка хоть и совсем скудна на документацию, но достаточно интуитивно понятна, пользоваться приятно.
...
Рейтинг: 0 / 0
11.12.2015, 17:45
    #39126076
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
just_vladimir, я-бы взал 2 библиотеки и сравнил на скорость итератора. По всей матрице.

И хотя-б 3 случая. Заполненная. Средне-заполненная. И очень редкая.
...
Рейтинг: 0 / 0
11.12.2015, 18:07
    #39126100
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
mayton,
можно, но не вижу в этом большой потребности, API оказалось удобным, по алгоритмам все что мне нужно там есть, свою проблему не эффективности по памяти я снял, по CPU у меня очень огромный запас.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
09.01.2021, 18:33
    #40034429
neutrino1015
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
Прототип сжатой матрицы - время доступа к элементу log(n):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
import java.util.TreeMap;

/**
 *
 * компактная матрица на основе TreeMap
 */
class QMatrix<ObjType> {

    private TreeMap<String, ObjType> qmatrix;

    public QMatrix() {
        this.qmatrix = new TreeMap<String, ObjType>();
    }

    public ObjType get(Integer i, Integer j) {
        return qmatrix.get(Integer.toString(i) + "_" + Integer.toString(j));
    }

    public void set(Integer i, Integer j, ObjType obj) {
        qmatrix.put(Integer.toString(i) + "_" + Integer.toString(j), obj);
    }
}

public class Main
{
	public static void main(String[] args) {
	QMatrix<String> ii = new QMatrix<String>();
        ii.set(1, 0, "mde");
        System.out.println(ii.get(1, 0));
	}
}
...
Рейтинг: 0 / 0
09.01.2021, 19:09
    #40034450
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разреженные матрицы
neutrino1015, тебе нужен интерфейс NavigableMap ?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Разреженные матрицы / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]