0

のHy、バスケット分析

I欲しい"頻出アイテム"

import org.apache.spark.mllib.fpm.AssociationRules 
import org.apache.spark.mllib.fpm.FPGrowth.FreqItemset 

val freqItemsets = transactions 
    .flatMap(xs => 
    (xs.combinations(1) ++ xs.combinations(2)).map(x => (x.toList, 1L)) 
) 
    .reduceByKey(_ + _) 
    .map{case (xs, cnt) => new FreqItemset(xs.toArray, cnt)} 

val ar = new AssociationRules() 
    .setMinConfidence(0.4) 

val results = ar.run(freqItemsets) 

最後に私が今まで

results.collect().foreach { rule => 
    println("[" + rule.antecedent.mkString(",") 
    + "=>" 
    + rule.consequent.mkString(",") + "]," + rule.confidence) 
} 

すべて[OK]を「ルール」を取得するために相関ルールを使用していますが、次の私は、各トランザクションのための勧告を与えたい...それを行うための簡単な方法はありますか? = LHS:私のScalaは非常に悪いですので、RIで

はあなたのルールを生成した後、あなたの時間

+0

私が実際にあなたが尋ねていることはわかりません。 – eliasah

+0

例:バスケット1(「Tuna」、「Banana」、「Strawberry」)の場合、このクライアントにはどのような製品をおすすめしますか? – Kardu

答えて

0

まあ用

baskets=function(x){ 
    rulesMatchLHS = is.subset([email protected],x) 
    suitableRules = rulesMatchLHS & !(is.subset([email protected],x)) 
    order.rules = sort(rules[suitableRules], by = "lift") 
} 

results = sapply(1:length(trans), function(x) baskets(trans[x])) 

このようなおかげで、彼らはこのようなもののようになります何かをします> RHS(信頼度)、または、例えば詳細に:

( "マグロ"、 "バナナ")=>( "STRAWBERRY")(信頼度)

Nあなたは最小限の信頼から出発して、これらのルールのリストを持っています。その後、ルールのリストを使用して特定のバスケットの予測を行い、新しいバスケットが来るようにしたいとします。

新しいバスケットのアイテムと一致するルール、特定の値またはマッチのスコアを見つける必要があります。(「マグロ」、「バナナ」の新しいバスケットは、上記のルール(ルールの左側と一致)が少なくてもスコアが低い場合は、スコアを設定して推奨をトリガーすることができます。ルールにマッチすると、右側のアイテムを推奨しますルールの

私はこれがはっきりしていると思いますが、あなたが提供したコードでこれを行う必要があります。