30
Ассоциативные Ассоциативные правила правила для для геренации геренации рекомендаций рекомендаций для для решений решений в сфере сфере eCommerce eCommerce на на базе базе технологий технологий Big Data Big Data Быковский Александр Senior Java Developer Grid Dynamics, Харьков skype: alexandr_bikovskiy email: [email protected]

AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Embed Size (px)

Citation preview

Page 1: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

АссоциативныеАссоциативные правилаправиладлядля геренациигеренации

рекомендацийрекомендаций длядля решенийрешений ввсфересфере eCommerce eCommerce нана базебазе

технологийтехнологий Big Data Big DataБыковский Александр

Senior Java DeveloperGrid Dynamics, Харьков

skype: alexandr_bikovskiyemail: [email protected]

Page 2: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

ЧтоЧто нана повесткеповестке днядня??

Что такое ассоциативные правилав общемПопулярность ассоциативныхправилМайнинг ассоциативных правилПримерыВопросы

Page 3: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

АссоциативныеАссоциативные правилаправилаX ⇒ Y где X и Y являются наборамиПодгузники ⇒ Пиво

Page 4: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

НутеллаНутелла + + ХлебХлеб

Page 5: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

ПримерыПримеры использованияиспользованияЗаявил об использованииассоциативных правил в статье:

+Заказчиками решения являются:

Page 6: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере
Page 7: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

ПопулярностьПопулярность12,541 результатов по запросу:"association rules"

9,464 результатов по запросу: "collaborative filtering"

Page 8: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Самая распространенная стратегиямайнинга ассоциативных правил:

Page 9: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере
Page 10: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

АнализАнализ рыночнойрыночной корзиныкорзины

Page 11: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере
Page 12: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере
Page 13: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Мин. поддержка = 2

Page 14: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Мин. достоверность= 1.0 (100%)

Page 15: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

{рубашка} ⇒ {брюки}{брюки} ⇒ {рубашка}

АссоциативныеАссоциативные правилаправила

Page 16: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Общее кол-во транзакций = 100,000Лифт({рубашка, пальто}) = 25Лифт({рубашка, салфетки}) = 1.5Минимум = 1.0 но лучше = 2.0

Page 17: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

ФормальноеФормальное описаниеописание

Page 18: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

АнализАнализ сложностисложностиКол-во транзакций = nРазмер наборов = kСочетания:

k <= 3

Page 19: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Тразакция (4) = {пальто, рубашка, брюки, шляпа}, n = 4

= 4 = 6 = 4 14 наборов

Тразакция (10) = 65,Тразакция (100) = 5150

В сумме может достигать5,000,000,000 наборов

Transaction (10) = {пальто, рубашка, брюки, футболка, ....}

= 10 = 45 = 10

Page 20: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

АлгоритмыАлгоритмыApriori, Eclact (Equivalence CLAss Transformation) -классические алгоритмы

FP-growth - позволяет значительно экономить память,быстрее аналогов

Dist-Eclact, ParEclact, PFP (Parallel FP-growth) - аналоги,разработанные для параллельных вычислений,подходящий для BigData. PFP используется в Spark MLlib

Top-K (Non Redundant) Association Rules - подходящийдля BigData. Используется в решении отPredictiveworks, реазизованного на Spark (spark-arules)

Page 21: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере
Page 22: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

ПримерыПримерыиспользованияиспользования

Page 23: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Вначале пару слов о

Page 24: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

class WordCountJob(args: Args) extends Job(args) { TypedPipe.from(TextLine(args("input"))) .flatMap { line => tokenize(line) } .groupBy { word => word } // use each word for a key .size // in each group, get the size .write(TypedTsv[(String, Long)](args("output")))

// Split a piece of text into individual words. def tokenize(text : String) : Array[String] = { // Lowercase each word and remove punctuation. text.toLowerCase.replaceAll("[^a-zA-Z0-9\\s]", "").split("\\s+") }}

Пример кода для решения классическойзадачи "Word count"

Page 25: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

kiji-modeling kiji-scoring

базируется наследующих технологиях

Page 26: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

org.kiji.modeling.lib.RecommendationPipeval itemSetsPipe: Pipe = { transactions .prepareItemSets[Long]( 'products -> 'itemset, minSetSize=1, maxSetSize=3, separator="," ).support( 'itemset -> ('frequency, 'support), totalsPipe, None, 'norm ).confidenceAndLift( ('itemset, 'support) -> ('lhs, 'rhs, 'confidence, 'lift), lhsMinSize = 1, lhsMaxSize = 1, rhsMinSize = 1, rhsMaxSize = 2 )}

itemSetsPipe.write(Tsv( p=path, fields=('lhs, 'rhs, 'count, 'support, 'confidence, 'lift), writeHeader=true))

Page 27: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Hbase structure. Multiple columns

SerializedRecord { count, support, confidence, lift }

Page 28: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Hbase structure. Single column

SerializedRecord { list<SerializedRecord1> }

SerializedRecord1 { rhs, count, support, confidence, lift }

Page 29: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

Spark ExamplesSpark Examples

val transactions = sc.textFile("../data/mllib/sample_fpgrowth.txt").map(_.split(" ")).cache()println(s"Number of transactions: ${transactions.count()}")>> Number of transactions: 6import org.apache.spark.mllib.fpm.FPGrowthval model = new FPGrowth().setMinSupport(0.8).setNumPartitions(2).run(transactions)println(s"Number of frequent itemsets: ${model.freqItemsets.count()}")>> Number of frequent itemsets: 1model.freqItemsets.collect().foreach { itemset => println(itemset.items.mkString("[", ",", "]") + ", " + itemset.freq)}>> [z], 5

val model = new FPGrowth().setMinSupport(0.5).setNumPartitions(2).run(transactions)model.freqItemsets.collect().foreach { itemset => println(itemset.items.mkString("[", ",", "]") + ", " + itemset.freq)}>> [t], 3>> [t,x], 3>> [t,x,z], 3...

r z h k pz y x w v u t ss x o n rx z y m t s q ezx z y r q t p

"../data/mllib/sample_fpgrowth.txt"

Page 30: AI&BigData Lab. Быковский Александр "Ассоциативные правила для генерации рекомендаций для решений в сфере

ВопросыВопросы