Предельное измерение набора данных

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

Я предварительно обрабатываю свой набор данных в формате arff no sparse; У меня 116000 экземпляров и 28 атрибутов. Я применяю алгоритм Apriori в weka следующим образом (используя интерфейс weka explorer)

Apriori -N 20 -T 1 -C 0.8 -D 0.05 -U 1.0 -M 0.1 -M 0.1 -S -1.0 -c -1

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

Это нормально? Есть ли способ ускорить алгоритм (предварительно обработать данные каким-то другим способом или выбрать какой-то другой параметр для априори)? или weka не подходит для этого измерения?


person Claudia    schedule 17.09.2015    source источник
comment
проверьте этот stackoverflow.com/questions/15692012/   -  person milos.ai    schedule 17.09.2015
comment
К сожалению, Weka часто работает очень медленно. Попробуйте A) использовать ELKI, SPMF или C-реализации Кристиана Боргельта, которые должны быть намного быстрее, B) алгоритм FPGrowth вместо Apriori.   -  person Has QUIT--Anony-Mousse    schedule 17.09.2015


Ответы (2)


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

Для завершения некоторых алгоритмов может потребоваться много времени, и это пропорционально нескольким факторам (количество экземпляров, количество атрибутов, тип атрибутов) в зависимости от алгоритма (пространственная и временная вычислительная сложность). Weka не особенно быстр, за исключением того, что это Java, которая также не так быстра, как другие компилируемые языки.

Иногда быстрее запустить несколько раз алгоритм на гораздо меньших разделах вашего набора данных из-за упомянутого комп. сложность.

Например, если ваш алгоритм требует времени, пропорционального квадрату числа экземпляров, cN^2, он будет работать в 10 раз быстрее, чем на 10-кратно меньшем разделе, 10c(( N^2)/(10^2))=0,1c(N^2)

Надеюсь помог.

person shirowww    schedule 18.09.2015
comment
Спасибо попробую таким способом. Этот метод снижает сложность, но изменяет значение метрик (поддержка, уверенность и рост). Это правильно? - person Claudia; 20.09.2015
comment
Вот так. Но зная, сколько экземпляров в каждом разделе, можно было бы совместить коллективную поддержку, уверенность и подъем, надеюсь, для каждого полученного правила, отбросив менее важные. - person shirowww; 20.09.2015

Weka, как и многие другие библиотеки интеллектуального анализа данных, предлагает только два самых известных алгоритма: Apriori и FPGrowth. Априори — это старый алгоритм, хорошо известный своей неэффективностью. Более того, реализация Weka как Apriori, так и FPGrowth работает медленно.

Если вам нужны лучшие реализации Java и больше алгоритмов, вы можете проверить библиотеку интеллектуального анализа данных с открытым исходным кодом SPMF (я основатель), который предлагает самую большую коллекцию алгоритмов анализа шаблонов (более 110 алгоритмов). Для майнинга набора элементов он предлагает Apriori и FPGrowth, а также множество других алгоритмов, таких как Eclat (2000), HMine (2005), LCM (самый быстрый на конкурсе FIMI 2004) и некоторые более новые, такие как FIN (2014), PrePost (2014) и Prepost+ (2015), который может быть быстрее, чем предыдущие алгоритмы. Кроме того, он также предлагает множество вариантов этих алгоритмов, таких как поиск редких наборов элементов, коррелированных наборов элементов, наборов элементов с высокой полезностью, наборов элементов в неопределенных данных, правил ассоциации, закрытых шаблонов, последовательных шаблонов, последовательных правил и т. д.

На веб-сайте есть некоторые оценки производительности, которые показывают, что реализация SPMF намного быстрее, чем реализация Weka для Apriori/FPGrowth.

person Phil    schedule 22.03.2016