Ищем прок от применения матриц - страница 2

 
Maxim Kuznetsov #:

конечно на лицо проблемы с формулировками и постановкой задач :-)

Что Вам не понятно - давайте поясню - мне важно знать, в чем именно возникла проблема, тогда я смогу, возможно, улучшить описание задачи для понимания её большего круга лиц.


Maxim Kuznetsov #:

в п.1 можно применить матрицы и вектора (если именно в этом самоцель), если классификацию представить как некую функцию (матричную, полином) от x. Итоговый класс = целая часть. 

Хорошо бы показать, как это сделать - цель же разобраться ещё и с новыми функциями.

Maxim Kuznetsov #:

но если данные и диапазоны заранее отсортированы, то секс с матрицами ненужен. И так всё очень быстро O(1) - начальный класс 1, бежим по массиву значений, если значение выше порога, берём следующий класс и увеличиваем порог

Да так и есть, но хочется быстрей - классов много, столбцов и строк так же много.

 
Aleksey Vyazmikin #:

Что Вам не понятно - давайте поясню - мне важно знать, в чем именно возникла проблема, тогда я смогу, возможно, улучшить описание задачи для понимания её большего круга лиц.


Хорошо бы показать, как это сделать - цель же разобраться ещё и с новыми функциями.

Да так и есть, но хочется быстрей - классов много, столбцов и строк так же много.

много это сколько ? для произвольного числа найти диапазон из 10000 заранее отсортированных промежутков - не более 15 сравнений 

то-же самое для всех 100000 заранее сортированных чисел, внезапно 100000 сравнений (=размер исходного массива, по 1-му на каждый; в 15 раз быстрее чем по одиночке)

разметить сортированные 100K на границы классов порядка Ln2(100K)*Ln2(10K) , вообще катастрофически мало

 
Maxim Kuznetsov #:

много это сколько ? для произвольного числа найти диапазон из 10000 заранее отсортированных промежутков - не более 15 сравнений 

то-же самое для всех 100000 заранее сортированных чисел, внезапно 100000 сравнений (=размер исходного массива, по 1-му на каждый; в 15 раз быстрее чем по одиночке)

разметить сортированные 100K на границы классов порядка Ln2(100K)*Ln2(10K) , вообще катастрофически мало

Классов до 512 ( правил  с границами неравенств), редко больше. Числа сами сортировать нельзя, иначе потом надо восстанавливать опять их индексы и снова перезаписывать (ну разве что так быстрей) - важно сохранить структуру данных.

Самих строк в пределах 25000, но столбцов до 10000. При этом привил с классами до 650 (сейчас) - т.е. операцию по определению класса надо проводить последовательно, снова после решения остальных задач.

 
Aleksey Vyazmikin #:

Классов до 512 ( правил  с границами неравенств), редко больше. Числа сами сортировать нельзя, иначе потом надо восстанавливать опять их индексы и снова перезаписывать (ну разве что так быстрей) - важно сохранить структуру данных.

Самих строк в пределах 25000, но столбцов до 10000. При этом привил с классами до 650 (сейчас) - т.е. операцию по определению класса надо проводить последовательно, снова после решения остальных задач.

что за дет.сад ? если сам массив (таблицу, йоу) по невнятным причинам сортировать нельзя, то можно вести внешние индексы..

вы как-то организуйте сами по себе данные. 

25k * 10k  - а вы их как получаете и храните то ? может с этого начинать. Может классифицировать (хоть частично) сразу при поступлении, или мелкими пачками. 

 
Maxim Kuznetsov #:

что за дет.сад ? если сам массив (таблицу, йоу) по невнятным причинам сортировать нельзя, то можно вести внешние индексы..

вы как-то организуйте сами по себе данные. 

25k * 10k  - а вы их как получаете и храните то ? может с этого начинать. Может классифицировать (хоть частично) сразу при поступлении, или мелкими пачками. 

Данные берутся из файла csv (буду заменять на bin), обрабатывать их во время записи нельзя, так как " Таблица №2 с приделами. " у нас не одна, а очень много, поэтому преобразование происходит под каждую такую таблицу.

Если я правильно понимаю, то Вы предлагаете в отдельный массив записывать индексы таким образом, что бы все цифры шли по порядку - как это сделать наименее затратно по вычислениям? Или я не так понял изначально? Правила из Таблицы №2 записаны по порядку, если что.

 

у вас в каждой строке CSV по 10 тысяч столбцов ?

даже если не так, ну очевидно-же что с данными просто беда. Задача не матриц и векторов - тут задачи на поиск и хранение. 

если откуда-то такой вал данных, то возможно OLAP - на сайте есть соотв.материалы

 
Maxim Kuznetsov #:

у вас в каждой строке CSV по 10 тысяч столбцов ?

даже если не так, ну очевидно-же что с данными просто беда. Задача не матриц и векторов - тут задачи на поиск и хранение. 

если откуда-то такой вал данных, то возможно OLAP - на сайте есть соотв.материалы

Да, в каждой строке.

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

OLAP - судя по описанию, возможно будет полезно, но без понятия, как это прикрутить.
 
Ну пока из полезного - вполне пригодится транспонирование или даже получение сразу в вектор(фактически массив) столбца - это уже избавляет от одного цикла по транспонированию.
 
Чтобы бы был от чего-то прок - нужно знать, что это  такое. Вот дикарю дать, к примеру, ноутбук. Он бы орехи на нем колол или еще какое-то типа того "полезное" применение для него придумал.
 
Aleksey Ivanov #:
Чтобы бы был от чего-то прок - нужно знать, что это  такое. Вот дикарю дать, к примеру, ноутбук. Он бы орехи на нем колол или еще какое-то типа того "полезное" применение для него придумал.

Гражданин пытается оскорбить?

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