[ОТВЕТИТЬ]
Опции темы
23.01.2011 17:18  
RazVal
Цитата:
Сообщение от administrator
Валера, плиз чуток поподробнее
Ты объединяешь в одну группу позиции, у которых коэффициент совместимости продаж - больше всех остальных. После этого заново пересчитываешь эти коэффициенты для всех пар, а объединённые позиции воспринимаешь уже как одну. Однако коэффициенты нужно считать только для пар, в которых участвует эта новая объединённая позиция. Я предлагаю не пересчитывать заново все те коэффициенты, которые после пересчёта заведомо не изменятся, а пересчитывать только те, которые образовались после последнего объединения позиций в группу совместимости.
 
24.01.2011 09:57  
andrey_f
Так, Валера, давай подумаем...

Цитата:
Сообщение от RazVal
Ты объединяешь в одну группу позиции, у которых коэффициент совместимости продаж - больше всех остальных. После этого заново пересчитываешь эти коэффициенты для всех пар, а объединённые позиции воспринимаешь уже как одну.
Да, на каждом уровне кластеризации формируется список совместно продаваемых товаров и на основе этого списка выделяются кластеры. Дело в том, что все товары из этого списка объединяются в кластера, т.к. в этот список изначально попадают пары с характеристиками не ниже заданных (коэффициент совместности, количество продаж). Т.е. сначала формируются все кластеры одного уровня, а потом мы заменяем в исходном массиве старые названия номенклатуры на названия вновь образовавшихся кластеров. После этого из исходного массива удаляются одинаковые строки и анализ проводится только по уникальным строкам. Затем формируется список уникальной номенклатуры, которая встречается в исходном массиве. Для каждой позиции из списка уникальной номенклатуры проводится анализ совместных продаж, в анализе участвуют только те документы, в которых эта позиция продавалась.

Цитата:
Сообщение от RazVal
Однако коэффициенты нужно считать только для пар, в которых участвует эта новая объединённая позиция. Я предлагаю не пересчитывать заново все те коэффициенты, которые после пересчёта заведомо не изменятся, а пересчитывать только те, которые образовались после последнего объединения позиций в группу совместимости.
Да, на следующем уровне кластеризации логично не проводить анализ по позициям уникальной номенклатуры из исходного массива, для которых не было изменений ни в одном документе продажи из тех, в которых они продавались (выделить эти документы тоже время). Вот только я думаю, что таких документов и позиций будет крайне мало, и это скорее всего те позиции, которые продавались единично в отдельных документах и по результату анализа не попали ни в один кластер. Единственный случай, когда это может дать существенную экономию времени, это когда пользователь изначально задал заведомо большие параметры (коэффициент совместности, количество продаж) и тогда часть документов реально можно отбросить, вот только первый наиболее длительный уровень кластеризации проводить необходимо всегда в полном объеме.
Валера, правильно ли я тебя понял и логичны ли мои рассуждения?
 
24.01.2011 11:36  
RazVal
Цитата:
Сообщение от administrator
...
Валера, правильно ли я тебя понял и логичны ли мои рассуждения?
Да, Андрей - ты понял меня совершенно правильно. Жаль, что моя идея не позволит значительно сократить время работы алгоритма...
 
24.01.2011 12:34  
andrey_f
Цитата:
Сообщение от RazVal
Жаль, что моя идея не позволит значительно сократить время работы алгоритма...
Зато другие твои идеи послужили основой для его создания ;)
 
26.01.2011 14:03  
Angl
Всем привет! А есть ли версия EXCEL2010?
 
26.01.2011 14:06  
andrey_f
Цитата:
Сообщение от Angl
Всем привет! А есть ли версия EXCEL2010?
Привет.
2010 Excel ничем в данном случае не отличается от 2007, так что предлагаемый файл подходит и к 2010 версии без каких-либо ограничений.
 
01.02.2011 03:38  
andrey_f
Цитата:
Сообщение от administrator
Цитата:
Сообщение от KaPrAL
Excel сам по себе тяжеловесный, содержит множество объектов, которые грузят память, поэтому в коде макросов используют как можно меньше переменных и массивов, и их значения лучше удалять из памяти сразу после использования. Можно также создавать невидимый лист, и сохранять в нем промежуточные данные, на каждом цикле очищая кэш и сохраняя книгу.
...
Единственное решение, которое я вижу - оптимизация размера массивов, т.к. во многих случаях приходится брать массив заведомо большего размера, чтобы туда влезли все данные, количество которых не известно до выполнения операций.
...
Для уменьшения риска возникновения ошибки "out of memory" я оптимизировал размер массивов.
Насколько эффективно данное решение - покажет тест на выходных, по результатам напишу.
Последняя версия утилиты Inventor: кластерный анализ во вложении.
Вложения
Тип файла: rar Inventor_кластерный анализ_V3.rar (122.0 Кб, 648 просмотров)
 
01.02.2011 22:56  
RazVal
Цитата:
Сообщение от administrator
Последняя версия утилиты Inventor: кластерный анализ во вложении.
А, если всё будет хорошо, то ты заменишь ей модуль кластерного анализа в основном Inventor-е? Спрашиваю, для указания, корректной ссылки. ;)
 
01.02.2011 23:46  
andrey_f
Цитата:
Сообщение от RazVal
Цитата:
Сообщение от administrator
Последняя версия утилиты Inventor: кластерный анализ во вложении.
А, если всё будет хорошо, то ты заменишь ей модуль кластерного анализа в основном Inventor-е? Спрашиваю, для указания, корректной ссылки. ;)
Нет, Валера, в основную надстройку этот модуль вводить не буду. Причина проста: пользоваться им будут раз в год и далеко не все (поэтому нет проблем с удобством из-за отдельного модуля), а вот надстройка станет тяжелее и количество кнопок на панели инструментов ограничено размером 1024 пикселя (мониторы с данным разрешением все еще активно используются, судя по данным метрики).
Для ссылки вполне может подойти эта страница. Думаю, для человека, который первый раз попадает на данный сайт это нормальный вариант.
 
08.02.2011 02:08  
andrey_f
Цитата:
Сообщение от administrator
Для уменьшения риска возникновения ошибки "out of memory" я оптимизировал размер массивов.
Насколько эффективно данное решение - покажет тест на выходных, по результатам напишу.
Ну что ж: время анализа не изменилось (собственно, это и не ожидалось, т.к. алгоритм и количество операций не менялись), а вот риск возникновения ошибки "out of memory" уменьшен. По крайней мере, на тестируемом компьютере данная ошибка не повторилась.
Так же результат теста натолкнул меня на следующую гипотезу: при занижении параметров кластеризации мы повышаем риск ошибки "out of memory", т.к. получаем слишком большое количество уровней кластеризации. Например, при тесте я поставил слишком маленькие параметры и в результате получил 122 уровня кластеризации. Это хорошо, конечно, когда весь ассортимент в результате образует один большой кластер, но это не самоцель. Кластера нужно выделять по адекватным характеристикам, а не по заниженным, пусть даже часть ассортимента при этом окажется вне кластеров.
Думаю, что предварительно оценить какие параметры кластеризации нужно выставить, поможет анализ совместных продаж, как по отдельным позициям, так и тотальный. Эти функции есть в модуле кластерного анализа.
 
 


Опции темы



Часовой пояс GMT +3, время: 20:25.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.