library(arules)
library(tidyverse)
retail_transactions <- read.transactions("retail_transactions_2.csv", sep = ","),Market Basket Analysis and Collaborative Filtering
Recommendation Engines
Market Basket Analysis
1
2
summary(retail_transactions)transactions as itemMatrix in sparse format with
10000 rows (elements/itemsets/transactions) and
5471 columns (items) and a density of 0.002797642
most frequent items:
WHITE HANGING HEART T-LIGHT HOLDER REGENCY CAKESTAND 3 TIER
823 777
JUMBO BAG RED RETROSPOT PARTY BUNTING
644 577
ASSORTED COLOUR BIRD ORNAMENT (Other)
558 149680
element (itemset/transaction) length distribution:
sizes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1660 727 492 408 396 330 290 307 281 258 279 262 227 239 262 246
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
201 197 219 194 164 148 138 128 109 110 95 90 109 86 76 66
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
56 56 59 44 41 46 57 44 33 41 39 31 31 27 29 25
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
27 24 29 19 23 27 24 16 21 19 19 15 17 7 11 13
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
7 16 16 13 4 10 9 6 7 6 5 10 8 1 2 4
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 97
8 4 3 5 5 6 6 5 1 2 3 7 4 2 2 3
98 99 101 102 103 105 107 108 109 111 113 114 116 117 119 120
4 1 1 2 3 1 2 1 2 1 1 1 1 3 1 1
121 122 125 126 127 134 135 143 146 147 158 168 178 235 249 285
1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1
320 400
1 1
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 3.00 10.00 15.31 21.00 400.00
includes extended item information - examples:
labels
1 1 HANGER
2 10 COLOUR SPACEBOY PEN
3 12 COLOURED PARTY BALLOONS
2A
10000 transactions are tracked in this dataset
2B
5741 Items are avaiable for purchase
2C
10000 transactions X 5471 Items = 54,710,000
2D
400
2E
The mean in 15.31
3
itemFrequencyPlot(retail_transactions, topN = 20, horiz = T)4
retail_rules <- apriori(retail_transactions, parameter = list (support = 0.01, confidence = 0.5, minlen = 2))Apriori
Parameter specification:
confidence minval smax arem aval originalSupport maxtime support minlen
0.5 0.1 1 none FALSE TRUE 5 0.01 2
maxlen target ext
10 rules TRUE
Algorithmic control:
filter tree heap memopt load sort verbose
0.1 TRUE TRUE FALSE TRUE 2 TRUE
Absolute minimum support count: 100
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[5471 item(s), 10000 transaction(s)] done [0.08s].
sorting and recoding items ... [405 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 4 done [0.00s].
writing ... [72 rule(s)] done [0.00s].
creating S4 object ... done [0.00s].
4A
72 rules are discovered after applying the apriori function
4B
A support threshold of 0.01 means that an itemset must appear in at least 1% of all transactions for it to be considered. In other words, only item combinations that occur in at least 1% of the total transactions are taken into account.
4C
A confidence threshold of 0.5 means that when the antecedent (the “if” part of the rule) is present, there is at least a 50% chance that the consequent (the “then” part of the rule) will also be present. This indicates a moderate level of reliability in the association between the items.
5
summary(retail_rules)set of 72 rules
rule length distribution (lhs + rhs):sizes
2 3
54 18
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.00 2.00 2.00 2.25 2.25 3.00
summary of quality measures:
support confidence coverage lift
Min. :0.01000 Min. :0.5020 Min. :0.01080 Min. : 6.461
1st Qu.:0.01080 1st Qu.:0.5502 1st Qu.:0.01680 1st Qu.:14.406
Median :0.01200 Median :0.6226 Median :0.01970 Median :22.160
Mean :0.01351 Mean :0.6637 Mean :0.02126 Mean :27.032
3rd Qu.:0.01673 3rd Qu.:0.7307 3rd Qu.:0.02515 3rd Qu.:26.647
Max. :0.02280 Max. :1.0000 Max. :0.03530 Max. :92.593
count
Min. :100.0
1st Qu.:108.0
Median :120.0
Mean :135.1
3rd Qu.:167.2
Max. :228.0
mining info:
data ntransactions support confidence
retail_transactions 10000 0.01 0.5
call
apriori(data = retail_transactions, parameter = list(support = 0.01, confidence = 0.5, minlen = 2))
5A
54 rules have 2 items and 18 rules have 3 items
5B
The minimum lift value is 6.461. The maximum lift value is 92.593
6
inspect(sort(retail_rules, by = "lift")) lhs rhs support confidence coverage lift count
[1] {SUGAR} => {SET 3 RETROSPOT TEA} 0.0108 1.0000000 0.0108 92.592593 108
[2] {SET 3 RETROSPOT TEA} => {SUGAR} 0.0108 1.0000000 0.0108 92.592593 108
[3] {COFFEE,
SUGAR} => {SET 3 RETROSPOT TEA} 0.0108 1.0000000 0.0108 92.592593 108
[4] {COFFEE,
SET 3 RETROSPOT TEA} => {SUGAR} 0.0108 1.0000000 0.0108 92.592593 108
[5] {SUGAR} => {COFFEE} 0.0108 1.0000000 0.0108 64.102564 108
[6] {COFFEE} => {SUGAR} 0.0108 0.6923077 0.0156 64.102564 108
[7] {SET 3 RETROSPOT TEA} => {COFFEE} 0.0108 1.0000000 0.0108 64.102564 108
[8] {COFFEE} => {SET 3 RETROSPOT TEA} 0.0108 0.6923077 0.0156 64.102564 108
[9] {SET 3 RETROSPOT TEA,
SUGAR} => {COFFEE} 0.0108 1.0000000 0.0108 64.102564 108
[10] {PINK HAPPY BIRTHDAY BUNTING} => {BLUE HAPPY BIRTHDAY BUNTING} 0.0104 0.7074830 0.0147 45.940454 104
[11] {BLUE HAPPY BIRTHDAY BUNTING} => {PINK HAPPY BIRTHDAY BUNTING} 0.0104 0.6753247 0.0154 45.940454 104
[12] {WOODEN HEART CHRISTMAS SCANDINAVIAN} => {WOODEN STAR CHRISTMAS SCANDINAVIAN} 0.0139 0.7277487 0.0191 40.207110 139
[13] {WOODEN STAR CHRISTMAS SCANDINAVIAN} => {WOODEN HEART CHRISTMAS SCANDINAVIAN} 0.0139 0.7679558 0.0181 40.207110 139
[14] {PINK REGENCY TEACUP AND SAUCER,
ROSES REGENCY TEACUP AND SAUCER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0170 0.8854167 0.0192 29.912725 170
[15] {GREEN REGENCY TEACUP AND SAUCER,
ROSES REGENCY TEACUP AND SAUCER} => {PINK REGENCY TEACUP AND SAUCER} 0.0170 0.7456140 0.0228 29.705738 170
[16] {GREEN REGENCY TEACUP AND SAUCER,
REGENCY CAKESTAND 3 TIER} => {PINK REGENCY TEACUP AND SAUCER} 0.0108 0.7397260 0.0146 29.471156 108
[17] {PINK REGENCY TEACUP AND SAUCER,
REGENCY CAKESTAND 3 TIER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0108 0.8571429 0.0126 28.957529 108
[18] {HAND WARMER SCOTTY DOG DESIGN} => {HAND WARMER OWL DESIGN} 0.0106 0.6057143 0.0175 27.040816 106
[19] {GREEN REGENCY TEACUP AND SAUCER} => {PINK REGENCY TEACUP AND SAUCER} 0.0197 0.6655405 0.0296 26.515559 197
[20] {PINK REGENCY TEACUP AND SAUCER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0197 0.7848606 0.0251 26.515559 197
[21] {DOLLY GIRL LUNCH BOX} => {SPACEBOY LUNCH BOX} 0.0140 0.6635071 0.0211 26.225577 140
[22] {SPACEBOY LUNCH BOX} => {DOLLY GIRL LUNCH BOX} 0.0140 0.5533597 0.0253 26.225577 140
[23] {GARDENERS KNEELING PAD CUP OF TEA} => {GARDENERS KNEELING PAD KEEP CALM} 0.0167 0.7260870 0.0230 25.931677 167
[24] {GARDENERS KNEELING PAD KEEP CALM} => {GARDENERS KNEELING PAD CUP OF TEA} 0.0167 0.5964286 0.0280 25.931677 167
[25] {REGENCY CAKESTAND 3 TIER,
ROSES REGENCY TEACUP AND SAUCER} => {PINK REGENCY TEACUP AND SAUCER} 0.0107 0.6369048 0.0168 25.374692 107
[26] {GREEN REGENCY TEACUP AND SAUCER,
PINK REGENCY TEACUP AND SAUCER} => {ROSES REGENCY TEACUP AND SAUCER} 0.0170 0.8629442 0.0197 25.085586 170
[27] {PINK REGENCY TEACUP AND SAUCER,
REGENCY CAKESTAND 3 TIER} => {ROSES REGENCY TEACUP AND SAUCER} 0.0107 0.8492063 0.0126 24.686231 107
[28] {HAND WARMER BIRD DESIGN} => {HAND WARMER OWL DESIGN} 0.0100 0.5494505 0.0182 24.529042 100
[29] {REGENCY CAKESTAND 3 TIER,
ROSES REGENCY TEACUP AND SAUCER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0120 0.7142857 0.0168 24.131274 120
[30] {GREEN REGENCY TEACUP AND SAUCER,
REGENCY CAKESTAND 3 TIER} => {ROSES REGENCY TEACUP AND SAUCER} 0.0120 0.8219178 0.0146 23.892960 120
[31] {LARGE WHITE HEART OF WICKER} => {SMALL WHITE HEART OF WICKER} 0.0110 0.5238095 0.0210 23.280423 110
[32] {JUMBO BAG PEARS} => {JUMBO BAG APPLES} 0.0115 0.6318681 0.0182 22.977023 115
[33] {GREEN REGENCY TEACUP AND SAUCER} => {ROSES REGENCY TEACUP AND SAUCER} 0.0228 0.7702703 0.0296 22.391578 228
[34] {ROSES REGENCY TEACUP AND SAUCER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0228 0.6627907 0.0344 22.391578 228
[35] {PINK REGENCY TEACUP AND SAUCER} => {ROSES REGENCY TEACUP AND SAUCER} 0.0192 0.7649402 0.0251 22.236635 192
[36] {ROSES REGENCY TEACUP AND SAUCER} => {PINK REGENCY TEACUP AND SAUCER} 0.0192 0.5581395 0.0344 22.236635 192
[37] {ROUND SNACK BOXES SET OF 4 FRUITS} => {ROUND SNACK BOXES SET OF4 WOODLAND} 0.0102 0.5454545 0.0187 22.083180 102
[38] {RED KITCHEN SCALES} => {IVORY KITCHEN SCALES} 0.0113 0.5566502 0.0203 21.492288 113
[39] {HOT WATER BOTTLE I AM SO POORLY} => {CHOCOLATE HOT WATER BOTTLE} 0.0117 0.5879397 0.0199 20.923121 117
[40] {BAKING SET SPACEBOY DESIGN} => {BAKING SET 9 PIECE RETROSPOT} 0.0109 0.6942675 0.0157 20.848874 109
[41] {STRAWBERRY CHARLOTTE BAG} => {RED RETROSPOT CHARLOTTE BAG} 0.0103 0.5988372 0.0172 20.438130 103
[42] {CHARLOTTE BAG PINK POLKADOT} => {RED RETROSPOT CHARLOTTE BAG} 0.0114 0.5876289 0.0194 20.055593 114
[43] {ALARM CLOCK BAKELIKE IVORY} => {ALARM CLOCK BAKELIKE RED} 0.0130 0.6842105 0.0190 19.832189 130
[44] {ALARM CLOCK BAKELIKE IVORY} => {ALARM CLOCK BAKELIKE GREEN} 0.0105 0.5526316 0.0190 18.861146 105
[45] {ALARM CLOCK BAKELIKE GREEN} => {ALARM CLOCK BAKELIKE RED} 0.0184 0.6279863 0.0293 18.202503 184
[46] {ALARM CLOCK BAKELIKE RED} => {ALARM CLOCK BAKELIKE GREEN} 0.0184 0.5333333 0.0345 18.202503 184
[47] {HOT WATER BOTTLE TEA AND SYMPATHY} => {CHOCOLATE HOT WATER BOTTLE} 0.0104 0.5073171 0.0205 18.053988 104
[48] {ALARM CLOCK BAKELIKE PINK} => {ALARM CLOCK BAKELIKE RED} 0.0148 0.6115702 0.0242 17.726674 148
[49] {ALARM CLOCK BAKELIKE PINK} => {ALARM CLOCK BAKELIKE GREEN} 0.0123 0.5082645 0.0242 17.346910 123
[50] {LUNCH BAG VINTAGE LEAF DESIGN} => {LUNCH BAG APPLE DESIGN} 0.0121 0.5377778 0.0225 16.247063 121
[51] {WOODEN FRAME ANTIQUE WHITE} => {WOODEN PICTURE FRAME WHITE FINISH} 0.0175 0.5520505 0.0317 16.236779 175
[52] {WOODEN PICTURE FRAME WHITE FINISH} => {WOODEN FRAME ANTIQUE WHITE} 0.0175 0.5147059 0.0340 16.236779 175
[53] {LUNCH BAG DOLLY GIRL DESIGN} => {LUNCH BAG SPACEBOY DESIGN} 0.0122 0.5754717 0.0212 16.029852 122
[54] {LUNCH BAG BLACK SKULL,
LUNCH BAG RED RETROSPOT} => {LUNCH BAG PINK POLKADOT} 0.0101 0.5260417 0.0192 14.902030 101
[55] {LUNCH BAG PINK POLKADOT,
LUNCH BAG RED RETROSPOT} => {LUNCH BAG BLACK SKULL} 0.0101 0.5179487 0.0195 12.916427 101
[56] {LUNCH BAG BLACK SKULL,
LUNCH BAG PINK POLKADOT} => {LUNCH BAG RED RETROSPOT} 0.0101 0.6601307 0.0153 12.768486 101
[57] {SET OF TEA COFFEE SUGAR TINS PANTRY} => {SET OF 3 CAKE TINS PANTRY DESIGN} 0.0103 0.5852273 0.0176 11.276055 103
[58] {LUNCH BAG PINK POLKADOT} => {LUNCH BAG RED RETROSPOT} 0.0195 0.5524079 0.0353 10.684873 195
[59] {LUNCH BAG WOODLAND} => {LUNCH BAG RED RETROSPOT} 0.0155 0.5115512 0.0303 9.894606 155
[60] {LUNCH BAG SUKI DESIGN} => {LUNCH BAG RED RETROSPOT} 0.0172 0.5043988 0.0341 9.756264 172
[61] {JUMBO BAG STRAWBERRY} => {JUMBO BAG RED RETROSPOT} 0.0171 0.6263736 0.0273 9.726299 171
[62] {JUMBO BAG PINK POLKADOT} => {JUMBO BAG RED RETROSPOT} 0.0211 0.6187683 0.0341 9.608204 211
[63] {JUMBO BAG BAROQUE BLACK WHITE} => {JUMBO BAG RED RETROSPOT} 0.0141 0.5529412 0.0255 8.586043 141
[64] {JUMBO BAG WOODLAND ANIMALS} => {JUMBO BAG RED RETROSPOT} 0.0109 0.5505051 0.0198 8.548215 109
[65] {JUMBO STORAGE BAG SUKI} => {JUMBO BAG RED RETROSPOT} 0.0168 0.5472313 0.0307 8.497380 168
[66] {JUMBO BAG SPACEBOY DESIGN} => {JUMBO BAG RED RETROSPOT} 0.0105 0.5440415 0.0193 8.447849 105
[67] {JUMBO BAG PINK VINTAGE PAISLEY} => {JUMBO BAG RED RETROSPOT} 0.0125 0.5122951 0.0244 7.954893 125
[68] {RED HANGING HEART T-LIGHT HOLDER} => {WHITE HANGING HEART T-LIGHT HOLDER} 0.0162 0.6303502 0.0257 7.659176 162
[69] {PINK REGENCY TEACUP AND SAUCER,
ROSES REGENCY TEACUP AND SAUCER} => {REGENCY CAKESTAND 3 TIER} 0.0107 0.5572917 0.0192 7.172351 107
[70] {GREEN REGENCY TEACUP AND SAUCER,
PINK REGENCY TEACUP AND SAUCER} => {REGENCY CAKESTAND 3 TIER} 0.0108 0.5482234 0.0197 7.055642 108
[71] {GREEN REGENCY TEACUP AND SAUCER,
ROSES REGENCY TEACUP AND SAUCER} => {REGENCY CAKESTAND 3 TIER} 0.0120 0.5263158 0.0228 6.773691 120
[72] {PINK REGENCY TEACUP AND SAUCER} => {REGENCY CAKESTAND 3 TIER} 0.0126 0.5019920 0.0251 6.460644 126
6A
Customers that frequently purchase sugar also tend to purchase the 3 set teapot
6B
The confidence value is 1 which means that all purchases with sugar are correct and the support value is 0.0108 which means it only covers 1.08% of purchases tracked in the data set
7
greenteacup_rules <- subset(retail_rules, items %in% "GREEN REGENCY TEACUP AND SAUCER")
inspect(greenteacup_rules) lhs rhs support confidence coverage lift count
[1] {PINK REGENCY TEACUP AND SAUCER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0197 0.7848606 0.0251 26.515559 197
[2] {GREEN REGENCY TEACUP AND SAUCER} => {PINK REGENCY TEACUP AND SAUCER} 0.0197 0.6655405 0.0296 26.515559 197
[3] {GREEN REGENCY TEACUP AND SAUCER} => {ROSES REGENCY TEACUP AND SAUCER} 0.0228 0.7702703 0.0296 22.391578 228
[4] {ROSES REGENCY TEACUP AND SAUCER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0228 0.6627907 0.0344 22.391578 228
[5] {GREEN REGENCY TEACUP AND SAUCER,
PINK REGENCY TEACUP AND SAUCER} => {ROSES REGENCY TEACUP AND SAUCER} 0.0170 0.8629442 0.0197 25.085586 170
[6] {PINK REGENCY TEACUP AND SAUCER,
ROSES REGENCY TEACUP AND SAUCER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0170 0.8854167 0.0192 29.912725 170
[7] {GREEN REGENCY TEACUP AND SAUCER,
ROSES REGENCY TEACUP AND SAUCER} => {PINK REGENCY TEACUP AND SAUCER} 0.0170 0.7456140 0.0228 29.705738 170
[8] {GREEN REGENCY TEACUP AND SAUCER,
PINK REGENCY TEACUP AND SAUCER} => {REGENCY CAKESTAND 3 TIER} 0.0108 0.5482234 0.0197 7.055642 108
[9] {PINK REGENCY TEACUP AND SAUCER,
REGENCY CAKESTAND 3 TIER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0108 0.8571429 0.0126 28.957529 108
[10] {GREEN REGENCY TEACUP AND SAUCER,
REGENCY CAKESTAND 3 TIER} => {PINK REGENCY TEACUP AND SAUCER} 0.0108 0.7397260 0.0146 29.471156 108
[11] {GREEN REGENCY TEACUP AND SAUCER,
ROSES REGENCY TEACUP AND SAUCER} => {REGENCY CAKESTAND 3 TIER} 0.0120 0.5263158 0.0228 6.773691 120
[12] {GREEN REGENCY TEACUP AND SAUCER,
REGENCY CAKESTAND 3 TIER} => {ROSES REGENCY TEACUP AND SAUCER} 0.0120 0.8219178 0.0146 23.892960 120
[13] {REGENCY CAKESTAND 3 TIER,
ROSES REGENCY TEACUP AND SAUCER} => {GREEN REGENCY TEACUP AND SAUCER} 0.0120 0.7142857 0.0168 24.131274 120
Collaborative Filtering
1
library(recommenderlab)
library(tidyverse)2
steam_ratings <- read_csv("steam_ratings.csv")
steam_ratings <- as(steam_ratings, "matrix")
steam_ratings <- as(steam_ratings, "realRatingMatrix")3
vector_ratings <- as.vector(steam_ratings@data)
table(vector_ratings)vector_ratings
0 1 2 3 4 5
3236066 4773 12500 19762 10655 4724
3 B
game_avg_ratings <- colMeans(steam_ratings, na.rm = TRUE)
hist(game_avg_ratings,
breaks = 20,
main = "Histogram of Average Game Ratings",
xlab = "Average Rating",
col = "lightblue")3C
user_game_counts <- rowCounts(steam_ratings)
hist(user_game_counts,
breaks = 20,
main = "Histogram of Number of Games Rated per User",
xlab = "Number of Ratings",
col = "lightgreen")4
4A
set.seed(101)4B
eval_scheme <- evaluationScheme(data = steam_ratings,
method = "split",
train = 0.8,
given = 6,
goodRating = 3) 4C
train_games <- getData(eval_scheme, "train")
known_games <- getData(eval_scheme, "known")
unknown_games <- getData(eval_scheme, "unknown")5A
ubcf_model_1 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = "center", method = "Cosine"))
ubcf_model_2 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = "Z-score", method = "Cosine"))
ubcf_model_3 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = NULL, method = "Cosine"))
ubcf_model_4 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = "center", method = "Euclidean"))
ubcf_model_5 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = "Z-score", method = "Euclidean"))
ubcf_model_6 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = NULL, method = "Euclidean"))
ubcf_model_7 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = "center", method = "Pearson"))
ubcf_model_8 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = "Z-score", method = "Pearson"))
ubcf_model_9 <- Recommender(data = train_games,
method = "UBCF",
parameter = list(normalize = NULL, method = "Pearson"))5 B
ubcf_predict_1 <- predict(object = ubcf_model_1,
newdata = known_games,
type = "ratings")
ubcf_eval_1 <- calcPredictionAccuracy(x = ubcf_predict_1,
data = unknown_games)
ubcf_eval_1 RMSE MSE MAE
1.1697655 1.3683514 0.9183398
ubcf_predict_2 <- predict(object = ubcf_model_2,
newdata = known_games,
type = "ratings")
ubcf_eval_2 <- calcPredictionAccuracy(x = ubcf_predict_2,
data = unknown_games)
ubcf_eval_2 RMSE MSE MAE
1.184555 1.403170 0.923375
ubcf_predict_3 <- predict(object = ubcf_model_3,
newdata = known_games,
type = "ratings")
ubcf_eval_3 <- calcPredictionAccuracy(x = ubcf_predict_3,
data = unknown_games)
ubcf_eval_3 RMSE MSE MAE
1.0793268 1.1649463 0.8189319
ubcf_predict_4 <- predict(object = ubcf_model_4,
newdata = known_games,
type = "ratings")
ubcf_eval_4 <- calcPredictionAccuracy(x = ubcf_predict_4,
data = unknown_games)
ubcf_eval_4 RMSE MSE MAE
1.1910345 1.4185633 0.9163087
ubcf_predict_5 <- predict(object = ubcf_model_5,
newdata = known_games,
type = "ratings")
ubcf_eval_5 <- calcPredictionAccuracy(x = ubcf_predict_5,
data = unknown_games)
ubcf_eval_5 RMSE MSE MAE
1.2103032 1.4648339 0.9309624
ubcf_predict_6 <- predict(object = ubcf_model_6,
newdata = known_games,
type = "ratings")
ubcf_eval_6 <- calcPredictionAccuracy(x = ubcf_predict_6,
data = unknown_games)
ubcf_eval_6 RMSE MSE MAE
1.0990975 1.2080152 0.8294308
ubcf_predict_7 <- predict(object = ubcf_model_7,
newdata = known_games,
type = "ratings")
ubcf_eval_7 <- calcPredictionAccuracy(x = ubcf_predict_7,
data = unknown_games)
ubcf_eval_7 RMSE MSE MAE
1.1212624 1.2572293 0.8702777
ubcf_predict_8 <- predict(object = ubcf_model_8,
newdata = known_games,
type = "ratings")
ubcf_eval_8 <- calcPredictionAccuracy(x = ubcf_predict_8,
data = unknown_games)
ubcf_eval_8 RMSE MSE MAE
1.1345807 1.2872733 0.8790968
ubcf_predict_9 <- predict(object = ubcf_model_9,
newdata = known_games,
type = "ratings")
ubcf_eval_9 <- calcPredictionAccuracy(x = ubcf_predict_9,
data = unknown_games)
ubcf_eval_9 RMSE MSE MAE
1.1086429 1.2290892 0.8349371
7
ubcf_model_5 has the highest MAE score of 0.9309624
ubcf_model_rec <- predict(object = ubcf_model_3,
newdata = known_games,
type = "topNList",
n = 3)
rec_list <- as(ubcf_model_rec, "list")
rec_list[1:5]$`0`
[1] "Bridge Constructor" "Car Mechanic Simulator 2014"
[3] "Democracy 3"
$`1`
[1] "8BitMMO" "Airline Tycoon 2"
[3] "Alan Wake's American Nightmare"
$`2`
[1] "Cogs" "FINAL FANTASY VII" "Frozen Hearth"
$`3`
[1] "12 Labours of Hercules"
[2] "12 Labours of Hercules II The Cretan Bull"
[3] "Age of Empires Online"
$`4`
[1] "Airline Tycoon 2" "BattleBlock Theater" "Bridge Constructor"
8
Steam can utilise the output of the Collaborative Filtering model to offer personalised game recommendations to each user. By suggesting titles based on the preferences of similar users, Steam makes it easier for individuals to discover new games that align with their tastes, thereby enhancing user experience and boosting engagement. This targeted approach not only encourages users to spend more time on the platform but also drives higher conversion rates and increased sales through customised promotions and optimised storefront displays.