根據相關係數觀察到有些種類間有較高正相關,
將有較高正相關的種類歸為一組,
則當使用者對某個種類的評分都較高時, 就可以推薦他與該種類歸在同一組的其他種類
例如:
'Category 3', 'Category 4', 'Category 5', 'Category 6'間有較高正相關,
就把'beaches', 'parks', 'theatres', 'museums'歸在同一組,
若使用者對beaches評分很高, 可能可以推薦parks/theatres/museums給他
根據相關係數大致歸出了5組:
- [Category 3, Category 4, Category 5, Category 6]
- [Category 7, Category 8, Category 9, Category 10, Category 11]
- [Category 12, Category 13, Category 14]
- [Category 17, Category 18, Category 19]
- [Category 22, Category 23, Category 24]
Clusterring:
根據過去的評分資料將使用者分群, 可用來決定未來要推薦給該使用者的旅遊地點種類
左為用Kmeans分成5群的結果, 右為自己根據使用者對各組的平均評分所定義的分群
因為是高維度的資料, 在計算距離上可能會有問題, 所以決定嘗試先降維再分群
左為先降維再用Kmeans分成5群的結果, 右為自己根據使用者對各組的平均評分所定義的分群
先降維再分群有分得比較漂亮, 但跟自定義的分群不太像
反覆調整Step1和Step2的參數後都沒有變比較好, 因此決定嘗試改用別的分群方法
左上為沒經降維就直接用MiniBatchKMeans分成5群的結果, 右為自己根據使用者對各組的平均評分所定義的分群
左下為先經降維再用MiniBatchKMeans分成5群的結果, 右為自己根據使用者對各組的平均評分所定義的分群
原本只是想看看若用MiniBatchKMeans會有什麼變化,
本來以為會分得更不好, 結果意外發現可以分得跟原先定義的分群更像(左上圖比起Step1的圖, 右上角可以分出了兩群, 右下角可以合為一群)
而MiniBatchKMeans與Kmeans最大的差別是會收斂得更快
左上為沒經降維就直接用KMeans分成7群的結果, 右為自己根據使用者對各組的平均評分所定義的分群
左下為先經降維再用KMeans分成7群的結果, 右為自己根據使用者對各組的平均評分所定義的分群
因為使用的對照標準是自己定義的, 有可能定義得不夠好, 所以嘗試調整分群, 把原本設定的群分得更細,
若一組中有任兩個相關係數低於0.3的種類就將它們拆組, 最後歸出7組, 再根據使用者對各組的平均評分定義分群
因此使用Kmeans時也改成分7群
分得更細後Kmeans未經降維的分群結果與自定義分群間的相似度有比Step1更高,
而先經降維再分群的結果與自定義分群間的相似度也有比Step2更高
左上為沒經降維就直接用MiniBatchKMeanss分成7群的結果, 右為自己根據使用者對各組的平均評分所定義的分群
左下為先經降維再用MiniBatchKMeans分成7群的結果, 右為自己根據使用者對各組的平均評分所定義的分群
分成7群後改用MiniBatchKMean的改變比較沒那麼明顯,
但左上圖比起Step4的左上圖, 下方中間偏右的地方仍有改善一點, 又更接近自定義的分群