Support와 Confidence
● Support : 전체 구매 중에서, 해당 아이템이 구매 되었을 확률
● Confidence : 아이템 A 가 포함되었을 때 아이템 B 까지 구매 될 조건부 확률
□ 샘플
구매1 : 라면 계란 파
|
□ 이제 Support를 계산해 보자
총 구매 정보는 5회이다. (샘플이니 횟수가 적다. ㅎㅎ) 라면은 구매 5회 중에 4번 포함되어 있다. 이에, Support는 4/5임으로 80%가 된다. 라면(80%) 계란(60%) 라면+파(80%) .... |
□ Confidence 계산
계산을 하면 좋지만 식만 ^^ Lib에서 알아서 계산해 주는데 복잡하게 내가 할 필요성은 .. 그리고 기찮다.
|
□ 테스트 내용
그럼,어떤 제품들을 같이 구매하는지 조사를 진행하는데 1. 전체 구매 리스트 중에서 X라는 제품을 샀을 경우가 support > 50%가 넘고 2. 아이템 X 가 포함되었을 때 아이템 Y 까지 구매 될 조건부 확률 Confidence > 80%이 넘는 제품들에 대해서 알고 싶다고 하자!
|
□ 테스트 진행
SparkConf sconf = new SparkConf().setMaster("local[2]") .setAppName("test") .set("spark.ui.port", "4041"); JavaSparkContext jsc = new JavaSparkContext(sconf); JavaRDD<String> data = jsc.textFile("sample_fpgrowth_test.txt");
new Function<String, List<String>>() { public List<String> call(String line) { String[] parts = line.split(" "); return Arrays.asList(parts); } } );
.setMinSupport(0.5) .setNumPartitions(10); //작업을 배포하는 데 사용되는 파티션 수. FPGrowthModel<String> model = fpg.run(transactions);
System.out.println("[" + itemset.javaItems() + "], " + itemset.freq()); }
for (AssociationRules.Rule<String> rule : model.generateAssociationRules(minConfidence).toJavaRDD().collect()) { System.out.println( rule.javaAntecedent() + " => " + rule.javaConsequent() + ", " + rule.confidence()); }
|
□ 결과
Support가 50% 이상인 아이템 리스트가 아래와 같고 [[라면]], 4 이 아이템 리스트 중에 같이 샀을 확률이 80%가 넘는 경우는 [파] => [라면], 1.0 이다. 라고 결과가 출력 된다.
|
이에 우리는 파와 라면은 구매자들이 함께 산다는 것을 예상 할 수 있고
제품 진열 위치를 가까운데 배치하면 매출이 오를 것이라는 생각을 할 수 있다.
'데이터 분석' 카테고리의 다른 글
Spark - Multiclass classification (0) | 2017.07.20 |
---|---|
Spark - Isotonic Regression (0) | 2017.07.03 |
Spark - Hypothesis testing ( chi-squared test ) (0) | 2017.06.22 |
Spark - Correlations (2) (0) | 2017.06.21 |
Spark - Correlations (1) (0) | 2017.06.21 |