Я пытаюсь найти частые наборы данных данных. В этом случае это простой пример о количестве автомобилей, если люди в возрасте женаты или нет.Об алгоритме Apriori
Наборы 1-наборов и 2- наборов являются следующие:
---Freq. 1-itemsets---> 9 times!
[
(1) [age:[20,24]]
(2) [age:[25,29]]
(1) [age:[30,34]]
(1) [age:[35,39]]
(2) [married:[no]]
(3) [married:[yes]]
(1) [num_cars:[0,0]]
(2) [num_cars:[1,1]]
(2) [num_cars:[2,2]]
]
---Freq. 2-itemsets---> 14 times!
[
(1) [age:[20,24],married:[no]]
(1) [age:[20,24],num_cars:[1,1]]
(1) [age:[25,29],married:[no]]
(1) [age:[25,29],married:[yes]]
(1) [age:[25,29],num_cars:[0,0]]
(1) [age:[25,29],num_cars:[1,1]]
(1) [age:[30,34],married:[yes]]
(1) [age:[30,34],num_cars:[2,2]]
(1) [age:[35,39],married:[yes]]
(1) [age:[35,39],num_cars:[2,2]]
(1) [married:[no],num_cars:[0,0]]
(1) [married:[no],num_cars:[1,1]]
(1) [married:[yes],num_cars:[1,1]]
(2) [married:[yes],num_cars:[2,2]]
]
(Не заботьтесь о количестве в скобках, это просто частое этого НИКАКИХ гарантий; Учитывая min_support в этом пример равен 0,1)
Теперь я хочу получить частоту. 3-элементы из частоты. 2-наборы. В этом случае я могу объединить две частоты. 2-itemsets, пересечение whos имеет один элемент. Теперь я должен проверить, являются ли все подмножества (с размером 2) этой комбинации элементом в частоте. 2-наборы.
Если я делаю это, я получаю следующее:
---Freq. 3-itemsets---> 6 times!
[
(1) [age:[20,24],married:[no],num_cars:[1,1]]
(1) [age:[25,29],married:[no],num_cars:[0,0]]
(0) [age:[25,29],married:[no],num_cars:[1,1]]
(1) [age:[25,29],married:[yes],num_cars:[1,1]]
(1) [age:[30,34],married:[yes],num_cars:[2,2]]
(1) [age:[35,39],married:[yes],num_cars:[2,2]]
]
Но теперь, как вы можете видеть, я получаю один частоту. 3-элементный набор, который имеет частоту 0. Таким образом, он не должен находиться в наборе частот. 3-х наборов.
Если я могу вычислить этот пример, например, Weka (http://www.cs.waikato.ac.nz/ml/weka/), указанный набор предметов не отображается в результатах.
Но я могу сгенерировать его из объединения {age: [25,29], женат: [нет]} и {женат: [нет], num_cars: [1,1]}.
Так что мой вопрос:
ли я сделать ошибку при генерации часто встречающихся наборов (что моя программа строит эту выше) или у меня просто фильтровать сгенерированные кандидат первым, если подмножество элементы частоты , 2-предметов, а после этого, если частые больше 0 ???
Я надеюсь, что я мог бы объяснить мою проблему четко ...
Спасибо за вашу помощь !!
Обратите внимание, что minsupport 1 бесполезна. При внедрении Apriori убедитесь, что вы понимаете все алгоритмические идеи (уменьшая количество конфессий, проверяя данные только в один раз за каждый размер набора элементов). Похоже, вы не поняли Apriori-Gen. –