全てのプロダクトマネージャーが知っておくべき５つの機械学習の限界と対策

![rawpixel-192251-unsplash.jpg](https://qiita-image-store.s3.amazonaws.com/0/124978/a733a027-7e46-ba8d-9f0e-947b41104db8.jpeg)


機械学習とはそもそも現実の世界のユーザーの抱える問題を解決、もしくはユーザーの要望に応えるために使うツールであるはずです。このことを理解せずに、このクールなAIテクノロージーをまずは自分のプロダクトに組み込んでみようとするとおかしなことになり、最終的にはお金と時間の無駄になります。

シリコンバレーは特にですが、もちろんそれ以外の場所からも毎日のようにAIを使った新しいスタートアップが出てきています。しかしその中には、たしかにテクノロジー的にはすごいのですが、結局誰の問題も解決していないために、結局はそのテクノロジーを目当て、もしくはそれより最悪の場合は、アクハイアーといって、単に人材目当ての買収で終わってしまうというケースをよく見かけます。そうならないためにも、機械学習を使うことが目的になるのを避け、何の問題を解決しようとしているのかを最初にしっかりと時間をかけて定義するべきです。

今日は、Facebookのプロダクトマネージャーの[Uzma Barlaskar](https://twitter.com/uzmabarlaskar)が最近、プロダクトマネージャーが機械学習について知っておくべきことを”Data Science for Product Manager"という以下の2つのブログポストにまとめていたので、ここで紹介したいと思います。

* Data Science for Product Manager Part 1 - [Link](https://towardsdatascience.com/machine-learning-for-product-managers-part-i-problem-mapping-5436132c3a6e)
* Data Science for Product Manager Part 2 - [Link](https://towardsdatascience.com/machine-learning-for-product-managers-part-ii-ml-skills-ce7c3cee3246)

以下、要約

---

## 機械学習のアルゴリズムが役立つ７つの問題

機械学習は基本的にパターン認識を必要とする問題の解決に役立ちます。大抵の問題は以下の６つのタイプに分けることができます。

**1. ユーザーがたくさんの情報の中から必要なものを探すのに困っている場合**

Googleなどのサーチがいい例です。裏ではいくつもの機械学習のアルゴリズムを使っています。さらに多くの情報を自動的にカテゴリー分けするのにも使えます。そうすることで、例えばこれは政治に関しての記事である、テクノロジーの中でもGitを使った話であるなどといった具合です。

**2. 複雑なものを認識したい場合**

自動運転は周りにある複雑な状況を認識しなくてはいけません。写真のサービスであればそうしたイメージを認識し、そこから場所、人、その他の情報を自動的に抽出する必要があります。こうした複雑な認識には大量のデータをパターン認識のアルゴリズムに与えることが効果を発揮します。

**3. 予測とフォーキャストをしたい場合**

ユーザーが目にした記事を好きになるかどうか、ユーザーがサブスクリプションをキャンセルするかどうかといった予測をしたい時に機械学習が役に立ちます。また、次の3ヶ月の売上はどうなるか、将来の在庫はどうなるか、ユーザーのアクセスは地域ごとにどうなっていくのか、などといったフォーキャスティングをしたい場合にも使えます。

**4. 異常値を検出したい場合**

何か普段と違う動きをしているものを検出することに使えます。機械学習はパターン認識が得意なので、よくあるパターンだと認識されているものとマッチしない行動パターンを異常として検出することが出来ます。クレジットカードの不正利用だったり、社内システムへの侵入だったりといった具合です。

**5. 意思決定を助けたい場合**

人間が最終的に意思決定を行う場合に必要な情報をレコメンデーションとして提案したい場合です。AmazonやNetflixが、それまでのユーザーの購買や鑑賞経験のデータの中にあるパターンをもとに、本や映画をレコメンドするときの仕組みがこれに当たります。

**6. 人間と言葉を使ってコミュニケートする必要がある場合**

人間とコミュニケーションを行うサービスを作っている場合は自然言語処理をするために機械学習を使う必要があります。Alexa、Siri、Google Assitantなどのアシスタントテクノロジーはまさにこのケースで、人間の言葉を実行可能なタスクに翻訳します。

**7. 拡張現実などを使って新しい体験を作り出したい場合**

例えばSnapChatが顔認識のアルゴリズムを使って顔をクリエイティブに加工するSnapChatフィルターと言う機能を提供していますが、今までにはない新しいユーザー体験を作り出す時に役立ちます。



## 知っておくべき５つの機械学習のアルゴリズムの限界

プロダクトマネージャーにとって重要な５つのスキルがあります。それは、顧客視点とデザイン、コミュニケーション、コラボレーション、ビジネス戦略、テクノロジーに対する理解です。ここ最近のように機械学習を使うことが多くなってくると、なおさらテクノロジーに対する理解がより重要になってきます。機械学習に対する深い理解がないといいプロダクトマネージャーになれないというわけではないのですが、それでもある程度の理解、つまり機械学習がどう作用するのかくらいの理解はプロダクトに関する良い意思決定のためには必要になってきます。

機械学習のアルゴリズムがおよぼすインパクトと限界を理解しておくことで、同じカスタマーの問題でも、プロダクトデザインを通して解決するべきなのか、それとも機械学習の手法を使って解決すべきなのか判断することができます。そこで、全てのプロダクトマネージャーが知っておくべき5つの機械学習のアルゴリズムの限界をまとめました。


**1. データの中にあるバイアス**

あなたが対象にしているユーザーを代表するようなデータがあることが重要になります。このデータのバイアスの問題は機械学習のプロジェクトをやるとほんとによく出てくる問題です。大げさな話ですが、例えばコンバージョンを予測する時にそもそもコンバージョンしている人たちがあまりにもいないときには自分たちの持っているデータはコンバートしていない人だらけです。それでは、誰がコンバートするかを予測するのはそもそも難しいでしょう。別の例ではGoogleが黒人をゴリラだとしてラベル付けしてしまったことがあります。これも元になるデータに黒人の人達の写真のデータが十分に入っていなかったからでしょう。

データの収集の仕方に問題がなくとも、そもそも手元にあるデータにバイアスが入っている場合もあります。IBMワトソンにUrban Dictionaryのデータを与えて言語を学習させた結果、人を罵るものとなってしまったことがあります。意図していたのは礼儀正しい言葉使いだったのですが、データの中に罵る言葉が入っていたので、コンピューターもそれを学んでしまったのです。これは、そういったデータを前もってクリーンアップしておく必要があったという例です。

**2. プリシジョンとリコールのトレードオフ**

最近、私のチームがやっている予測と同じタイプの予測をするプロダクトを作っているチームと話す機会がありました。両方ともユーザーの良くない行いを予測するといったものだったのですが、それぞれのチームの目的は違いました。私のチームは悪いユーザーだけを取り払いたく、良いユーザーは私達のサービスを使い続けてほしいので、間違って取り除くことがないようにしたかったのです。ですので、私達にとってはプリシジョンが重要なのです。（悪いと予測したときにそれが正しい、つまり結果として本当に悪いユーザーであるという確率。）別のチームは、悪いユーザーには絶対にサービスを使って欲しくないという要望がありました。たとえ、それが実はいいユーザーを取り除くことになってしまったとしてもです。つまり彼らにとってはリコールが重要なのです。（本当に悪いユーザーを当てることが出来ている確率。）プリシジョンとリコールはいつもトレードオフになる関係で、どっちかが良くなるとどっちかが悪くなることが起きるので、目的を理解しておくことが重要になるのです。

**3. コールド・スタート**

これはまだ十分なデータが無い時にどうアルゴリズムは予測すればいいのかという問題です。

２つのパターンがあります。まずはユーザーに関してのコールドスタートから。

例えば新しいユーザーが来た時にその人に関するデータはまだ何もないので、何をレコメンドすればいいのかわからないという問題です。これを解決するにはいくつかのやり方があります。新しいユーザーが最初にやってきた時にいくつかの質問をするのです。なんの映画が好きかなどと行った具合です。または他に利用可能なデータを使ってできる範囲で予測すると言うやり方です。例えばカリフォルニアから来ているユーザーであれば、同じ地域でのベスト１０の映画をレコメンドすることが出来るかもしれません。

次に、プロダクトなどのアイテムに関してのコールドスタートの場合です。

新しいアイテム、例えばNetflixの場合は新しい映画のタイトルが入ってきた場合に、まだ、誰も見ていないのでこの映画に関するデータが全くない状態なので、誰にレコメンドすればいいのかわかりません。

一つの解決策として、人間による注釈付け（アノテーション）があります。これはStitchfixの例でもあったように、アイテムに対してその分野の専門家がカテゴリーとなるタグを付けていくことで、そうしたカテゴリーに興味を持っているユーザーにレコメンドしやすくなります。

別の解決策として、アルゴリズムを使うこともできます。これはA/Bテストのようなもので、正確にはMulti Armed Banditというアルゴリズムを使ってテストすることになるのですが、新しいアイテムをランダムにユーザーに見せ始めその時の結果によって、このアイテムに興味あるユーザーのセグメントをすばやく学び始めると言うやり方です。

異常値検出のシステムはこのコールドスタートの問題によって混乱させられることがあります。例えば、みなさんも経験したことがあるかもしれませんが、初めての旅行先でクレジットカードが急に使えなくなってしまったりするとか、新しい社員がデータベースにアクセスしようとした時に間違えて、アカウントがロックされてしまったりといった具合です。こうした、フォルス・ポジティブ、つまり問題ではないのに問題だと予測モデルが判断してしまった場合の問題を修正するためには次のトピックである、フィードバック・ループの仕組みをしっかりと作っておくべきです。

**4. モデルの検証のためのフィードバックループ**

機械学習のモデルを使ったプロダクトの中にそのモデルに対してのフィードバックを与えることが出来る仕組みを作っておくべきです。そうすることで実世界でのモデルの性能を検証し、さらに改善し続けるけることが出来ます。ユーザーがレコメンドされたニュースを無視したとか、もしくは逆にニュースを読んだとかと言ったようなフィードバックです。これは、ユーザーに明確にフィードバックしてもらうことも出来ます。よく見かける、「この記事が役に立ちましたか」という類のメッセージがこれに当たります。

**5. Exploration(冒険、探索)とExploitation(搾取、利用)**

Netflixが私がフットボールを見るのが好きなのがわかったとします。そうすると、レコメンデーションされるリストにはフットボールの試合やドキュメンタリーなど、関連の番組が入ってくるでしょう。そこでそうした中からいくつかを見たとすると、さらにもっとフットボール関連のものがどんどんとレコメンドされることになるでしょう。このタイプのアルゴリズムは発見したシグナルを利用して最適化するわけです。しかし、もちろん私はフットボール以外にも興味があります。例えばテクノロジーに興味があったりしますが、Netflixはテクノロジー関連のコンテンツをレコメンドしてくれません。これは、最近のメディアなどではフィルターバブルと言われていたりします。Facebookなどで特定のニュースに’いいね’を押しているとそうしたニュースばっかりでタイムラインがいっぱいになります。そうすると、それ以外のニュースや別の視点に目を触れることがなく
なってくるので、自分の好きなこと以外の視点が全くわからなくなるということです。

この問題を解決するためには、たとえ明確なシグナルがなかったとしても、ユーザーに冒険させるようなコンテンツを、システムがレコメンドする必要があるのです。それはランダムに決めることもあれば、自分と似ているユーザーの好みをもとに決めたりなど、いろいろとやり方はあります。

---

以上、要約

もしこれから、機械学習を使って既存の製品やサービスを良くしていこう、もしくはそれこそ新しい製品を作ろうとしてる場合は、自分でそういったアルゴリズムを使わないにしても、少なくとも本文に書かれていたような機械学習でできること、さらにその限界といったものを整理して理解しておくのが役立つと思います。

そして、最初にも書きましたが、いちばん重要なのは目的です。どの機械学習のアルゴリズムを使うとか、どのデータにアクセスするとかのディスカッションの前に、まずは何が目的なのか、どういった問題を解決しようとしているのかをはっきりさせておくべきです。

この目的が、プロジェクトを始めると出てくる様々な問題を解決していく時の指針になりますし、さらにその成果物を評価するための基準にもなるのです。



# アナリティカル・シンキングのトレーニング６月開催！

ビジネスリーダーがデータを使ってより良いビジネスの意志決定を行うためのフレームワーク、"アナリティカル・シンキング”のトレーニングを６月２６日に行います。興味のある方は、[こちらのホームページ](https://ja.exploratory.io/data-academy?utm_campaign=ds_for_pm&utm_medium=blog&utm_source=qiita)に詳しい情報がありますので是非ご覧ください。