Pythonで購入履歴の共起分析(アイテム間類似度取得・クラスタリング)

Pythonで購入履歴の共起分析(アイテム間類似度取得・クラスタリング)

商品購入ログから商品間の類似度取得・クラスタリング

商品購入ログを使って商品の共起分析。
以前行った実験と同じデータを使ってより高度な前処理を行う。

前回の実験↓

今回は下記の図に示すようにデータを加工していく。



ログデータのクロス集計までは前回と一緒。

その後、

  • 共起行列
  • PPMI
  • SVD

と続く。

成果物として、

  • アイテム間のコサイン類似度表
  • アイテムのクラスタリングリスト

が得られる。

Pythonで購入履歴の共起分析による推薦システム開発

Pythonで購入履歴の共起分析による推薦システム開発

商品購入ログを使って商品の推薦システムを作る

商品購入ログから商品の推薦を行う。
「この商品を買った人はこれも買ってます」というやつ。

これは共起分析によって簡単に実現できる。
共起分析とは「共に起こる」の通り、同時に発生したかどうかを特徴として分析する手法。

具体的に今回の購入ログの例でいうと、
「あるユーザーが商品Aと商品Bを両方購入している」とか、
「ある商品をユーザーAとユーザーBが両方購入している」とか、
そういった情報を特徴として分析に使用する。

これによってある商品を買った人が一緒に何を買いがちか分かる、
この結果を任意の商品を買ったユーザーに伝えることで他の商品を推薦できる。
今回はPythonで実験する。

Pythonで購入履歴から商品のクラスタリング(3パターン)

Pythonで購入履歴から商品のクラスタリング(3パターン)

商品購入ログを使って商品のクラスタリング

商品購入ログから商品のクラスタリングをしたい。
Pythonの最強ライブラリscikit-learnを使って行う。

  • 最もメジャーなK-means
  • 疎行列に強いらしいSpectralClustering
  • 階層型クラスタリングのウォード法

同一データに対して、上記3種のクラスタリングを行う。

pandas ログデータを一定期間ごとに集計

pandas ログデータを一定期間ごとに集計

pandasでログデータから特定データの時間当たり出現回数を集計

↓のようなログデータを一定時間ごとに集計したい。

datetimetype
2017-01-01 00:19:04
2017-01-01 00:57:06
2017-01-01 01:11:50
2017-01-01 01:29:28
2017-01-01 01:36:43
2017-01-01 01:42:17
2017-01-01 01:54:22
2017-01-01 02:10:51
2017-01-01 03:07:43
2017-01-01 03:41:04
2017-01-01 03:57:11
2017-01-01 04:25:50
2017-01-01 04:59:47
2017-01-01 05:01:06
2017-01-01 05:18:54
2017-01-01 06:28:33
2017-01-01 06:34:22
2017-01-01 07:27:21
2017-01-01 08:19:43
2017-01-01 09:07:34

pandas アンダーサンプリング

pandas アンダーサンプリング

アンダーサンプリング

データを二値判別するときなど学習データに偏りがある場合。
例えば以下の表のようなデータから「神」と「モンスター」を判別したい場合。
正例(神)と不例(モンスター)の不均衡を均すためにアンダーサンプリングを行うことがある。

TypeNameLevelATKDEF
モンスター岩石の巨兵413002000
モンスタークリボー1300200
ラーの翼神竜1000
モンスター炎の剣士518001600
モンスターマンモスの墓場31200800
モンスター時の魔術師2500400
オベリスクの巨神兵1040004000
モンスター逆転の女神618002000

本当はラーの攻守は「?」

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×