Python scikit-learn データ分析入門シリーズ 機械学習

【Python】レコメンドでよく使われる機械学習アルゴリズムの一覧とコード実装

この記事は約5分で読めます。

 

前回の記事:【データ分析】データマーケティングにおけるレコメンド手法の一覧まとめ から引き続いてレコメンドについて調べた結果を自分用にメモしておきます。

 

協調フィルタリングの種類

 

上述したように協調フィルタリングは「購買データからユーザーをパーソナライズして購入しそうな商品をピックアップ」する手法ですが、この手法にはいくつかのアプローチ方法があります。

 

f:id:oruka199665:20220402164209p:plain

引用:https://yolo-kiyoshi.com/2020/06/22/post-1947/

 

この辺りは向こうのレコメンドシステムの実装環境などを吟味して選定した方がよさそうです。

 

 

コラム:レコメンドの方向性について

実際にレコメンドをするとなった際の方向性としては「関連する商品を見つける(アイテムベース)」のか「関連するユーザを見つけるのか(ユーザーベース)」の2つに分かれます。

 

一般的にはユーザベースよりもアイテムベースの方が計算処理量が少なく、高速とされています。 履歴データが膨大になると、アイテムベースとユーザベースではレコメンドの精度は差がなくなり、アイテムベースのほうがスケーラビリティがあるとされています。

引用:第2回 レコメンデーションの種類

 

 

要は「アイテムID×ユーザーID」の行列なのか、「ユーザーID×アイテムID」の行列なのかというだけで、Pythonで実装する際はデータフレームを引数の「df.T」で縦横入れ替えれば済む話です。

 

メモリベース

 

・KNN(K近傍法)

 

k近傍法は学習データをベクトル空間上にプロットし、新しいデータを入れてそこから距離が近い順に任意のk個を取得し、その多数決でデータが属するクラスを推定するアルゴリズムです。レコメンドではこのユーザー間の距離を類似度として算出します。

 

具体的にはベクトルの距離を「ユークリッド距離(小さい方が近い)」で測る、ベクトルの内積を「コサイン類似度(大きいほど似ている)」とするといったやり方があります。この辺りはPythonで実装する際は引数の設定で指定可能です。

 

それぞれのPythonでの実装については以下参照:

関連記事:【Python】アニメのレコメンドシステムを協調フィルタリングで実装する(ユーザーベース)

関連記事:【Python】協調フィルタリング(k近傍法)でアニメのレコメンドシステムを実装する(アイテムベース)

 

・特異値分解(SVD)

 

特異値分解(singular value decomposition: SVD)は、コンピューター上で多次元で表現される画像データや言語データ、各種ログといったもの扱う際に特徴量を可能な限り損ねること無く次元圧縮する際に利用される手法です。他の次元圧縮手法としては、主成分分析(PCA)や非負値行列因子分解(NMF)などがあります。

 

参照:https://data-scientist-kasegu.com/2021/10/29/%E3%83%9E%E3%83%BC%E3%82%B1%E3%82%BF%E3%83%BC%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEpython%E3%81%A7%E5%A7%8B%E3%82%81%E3%82%8B%E3%83%AC%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7/

 

モデルベース

 

・ニューラルネットワーク

 

参照:大規模サービスで効率よくレコメンドを提供するためにTensorflow Recommendersを活用する – DMM inside

 

・Matrix Factorization

 

参照:AmazonからYouTubeまで 有名Webサービスを支える推薦アルゴリズムのこれまでとこれから – ログミーTech

 

・Factorization Machines

 

参照:AmazonからYouTubeまで 有名Webサービスを支える推薦アルゴリズムのこれまでとこれから – ログミーTech

 

・リカレントネットワーク

 

リカレントネットワークは時系列的な流れを保持したディープラーニングです。時系列の順序の意味合いが大きい株価データや会話データでよく用いられるアルゴリズムですが、レコメンドにも応用が効くみたいです。

 

参照:AmazonからYouTubeまで 有名Webサービスを支える推薦アルゴリズムのこれまでとこれから – ログミーTech

 

その他

 

・クラスタリング

ユーザーを属性情報などでクラスタリングしてレコメンドを行うアプローチです。協調フィルタリングの計算量が多い場合はまずユーザーをクラスタリングで分けて各クラスターごとにアソシエーションや協調フィルタリングで分析を行うのも手法としてアリかもしれません。

 

実装記事:【Python】K-MEANSでのクラスタリング結果を主成分分析で次元削減してグラフで可視化する

 

 

 

 

 

参照:https://qiita.com/k-oto/items/7790941656fba0068ed8

参照:https://blog.brainpad.co.jp/entry/2017/02/03/153000

参照:https://yolo-kiyoshi.com/2020/06/22/post-1947/

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:【Python】レコメンドでよく使われる機械学習アルゴリズムの一覧とコード実装 […]

タイトルとURLをコピーしました