# レコメンドに用いられる協調フィルタリングの利点と欠点とは？

> 当サイト【スタビジ】の本記事では、レコメンドロジックとして様々なところで用いられる協調フィルタリングの仕組みを見ていきたいと思います。そして協調フィルタリングの利点・欠点についてもまとめていきますよ！

- URL: https://toukei-lab.com/collaborative-filtering
- 公開: 2022.11.29 / 更新: 2026.10.28
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、レコメンドロジックとして様々なところで用いられる協調フィルタリングの仕組みを見ていきたいと思います。そして協調フィルタリングの利点・欠点についてもまとめていきますよ！
:::

アマゾンで自分にぴったりの商品がオススメされたりスマートニュースで自分に合った記事が表示されるようになったり・・・

世の中では、一人一人へのパーソナライゼーションが進化して至る所でレコメンドが行われるようになりました。

そんなレコメンドロジックを支える手法である**協調フィルタリング**について、見ていきたいと思います。

:::talk{who="umatan"}
協調フィルタリングは現代のパーソナライゼーションを支える非常に重要な手法だよ！
:::

以下のYoutube動画でも詳しく解説しています！

::youtube{#Ex1Md9dZuE8}

類似度の計算方法と、Pythonでの実装は、以下の動画でも解説しています！

::youtube{#HZxsO6m4WVs}

::youtube{#um5SgBM2Xgo}

## 協調フィルタリングとは

![](/wp-content/uploads/2019/04/52ceff2ccf51b6465679ab4c976fc8b0_s.jpg)

協調フィルタリングとは、購買や評価の履歴からユーザー同士（またはアイテム同士）の類似性を計算しレコメンドを行う手法です。

つまり、同じような趣味・嗜好を持っている人は同じようなモノに興味を持つだろうというロジック。

ざっくり言うと、Aさんはお店でビールとキムチとティッシュを買いました。Bさんは、ビールとキムチを買いました。そんなBさんはティッシュも買ってくれる可能性が高いからティッシュもオススメしよう！という感じ（ざっくりすぎ笑）

実際のところは以下のような表にユーザー別の商品購買情報が並んでおり、

<table cellspacing="0" cellpadding="0" class="table">
<tbody>
<tr>
<td valign="middle"></td>
<td valign="middle"><span>ビール</span></td>
<td valign="middle"><span>キムチ</span></td>
<td valign="middle"><span>ティッシュ</span></td>
<td valign="middle"><span>・・・</span></td>
</tr>
<tr>
<td valign="middle"><span>ユーザー</span><span>A</span></td>
<td valign="middle"><span>1</span></td>
<td valign="middle"><span>1</span></td>
<td valign="middle"><span>1</span></td>
<td valign="middle"></td>
</tr>
<tr>
<td valign="middle"><span>ユーザー</span><span>B</span></td>
<td valign="middle"><span>1</span></td>
<td valign="middle"><span>1</span></td>
<td valign="middle"><span>0</span></td>
<td valign="middle"></td>
</tr>
<tr>
<td valign="middle"><span>ユーザー</span><span>C</span></td>
<td valign="middle"><span>1</span></td>
<td valign="middle"><span>0</span></td>
<td valign="middle"><span>0</span></td>
<td valign="middle"></td>
</tr>
<tr>
<td valign="middle"><span>・・・</span></td>
<td valign="middle"></td>
<td valign="middle"></td>
<td valign="middle"></td>
<td valign="middle"></td>
</tr>
</tbody>
</table>

ユーザーAとユーザーBの購買データからユーザーの類似度（相関関係）を算出し、それを基にレコメンドを行います（ユーザーベースの協調フィルタリング）。

またアイテムベースの協調フィルタリングは、アイテム同士の類似性をユーザー購買情報から導き出します。

<table cellspacing="0" cellpadding="0" class="table">
<tbody>
<tr>
<td valign="top"></td>
<td valign="top"><span>ユーザー</span><span>A</span></td>
<td valign="top"><span>ユーザー</span><span>B</span></td>
<td valign="top"><span>ユーザー</span><span>C</span></td>
<td valign="top"><span>ユーザー</span><span>D</span></td>
</tr>
<tr>
<td valign="top"><span>ビール</span></td>
<td valign="top"><span>1</span></td>
<td valign="top"><span>1</span></td>
<td valign="top"><span>1</span></td>
<td valign="top"><span>1</span></td>
</tr>
<tr>
<td valign="top"><span>ティッシュ</span></td>
<td valign="top"><span>1</span></td>
<td valign="top"><span>1</span></td>
<td valign="top"><span>1</span></td>
<td valign="top"><span>0</span></td>
</tr>
</tbody>
</table>

AさんとBさんとCさんがビールとティッシュを買っているなら、ビールとティッシュは類似性が高いと考えられその上でビールを買ったDさんにティッシュもレコメンドするというもの！

商品の特徴が似ているものを勧めるコンテンツベースのレコメンドだと、ビールやキムチとティッシュは商品として類似していないのでレコメンドされませんが、協調フィルタリングを使えば、ユーザーの類似性を算出し、新たな商品との出会いを創出することができるのです。

## 協調フィルタリングの利点

![](/wp-content/uploads/2019/03/a94310ed4de4a08528a026f0badfdb2f_s-e1556972696222.jpg)

それでは、協調フィルタリングにはどんな利点があるのでしょうか？

### セレンディピティ（偶然の出会いがある）

自分と同じ趣味・嗜好を持っている人の商品がレコメンドされるため、自分が全く知らなかった商品との出会いが発生します。

ルールベースレコメンドだと、面白みのないありきたりのレコメンドに落ち着いてしまいます。

### 多くの人に画一的ではないレコメンド配信が可能

行動ベース・ルールベースだとどうしても同じようなレコメンドが走ってしまいますが、協調フィルタリングなら大規模ユーザー・大規模商品を抱えるサービスであっても個人に寄り添ったレコメンドを自動で行うことが可能です。

## 協調フィルタリングの欠点

![](/wp-content/uploads/2019/05/af0d3191cf5dcb300654db5edd754429_s.jpg)

さて、そんな協調フィルタリングですがいくつか欠点もあるんです。

### 類似品をレコメンドしてしまう可能性がある

協調フィルタリングでは、同じ商品の色違いをレコメンドしてしまうなどの可能性があるため、注意が必要です。

### マイノリティ・新ユーザーへの精度が悪くなる

同じ傾向を持っている人が他にいないユーザーや、新たに登録したばかりのユーザーには精度良くレコメンドすることができません。

### 新しい商品はレコメンドされづらい

まだ購入されていない商品はレコメンドされません。そのため結果的に新しい商品はレコメンドされにくくなってしまいます。

これらの問題はコールドスタート問題と呼ばれます。以下の記事で詳しく解説していますのでチェックしてみてください！

<https://toukei-lab.com/cold_start_problem>

## 協調フィルタリング　まとめ

協調フィルタリングは、ユーザー同士の類似度を基にレコメンドを出し分けるロジックで様々なサービスで使われています。

ただ、ここで紹介したようにいくつかの欠点があることも頭の片隅に置いておきましょう！

個人的には完璧なレコメンドというものはユーザーにとってベストではないと思っていて、ある程度無秩序な方がユーザー満足度は高い気がしています。

本当に自分にぴったりのモノだけレコメンドして欲しいなら100％、ある程度関係ないものも見てみたいなら50％というようにユーザーがレコメンドの精度を調節できれば良いなと思っています。

余談でしたが、協調フィルタリングについて簡単に理解していただければ幸いです。

協調フィルタリングの仕組みをもっと知りたい方は以下のスタアカのレコメンドロジックコースをチェックしてみてください！

:::box
[業界最安級AI特化スクール「スタアカ」：レコメンドロジックコース](https://toukei-lab.com/achademy/courses/recommend/)
:::

また[Udemy](/udemy-review)でレコメンド・協調フィルタリングが学べるコースも公開していますのでぜひ興味のある方はチェックしてみてください！

:::box
**【Python×協調フィルタリング】レコメンドで使われる協調フィルタリングのアルゴリズムを学びPythonで実装！**

[![Udemy_Recommend](/wp-content/uploads/2024/01/Udemy_Recommend.jpg)](https://www.udemy.com/course/python-recommend/?referralCode=1A1A6B462DF5AD0FA1DA)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

レコメンド・協調フィルタリングの基礎を理解したいのであればこれ！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-recommend/?referralCode=1A1A6B462DF5AD0FA1DA" note="＼30日以内なら返金無料／"}

「[Udemyのコース一覧](/my-udemy-course)」に講師クーポン「FLSHDGEJURXF」を公開していますのでそちらをご利用いただくと最大90%オフ以上の割引価格になります！
:::