Presentation_final
Combinational Collaborative Filtering: An Approach
For Personalised, Contextually Relevant Product
Recommendation Baskets
Research Project – Jai Chopra (338852)
Dr Wei Wang (Supervisor)
Dr Yifang Sun (Assessor)
• Recommendation engines are now heavily used online
• 35% of Amazon purchases are from algorithms
• We would like to extend on current implementations and
provide some more efficient way of generating goal-oriented
item sets that are complementary (i.e. combinational item set
recommendations)
Introduction
Company background
• Kent and Lime (KAL) is an online styling service
• Data driven business which collects style profile information,
feedback and purchase history
• We would like to combine our the KAL dataset, and domain
knowledge to produce an autonomous styling agent
Problem space definition
• Goal oriented recommendations
• Contextual recommendations
• Domain knowledge is highly relevant for the design of our
system
Problem space definition
StyleFit
Complementary preferences
Clashing preferences
Implementation goals
• Recommendations delivered in a timely manner
• Complementary by nature
• Well suited to the customers profile
• Learn and perform performance over time
• Reasonable performance at the start (i.e. avoid cold start)
• Deployed online in a web application environment
Overview of presentation
• Data Preprocessing
• Recommendation engine implementation
• Web application deployment and architecture discussion
• Demonstration
• Experiments and evaluation
• Future considerations
Data preprocessing – version mismatches
• Over time, profile schemas changed
• Solution: pick a subset of data that was common across all
schemas
Data preprocessing – missing values
• Many missing values
• Solution: use a mean average, or an initialised value, or discard
row
Data preprocessing – inconsistent fields
• Inconsistent values when merging different versions of the
schema
• Solution: pick a consistent way, then transform
Data preprocessing – outliers
• Outliers were discovered after the implementation had started,
producing highly skewed results
• Retrospectively had to be cleaned (removed) after some analysis
Data preprocessing – outliers
0
200
400
600
800
1000
1200
0 5000 10000 15000 20000 25000 30000 35000
W
eig
ht
(k
g)
Instance count (i.e. the number of customers)
Data preprocessing – initialised state objects
• Define an initialised state for each customer row
• Run a check to see, how dissimilar the row is to the initialised
state. If dissimilarity < threshold, clean/remove row
[0,0,0,0] [0,0,1,0]
Initialise state: One-hot encoding:
Data preprocessing - product content data
• Tags are metadata which allow for item to item filtering and
some pre-selection
• However, we are unable to perform these on older products that
do not have tags, thus we filter them out
Product
Slim fit
V neck
Plain
Implementation (Recommendation Engine)
• Xue et al describes two broad types of CF:
• Memory based approaches
• Model based approaches
• There are also hybrid approaches, our system would like to use
both techniques, primarily memory
• Pennock et al describes a hybrid approach using ‘personality
type’, where customers have some pre-selection based on what
personality they are
Content boosting using product tags
• Problem: CF will only suggest products that have been
purchased previously (bias toward older products)
• KAL dataset contains tags, we can use this to perform some
clustering based on classification
• Classification solves:
• Newer products not being selected
• Evaluation techniques, as it is too difficult to classify on a
granular product based level
• Products are usually out of stock (OOS)
Product clustering design decisions
• What value of K?
• 5 was selected after analysing results with inventory staff
Clustered Instances
0 78 ( 22%)
1 113 ( 32%)
2 53 ( 15%)
3 37 ( 11%)
4 71 ( 20%)
Product clustering design decisions
Final cluster centroids:
Cluster#
Attribute Full Data 0 1 2 3 4
(352.0) (78.0) (113.0) (53.0) (37.0) (71.0)
=======================================================================================
Casual10 1 1 0 1 0 1
SmartCasual11 1 0 1 1 1 0
Dress12 0 0 0 0 0 0
Regular13 1 1 0 0 0 1
Slim14 0 0 1 1 1 0
Check15 0 1 0 0 1 1
Pattern16 0 0 1 0 0 0
Stripe17 0 0 0 0 0 0
Plain18 0 0 0 1 0 0
Cluster 0: {Casual, Regular, Check}
Goal is to select product class, not product
Product
Category
(LS Shirts)
Casual,
Regular,
Check,
… Smart Casual,
Slim,
Pattern,
…
Casual,
Smart Casual,
Slim,
Plain,
…
Smart
Casual,
Slim,
Check,
…
Casual,
Regular,
Check,
…
Goal is to select product class, not product
Product
Category
(LS Shirts)
Casual,
Regular,
Check,
… Smart Casual,
Slim,
Pattern,
…
Casual,
Smart Casual,
Slim,
Plain,
…
Smart
Casual,
Slim,
Check,
…
Casual,
Regular,
Check,
…
How do we determine winning class?
• Problem: We wish to find the winning class
• Naively, we can find the winning product and abstract this to
its class, but this is flawed
• Thus, we wish to find the average score for each class, and pick
the highest one
Problems with selecting winning class
• Dominant product scores
• Products that are older have more rating (time is biased)
• Products that new new have no rating
• Sparsity
• No rating products can thus influence the class selection
Thresholding dominant product scores
• Use a generalised logistic function (modified)
Smoothing for “unrated” products
• Common technique used to reduce sparsity
• Select the average score of the cluster and associate with
unrated products
Noise reduction
• Remove customers that have not purchased more than 2 times
(i.e. 2 baskets)
“Slow start” problem of CF
• Customers that have never purchased before have poor system
accuracy
• How do we resolve this? We can build a model where similarity
is built on customer profiling, rather than purchase history
• We can then combine “votes” for product classifications in an
ensemble classifier
“Slow start” problem of CF
CF (Classifier 1) C (Classifier 2)
[0.2, 0.3, 0.5] [0.3, 0.5, 0.2]
[0.25, 0.4, 0.35]
“Slow start” problem of CF
• Introduce a weighted “voter” function, and treat each category
classification as a probability. Similar to MLE.
Self weighting
• We also want to vote the active users votes higher than its peers
in the neighbourhood, if it has rated products or given feedback
Design decisions - producing customer
clusters
• Initially k-means was unable to produce some nice clusters that
reflected both our fit and style knowledge domains
• We prefer to weight physical attributes higher over non-
physical attributes (as this is what a stylists naturally does)
• We also increase k to capture both style knowledge domains
Feedback data incorporation
• KAL dataset contains negative explicit feedback based on style,
as well as negative implicit feedback based on fit
• Author chose to discard fit based feedback (too noisy/
uncertain)
• Explicit feedback was used to rate product classifications, and
then subtract a value from the final vote, i.e. add to the
ensemble method
Ensemble voting classifier
CF C NF
Output votes for product class
Select the highest product class
Building combinational (complementary)
baskets
• Use rule mining to build IF-THEN statements so we can
modify our baskets before our final item sets
• Look for common trends between product classifications e.g. If
LSShirts_1, Shorts_2 => Socks_3
Web architecture design decisions
• The goal of the project is to implement an efficient
recommendation system, thus the web application itself should
be fast
Node streams and HTTP chunks
• Use data frames to split a product list into products
• Operate on each product, rather than a data frame
• Send the product to the client while the next data frame is
processing
Optimising database queries
• Filter noise (i.e. only query customers with purchases > 2)
• Filter OOS products (useful for item to item filtering)
• MongoDB Pipeline aggregation queries
Online / incremental updates
• Once a customer has given feedback, we wish to suggest them a
new item immediately
• Thus, we want our model to be online, that is, it updates
incrementally
• With instance based learning techniques this is possible
Experiments and evaluation
• Experiments:
• Does our ensemble method increase accuracy? What value of
lamda do we use?
• Optimisation methods: smoothing, self weighting, reducing
noise impact
• Speed of transfer in web
Experiments and evaluation
• Measure to use, mean absolute error (MAE)
Experiments and evaluation
Experiments and evaluation
Experiments and evaluation
Production results
• Deployed to production on 18 November
Future work and considerations
• Implement new rules based on stylist domain knowledge with
respect to product attributes: colour, seasonality, time-variant
features
• Filter categorical products for non-relevant seasons
• Testing memory-based CF vs model-based CF (i.e. given
training set, build model, probabilistic measure of likely product
classification)
• Explore other research based methods, genetic algorithms
Conclusion
• Very interesting project
• Many different fields of CS – Machine learning, data mining,
data warehousing, web application development, human
centered design
• Ground work for future potential in this area
• Thank you for listening