Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Как решается задача "market basket"? / 25 сообщений из 36, страница 1 из 2
21.03.2005, 13:10
    #32971145
putin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Есть MS AS 2005. Есть таблица с тремя колонками: ид_клиента, дата (с точностью до дня), ид_товара. Сабж! Какой алгоритм надо для этого использовать? Я пробовал Association Rules, он почему-то считает за корзину строку в таблице, а не множество строк с одним ид_клиента.
В интернете не нашел ничего, кроме утверждений, что эта задача решается легко и просто :(
...
Рейтинг: 0 / 0
21.03.2005, 13:20
    #32971165
Константин Лисянский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Если таблица, то, наверное, не MS AS а MS SQL. Правильно?
Если так, то можно использовать инструменты класса Data Mining, которые поддерживают алгоритм Market Basket Analysis (Affinity Analysis).
Этот алгоритм реализован, например, в продуктах компаний Base Group (не помню, как называется продукт, я его смотрел) и Megaputer (продукт называется Polyanalyst).
Дальше надо эти продукты внимательно изучать, поскольку в случае большого объёма данных можно нарватся на ограниченную масштабируемость. Лучше всего, если инструмент позволяет майнить путём генерации SQL (так, например делает Teraminer от компании NCR, Megaputer тоже собирался реализовать такую функциональность в Полианалисте, не знаю на счёт Base Group). У меня был опыт с Полианалистом, когда он отказывался майнить больше двух с половиной миллионов строк, поскольку это хозяйство не помещалось в памяти. Это, конечно, копейки для розничной торговли, но у Вас, я вижу, агрегация на уровне дня, а не корзины. Очевидно, у Вас не розница. Может, объёмы данных у Вас небольшие, тогда можно использовать вышеперечисленные продукты.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
21.03.2005, 13:29
    #32971191
putin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
У меня есть и MS SQL и MS AS. Можно ли использовать MS AS для такого анализа или надо смотреть (покупать) другие продукты? (у Basegroup вы наверное имели в виду Deductor?)
...
Рейтинг: 0 / 0
21.03.2005, 13:33
    #32971207
Константин Лисянский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Ещё раз замечу - про MS AS врать не буду - не знаю. У Base Group был отдельный продукт от Дедуктора. Смотрел я его чуть больше года назад. Может быть, они уже добавили его в Дедуктор, но тогда это был отдельный продукт.

А как Ваша задача звучит в формулировке бизнеса (только не говорите анализ корзины, это скорее, метод решения, а не задача)?

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
21.03.2005, 14:44
    #32971415
putin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
да собственно так и звучит, только вместо товара - услуги, оттого и агрегация по дням. Hадо находить совместно оказываемые услуги, может даже их стоит агрегировать не по дням, а по клиентам. Хорошо бы еще учесть последовательность и корелляцию с данными клиентов.
...
Рейтинг: 0 / 0
21.03.2005, 14:49
    #32971427
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Специалисты Microsoft советуют решать эту задачу через Microsoft_Decision_Trees

Вот пример из нашей методички.

CREATE MINING MODEL MarketBasketAnalysis
{
BasketID LONG KEY,
Basket TABLE PREDICT
{
ProductName TEXT KEY
}
} USING Microsoft_Decision_Trees


CREATE MINING MODEL dm
( CustomerID LONG KEY,
Products TABLE PREDICT
( ProductID KEY,
ProductName RELATED TO ProductID
)
) USING Microsoft_Decision_Trees

Исследовать решение можно через Dependency Network или запросами подобными этому (

SELECT FLATTENED TopCount(Predict(dm.Products, EXCLUSIVE, INCLUDE_STATISTICS), $Probability, 5) -- top 5 most likely products
FROM dm PREDICTION JOIN <your input data> AS t
ON dm.Products.ProductID = t.Products.ProductID.

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

"Для решения нужно создать кластеры куда войдут группы клиентов и группы товаров. Очень важно чтобы это были именно группы, в противном случае решение может не получится (товары будут видны не вероятностями а exists-missing)".

В принципе в DM от Microsoft имеет довольно много подводных камней. Лучше посмотреть где-то рабочее решение, и только потом делать самому.
...
Рейтинг: 0 / 0
21.03.2005, 14:57
    #32971457
Константин Лисянский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Владимир, что-то ерунду какую-то Микровофт рекомендует. Деревья решений - это деревья решений, аффинити-анализ - это нечто другое.
И странно, что Вы задачу анализа корзины решаете кластерингом.

Из всего этого я понял, что аглгоритма анализа корзины у Микрософта нет.
По-моему, лучше смотреть решения от специализированных компаний.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
21.03.2005, 15:04
    #32971469
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Константин, не будьте так категоричны.
В теории DM доказывается, что все основные DM-алгоритмы сводятся к модификациям деревьев решений.
Даже кластеры можно через деревья сделать.
Microsoft предлагает все верно, это самая крутая реализация корзинок, которая подразумевает их иерархию ("вложенные корзинки").

В Юконе будет явно объявлен алгоритм для "корзинки", но это всего лишь настройка подобная описанной мной.
Если я ошибаюсь, Моша поправит.

Потом я достаточно равнодушно смотрю на то что там советуют производители.
Маркетологу для "корзинного" нужно часто сгруппировать Клиент-Продукт.
Тут достаточно кластера, остальное от лукавого.
...
Рейтинг: 0 / 0
21.03.2005, 15:14
    #32971498
Константин Лисянский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Владимир. ОК. Я не собирался быть категоричным.
Просвятите, пожалуйста, тогда, что на входе, что на выходе в случае использования Микрософт.

Для меня классическая постановка выглядит так - найти комбинации из двух и более товаров, которые с определённой (выше пороговой) частотой встречаются в одной корзине.

Я просто не очень понимаю, как здесь можно применить деревья решений.

Если не сложно, подкиньте ссылку на то, где доказывается, что основные алгоритмы DM сводятся к деревьям решений. Опять-таки для меня это не очень очевидно.

Кстати, умеет ли алгоритм от Микрософт искать не только пары, а комбинации из большего количества товаров в корзине?



С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
21.03.2005, 15:24
    #32971531
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Константин ЛисянскийДля меня классическая постановка выглядит так - найти комбинации из двух и более товаров, которые с определённой (выше пороговой) частотой встречаются в одной корзине.

Я просто не очень понимаю, как здесь можно применить деревья решений.


Я 100% того же мнения.
...
Рейтинг: 0 / 0
21.03.2005, 15:46
    #32971609
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Ну за теорией наверное в Duwamish Books, а сами вопросы достаточно разжеваны на microsoft.public.sqlserver.datamining

Вот примеры обсуждений.

http://groups.google.ru/groups?hl=ru&lr=&threadm=3d3329c1%241%40news.microsoft.com&rnum=1&prev=/groups%3Fq%3DCREATE%2BMINING%2BMODEL%2BMarketBasketAnalysis%26hl%3Dru%26btnG%3D%25D0%259F%25D0%25BE%25D0%25B8%25D1%2581%25D0%25BA%2B%25D0%25B2%2BGoogle

http://groups.google.ru/groups?hl=ru&lr=&threadm=%23Fh7HzLwBHA.2620%40tkmsftngp03&rnum=2&prev=/groups%3Fhl%3Dru%26lr%3D%26q%3DCREATE%2BMINING%2BMODEL%2BProductName%2Bbasket
...
Рейтинг: 0 / 0
21.03.2005, 15:57
    #32971655
OLAPMASTER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Владимир ИвановКонстантин, не будьте так категоричны.
В теории DM доказывается, что все основные DM-алгоритмы сводятся к модификациям деревьев решений.
Даже кластеры можно через деревья сделать.
Microsoft предлагает все верно, это самая крутая реализация корзинок, которая подразумевает их иерархию ("вложенные корзинки").

В Юконе будет явно объявлен алгоритм для "корзинки", но это всего лишь настройка подобная описанной мной.
Если я ошибаюсь, Моша поправит.

Потом я достаточно равнодушно смотрю на то что там советуют производители.
Маркетологу для "корзинного" нужно часто сгруппировать Клиент-Продукт.
Тут достаточно кластера, остальное от лукавого.

Простите за оффтоп, но не так давно просил помочь мне
с кластером для определения групп товара, мне так и нечего вразумительного не посоветовали, начал собственное расследование и в итоге ничего не понял, везде написано как работает этот алгоритм но мне он полныю чушь показывал.
Скорее всего я что то неправильно настроил.

ГОСПОДА может кто то даст ссылочку с примером работы кластера от MS???
...
Рейтинг: 0 / 0
21.03.2005, 16:02
    #32971681
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
К слову, я бы хотел по-возможности обсудить не только схоластические вопросы математического моделирования в DM, но и практику его внедрения.
Давайте поделимся ПРАКТИКОЙ.
Мои наблюдения

1) Основная проблема DM, это высокая квалификация аналитика который смотрит на результаты. Даже я бы сказал другая философия анализа, поэтому таких аналитиков как правило нет. Как ни странно, достаточно удачно тут работают бывшие IT-шники, которые несколько лет назад бросили IT и перешли в реальную экономику. Если у вашего клиента нет подходящего аналитика и он не может его создать, внедрять DM не стоит.

2) DM-анализ если без теории, это штука для аналитика весьма ИНТУИТИВНАЯ, т.к. даже опытный аналитик затрудняется представить правила формирования модели и ее ДЕЙСТВИТЕЛЬНУЮ релеватность реальным данным.

3) Следствия. п.1 и п.2 нужны простые ВИЗУАЛЬНЫЕ инструменты просмотра DM-моделей и хороший тренинг аналитика. Лучше в это вложиться, чем в вычислительные навороты.
...
Рейтинг: 0 / 0
21.03.2005, 16:05
    #32971688
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
2OLAPMASTER

Внимательно перечитайте что я сказал выше и кластер получится.
Как минимум "что-то вразумительное" и я бы сказал интересное для анализа будет.

"Для решения нужно создать кластеры куда войдут группы клиентов и группы товаров. Очень важно чтобы это были именно группы , в противном случае решение может не получится (товары будут видны не вероятностями а exists-missing)".
...
Рейтинг: 0 / 0
21.03.2005, 16:11
    #32971712
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Да, не обратил внимание, что речь об Юконе.
см. описание DM в Юконе.

Analytical problem
Association: Advanced counting for correlations

Examples
• Market basket analysis
• Advanced data exploration

Microsoft algorithms
• Decision Trees
• Association Rules
...
Рейтинг: 0 / 0
21.03.2005, 16:14
    #32971723
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Чего-то на меня щедрость напала. :)
Для практикующих DM вот пример как сделать DM-клиент для пользователя из компонент Microsoft, но без Analysis Manager.

15.10. Создание Data Mining клиента в Internet Explorer

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<SCRIPT LANGUAGE="VBScript">
sub DoIT()
CubeBrowser1.Connect "Provider=MSOLAP;Data Source=SERVER;Catalog=FoodMart 2000","Customer Pattern Discovery", 1, "Загрузка DM-модели"
end sub
</SCRIPT>


<BODY>

<P><INPUT id=button1 name=button1 type=button value="Подключиться к Серверу" onclick="DoIT()"></P>
<OBJECT classid="clsid:BF7D1C83-CFD4-48DA-8C0E-F4D3FC49F1D0"
codebase=""
id=CubeBrowser1 style="LEFT: 0px; TOP: 0px" VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="25000">
<PARAM NAME="_ExtentY" VALUE="14000"></OBJECT>

</BODY>
</HTML>
...
Рейтинг: 0 / 0
21.03.2005, 16:18
    #32971742
OLAPMASTER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Владимир Иванов2OLAPMASTER

Внимательно перечитайте что я сказал выше и кластер получится.
Как минимум "что-то вразумительное" и я бы сказал интересное для анализа будет.

"Для решения нужно создать кластеры куда войдут группы клиентов и группы товаров. Очень важно чтобы это были именно группы , в противном случае решение может не получится (товары будут видны не вероятностями а exists-missing)".
Вот скорее всего так и получаеться бред.
Вопрос то в том как найти эти группы которые должны уже потом в ходить в кластер. Придеться брать бубен и шаманить!!!
...
Рейтинг: 0 / 0
21.03.2005, 16:23
    #32971757
Константин Лисянский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Владимир,

я пошёл по первой ссылке. Ничего не понятно. Таинственность какая-то.

Поискал в том же форуме.

Пока что нашёл вот что:

Analyses Services 2000 does not implement an algorithm dedicated for
market basket analyses. For the time being, the only way to solve your
problem is to implement your own algorithm for association (see the
posting for aggregated providers).

Raymond

Источник здесь .

Что бы это значило?


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
21.03.2005, 16:26
    #32971767
Birkhoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Константин ЛисянскийДля меня классическая постановка выглядит так - найти комбинации из двух и более товаров, которые с определённой (выше пороговой) частотой встречаются в одной корзине.

Я просто не очень понимаю, как здесь можно применить деревья решений.
Кстати в Oracle 10g появилась такая фича, которая называется
Frequent Itemsets
This feature provides an efficient mechanism for computing frequent itemsets, a common computation in data mining applications. Frequent itemsets are typically used in market-basket analysis, to find which items are most frequently purchased together.
...
Рейтинг: 0 / 0
21.03.2005, 18:50
    #32972173
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
2Константин.
Если г-н Raymond из Microsoft не знает как реализуется корзинка это не значит, что это позиция Microsoft. Обратите внимание на подписи сотрудников Microsoft в форумах, типа "за базар не отвечаем".

А вот Jamie MacLennan и Peter Kim из Microsoft знают как эта задача решается и предлагаю даже разные варианты. Просмотрите их ответы, достаточно квалифицированные и точные советы, причем решающие не просто "Basket-что-то там", а проблемную задачу на конкретную корзинку поставленную клиентом.

MicrosoftОт:Sal Terillo (sterillo@hotmail.com)
Тема:Shopping Basket Analysis


View this article only
Группы новостей:microsoft.public.sqlserver.datamining
Дата:2002-02-28 06:55:06 PST


Is it possible to do this type of data mining with Microsoft Decision Trees?

Thanks.

Sal Terillo
Сообщение 2 в разделе
От:Peter Kim [MS] (peterkim@online.microsoft.com)
Тема:Re: Shopping Basket Analysis


View this article only
Группы новостей:microsoft.public.sqlserver.datamining
Дата:2002-02-28 17:05:44 PST


Yes, it is.
Suppose you have the following mining model:
CREATE MINING MODEL dm
( CustomerID LONG KEY,
Products TABLE PREDICT
( ProductID KEY,
ProductName RELATED TO ProductID
)
) USING Microsoft_Decision_Trees

olapmaster Вот скорее всего так и получаеться бред.
Вопрос то в том как найти эти группы которые должны уже потом в ходить в кластер. Придеться брать бубен и шаманить!!!

Не понял. Обычно номенклатура имеет группировку. Если у вас номенклатор без групп, то какие прогнозы. Как вы фактические данные смотрите-то?
Линейный список на тысячи позиций? Если так, аналитики и IT-шники должны быть уволены, а лучше убиты, чтобы в другое место не понесли такой кошмар.

К группам товаров которые завели аналитики еще стоит добавить группы и признаки от вендора. Вендоры обычно умнее продавцов и тщательно классифицируют свою продукцию в том числе по товаро-заменителям.
Иногда даже такие классификаторы доступны в XML. Например, Creo и Heidelberg позволяет их получить по интимным договорам. Вероятно они сами у себя DM крутят против конкурентов.

Несколько сложнее с клиентами. Цивилизованный метод, провести анкетирование клиентов по дисконтной программе и получить признаки. Это не только для корзинок нужно. Еще вариант вскрыть структуру ИНН. Он то везде есть и в нем есть расшифровки.
...
Рейтинг: 0 / 0
21.03.2005, 22:08
    #32972407
Константин Лисянский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Владимир Иванов Не понял. Обычно номенклатура имеет группировку. Если у вас номенклатор без групп, то какие прогнозы. Как вы фактические данные смотрите-то?
Линейный список на тысячи позиций? Если так, аналитики и IT-шники должны быть уволены, а лучше убиты, чтобы в другое место не понесли такой кошмар.

Владимир, а как тогда определить, что пиво и подгузники вместе покупаются?
Они ведь в разных группах товаров.
Это, кстати, классическая байка data mining, если кто не знает.
Одна сеть супермаркетов обнаружила, что по четвергам, когда молодые семьи идут в магазин за покупками (чтобы избежать пятничных очередей), в одной корзине очень часто лежит пиво вместе с подгузниками. Очевидно, молодые папаши затавариваются пивком, чтобы в кампании с малышом побузить - сам сейчас в подобной ситуации, только малыш уже спит, а я вот тут бузю. Будете смеяться, но я сегодня купил пиво с подгузниками на пару
Ну, так как это найти с помощью решения Микрософт?



С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
22.03.2005, 00:56
    #32972546
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Константин, но сегодня же понедельник еще.
...
Рейтинг: 0 / 0
22.03.2005, 01:53
    #32972565
Владимир Иванов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Вероятно всеже придется пояснить подходы к basket-анализу.
1) Нужно определить что такое корзинка в вашем случае. Это не так тривиально как кажется.
Варианты.
- Покупка за 1н раз, значит это ID кассового чека (case).
- Покупка 1го покупателя за всю историю
- Покупка 1го покупателя за период времени
- другое
2) Вам нужно из п.1 сделать case (сказать KEY)
3) Далее набиваем корзину (TABLE PREDICT)

Дерево покажет как товары влияли на покупку друг друга.
Влияние товаров лучше смотреть на на Дереве, а на Dependency Network, не у всех DM-поставщиков есть такая визуализация, возможно это и путает. Деревья это не обязательно древа.
Анализ будет весьма приличным, т.к. он покажет не только что пиво влияет на подгузники, но и что пиво+подгузники неприменно требует покупки презерватива и т.д.

Если вас волнует анализ попроще Client-Product (корзинка это клиент), то можно просто сделать кластер.
...
Рейтинг: 0 / 0
22.03.2005, 09:07
    #32972696
Константин Лисянский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
Константин, но сегодня же понедельник еще.

Вот такая я забавная зверушка (с) Змей Горыныч

ВладимирВероятно всеже придется пояснить подходы к basket-анализу

Наконец-то :)

- Покупка за 1н раз, значит это ID кассового чека (case).

ОК. Это вроде как классический случай.

- Покупка 1го покупателя за всю историю

У меня создаётся впечатление, что это сводится к первому случаю, но, может, я не прав.
В роли ID чека выступает ID покупателя. Получаем столько корзин, сколько покупателей. В рознице не работает, поскольку определить покупателя практически невозможно.

- Покупка 1го покупателя за период времени
То же самое. В роли ID чека выступает ID покупателя. Получается столько корзин, сколько периодов мы выбрали, умноженное на количество покупателей.

другое
ОК. Например, классический sequense analysis - сегодня я купил подгузники, а за пивом пришёл завтра.

Здесь вообще слабо понятно, как деревья решений могут помочь. Поскольку я могу за пивом прийти через день и через два.

2) Вам нужно из п.1 сделать case (сказать KEY)
3) Далее набиваем корзину (TABLE PREDICT)

Тяжеловато это понять. Ну ладно. Это синтаксис, Бог с ним.

Дерево покажет как товары влияли на покупку друг друга

Вот тут есть вопрос - а можно ли как-то параметризовать модель. Например, я хочу избавиться от случайных совпадений. Например, за весь период таких придурков, покупающих пиво и подгузники, кроме меня было ещё трое. Вполне веротяно, что мы просто не контролируем себя и берём всё подряд. Соответственно, хочется, чтобы алгоритм такие случаи отбрасывал и не засорял результаты. Можно ли это настроить.
Ну, и второе - а нельзя ли сюда кусочек дерева запостить?
Интересно, что там в корне этого дерева находится?

Анализ будет весьма приличным, т.к. он покажет не только что пиво влияет на подгузники, но и что пиво+подгузники неприменно требует покупки презерватива и т.д.
Вы будете смеяться, но... В общем, вы поняли


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
22.03.2005, 13:19
    #32973497
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как решается задача "market basket"?
A сюда никто не смотрел? или здесь не об этом?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql2k/html/distinct2.asp
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Как решается задача "market basket"? / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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