# 30th Solution Intro and Personal Summary First of all, thanks for the efforts of HM and Kaggle platform, who give us this wonderful experience~ Let me introduce my solution, and try to point out the shortages compared with the solutions with better performance. 0.Solution Framework I used two stage strategy, recall and rank, just like most of other competitors. 1. Local valid dataset generation I only used the last week to create my local valid dataset The number of unique customer_id in last week only about 60k, but the size of total customer is 1300k in the full dataset, apparently, it will limited generalization of ranking step. 2. Recall stage I only rely on a single itemCF algorithm to do the recall work. I also used the popularity of items as an extra weight, which could boost mAP score helpfully. Other competitors usually leverage multi-way recall strategy. Besides itemCF, u2i, methods like graph model, SVD, history item are also included in their recall stage. I guess that is the main reason why my final rank is only 30th. Actually, I tried deepMatch, but it not worked well. I guess the default “last item train strategy” is not suitable for HM dataset. I believe the reason is a lot of customers had long gap between the last purchasing and their prior purchasing, which made it difficult to train the item embeddings effectively. If modify the “last item train strategy”, it could be more useful, but I do not have extra time to do so. My final recall stage score around 0.028 in LB 3.Rank stage I use 5 folds lightGBM with lambda rank in this part. I tried NN models like DIN and deepFM, but they did not beat LGB. My feature engineering focused on the interactions between customers and items. It included item frequency, gap of purchasing time and category feature statistic (type , color, department, etc ). It is worth noting that, I also used vector which is produced from image files in rank part to evaluate the similarity between history and candidate items, but it doesn’t bring improvement largely. My Rank stage got 0.031 in LB finally, it only brings extra 0.003 mAP score to recall part. I believe the local dataset generation strategy limited the power of ranking models. Leaders of LB usually used 6 weeks or more data as trainset. Apparently, more data could bring extra benefits to enhance generalization of rank part . 4.Team I have to say, a good team is valuable. It is quite fatiguing for finish this competition by myself. I highly recommend everyone should try to paly Kaggle with others (If you don’t mind solo gold, haha). It not only may bring higher rank, the encouragement from team members is necessary at any time.