# 23th place solution

Congratulations to all the winners, and thanks so much for hosting such an interesting competition!
And thanks for my teammate
[@zakopur0](https://www.kaggle.com/zakopur0)
[@irrohas](https://www.kaggle.com/irrohas)
[@negoto](https://www.kaggle.com/negoto)
[@dehokanta](https://www.kaggle.com/dehokanta)
.
This competitions is very hard for us.  I'll share our team ZKMRD solution.
summary
![](assets/167436cc97480bd8bf8be4b8.png)
Candidates
We generate item candidates for each customers and each week by multi strategies.
Most popular
Past purchased
User based CF(Collaborative Filtering)
Item based CF
Different color
Features
This was a big part of the reason why we were able to increase our score in the last 2week.
Customer static attributes
basic attributes in customers.csv
Customer dynamic attributes
purchase count
last purchase flag
Days/Week since last purchase
price/discount of purchased items
mean sales channel
purchase rate by item segment
repurchase rate
Article static attributes
basic attributes in articles.csv
Bert sentence vector
Article dynamic attributes
trend value
weekly popular ranking
purchase count (1day, 2day ago, last week..)
purchase count by segment (age, item group)
popular rank by segment (age, item group)
mean sales channel
CF features
score by item based CF
score/rank by LightGCN (GCN based CF model)
Dataset
It was difficult to create a good dataset, but we were able to do so with the help of
[@paweljankiewicz](https://www.kaggle.com/paweljankiewicz)
and
[@lihaorocky](https://www.kaggle.com/lihaorocky)
's comments. Many thanks.
Key points about dataset
Use only candidate examples generated, not all positive examples
Use customers with at least one positive example in the candidates
Remove not for sales now items from candidates
Model
Our team use LGBMRanker model.
Setting is very simple. Nothing special.
CV
The CV strategy is illustrated in the figure above.
create feature and candidate: Past week from train
train: 100w-103w
valid: 104w
When creating submission, we use 100-104w as train.
Post Processing
We apply two kind of post processing to all model.
Use age based most popular items as predictions of cold start customers.
Remove the low offline sales ratio items from the customers who prefer offline.
Ensemble
Blend 6 model predictions which is created by the different candidates and features.
Ensemble is effective for our model. LB score increased by approx. 0.001.