SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社 新刊紹介(AD)

業務で機械学習を使うためには、まず課題を洗い出す~『現場で使える!Python機械学習入門』より

  • X ポスト
  • このエントリーをはてなブックマークに追加

 翔泳社では5月24日に『現場で使える!Python機械学習入門』を発売しました。今回本書の「CHAPTER2 機械学習を実務で使う」から、機械学習を利用数前の段階、そもそも機械学習で解決すべき課題を洗い出すための方法について紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加
本記事は『現場で使える!Python機械学習入門』の「CHAPTER2 機械学習を実務で使う」からの抜粋です。掲載にあたり、一部を編集しています。

2.1 業務で機械学習を使う

 業務で機械学習を用いる際には、「課題を明らかにし、定式化する」ことが重要です。課題を機械学習で解決できる段階まで落とし込む例について解説します。

2.1.1 機械学習について

 近年ではデータ処理技術の向上や計算機の処理能力の向上の影響、さらには活用可能なデータの増加に伴い、「AI」、「人工知能」などの用語が一般大衆の人たちにも広がっています。そのため、「AIを使いたい」という要望が、技術者や研究者に限らず、経営層やその他非技術職から出ることも多くあるという話を耳にします。筆者も実体験として、人工知能や周辺技術と関わってこなかったような方々から「人工知能(AI)を用いて面白いことをしたい」などの相談を受けたことがあります。

 しかし、そういった事例では、「人工知能(や機械学習)を導入すること」が目的になっていることが多く、人工知能(や機械学習)は手段であるという視点が欠けています。また、データさえそろえば集計のみで済む、もしくは、A/Bテストのような比較で解決できる問題であったり、そもそも解決不可能な問題であることも散見されます。本書で紹介する範囲においての機械学習では、人間によって定式化された入力に対して、定式化された出力をすることしかできません。

2.1.2 入出力の定式化

 まず、図2.1のように解くべき問題が「何を入力として」「何を出力するか」をイメージする必要があります。入力されたデータを処理(計算)し、任意の出力を出す関数をモデルと呼びます。株価予測の問題であれば「現時点より前の株価の時系列での推移」を入力に、「特定の日での株価」を出力すればよいでしょう。

 もし、「AIでお金儲けをしたい」という目的であれば、株価予測で事足りるかもしれません。入力が複雑だったり、得られた出力が的確であったり、人間味があれば人はシステムに対して「知能」や「知性」を感じることでしょう。

図2.1 様々な「入力」「モデル」「出力」
図2.1 様々な「入力」「モデル」「出力」

 繰り返しになりますが、あくまで機械学習は問題を解くための手段であり、解くべき課題および手法のあたりをつけ、定式化することが非常に重要です。

 機械学習の理論に入る前にいくつか実際に起こりうるであろう課題の例を示すことで以降の理論の理解の助けになればと思います。

2.1.3 課題を明らかにする

 さて、ビジネスの場で機械学習を用いることを考えていきましょう。

 例えば、あるサービスの売上を最大化するために、「有料会員数を伸ばしたい」という問題設定があったとします。この課題を解決する際に機械学習を応用することを考えます。まず、制約条件なしに有料会員を伸ばすだけであれば広告費を大量に投下するなどの方法で解決できる問題かもしれません。多少ブレイクダウンし、「(広告費の投下ではなく)サービスの質を向上させることでサービスの有料会員数を伸ばしたい」にするとよいですが、「サービスの質」のような抽象的な問題は、現代の機械学習で直接解くには適していません。

 そこで例えば、「解約数を減少させることでサービスの有料会員数を伸ばしたい」まで課題を定式化できれば、ある程度機械学習で解決可能な領域まで持っていくことができます(図2.2)(この場合は「月(or週)の解約数」が改善のために負うべき指標となります。世間ではこれをKPIと呼びます。

◆参考
LeanAnalytics―スタートアップのためのデータ解析と活用法』(アリステア・クロール、ベンジャミン・ヨスコビッツ著、林千晶解説、エリック・リース編集、角征典翻訳、オライリージャパン、2005年1月)。

 課題のブレイクダウンの仕方などは、『イシューからはじめよ――知的生産の「シンプルな本質」』(安宅和人著、英治出版、2011年4月)などのビジネス書を参考にするとよいでしょう。

図2.2 課題の洗い出し
図2.2 課題の洗い出し

2.1.4 実問題での例

 それでは、「解約数を減少させる」問題を機械学習で解くことを考えてみます。まず、過去の会員の行動(これを説明変数などという)をもとに「解約した」か「継続した」かの2値(これを目的変数などと呼ぶ)、もしくは特定の群の継続確率を予測するモデルを作成します。

 説明変数は、

  • 会員が利用をはじめた期間
  • 会員がサービスを知ったきっかけ
  • 会員が特定の行動を取った回数

などが考えられます。

 ここで注意していただきたいのが、例えばデータが少ない、サービスを受けた期間が短い、サービスを使いはじめるに至った経路の種別が少ないなどの場合には、単純な集計で明らかな結果が出るなど、機械学習を必要としない場合もあります。

 例えば表2.1では明らかにキャンペーンBの離脱率が低いという判断ができます(人数が増えると変化する場合もありますので注意が必要です)。

表2.1 経路による離脱率(集計のみで明らかな差が出る場合)
表2.1 経路による離脱率(集計のみで明らかな差が出る場合)

さらに、機械学習を用いて課題を解決するとなった場合に、手法の選定においても、

  • 解約が予測される会員向けにアクションする
  • 解約する前の特定行動を改善する

など、機械学習導入後のアクションによって異なります。

 前者の場合には予測精度が高いモデルを選定すればよいですが、後者の場合には決定木やロジスティック回帰など解釈性の高いモデルを利用するほうが適しています。そして、実際にモデルを構築した後も、解約数が減少しているかを検証する必要があります。実際に解約率を予測する方法を次の節で解説します。

 さらに、注意すべき点としては、解約数のみに焦点を絞ると、

  • クーポンを積極的に利用している
  • 割引商品を購入した回数

などの効果が高くなる場合もあります。この場合は、サービスをそもそも値下げする必要などが出てくるなど、解約数は減少しても、売上自体に悪影響が出る可能性があります。

 また、そもそもモチベーションが高いユーザ(多様な行動をよくするユーザ)は解約しづらいという結果になった場合にも、行動数をサービス側からのアクションで高くすることは難しく、注意が必要です。

 また、「今まで人手で行っていた作業を自動化して、コストカットしたい」も機械学習で解くことのできる課題です。今後の章で解説しますが、教師あり学習で分類を行うことで、スパムメールの判定などの文書分類や、製品の異常値判定なども可能になります。

 他にも、インターネット広告においてユーザがクリックするかどうかを予測したい場合には、教師あり学習を用います。また、ユーザアンケートで回答したユーザのグルーピングを行うために、教師なし学習を用いてユーザをクラスタリングするなど、解決したい問題の設定により手法の合う/合わないがあります。

参考文献

以下の書籍も参考にしてください。

●『Lean Analytics: Use Data to Build a Better Startup Faster』(Alistair Croll, Benjamin Yoskovitz, O'Reilly Media, March 2013)

●『Data-Driven Metric Development for Online Controlled Experiments: Seven Lessons Learned』(Xiaolin Shi*, Yahoo Labs; Alex Deng, Microsoft KDD '16)

●『イシューからはじめよ̶知的生産の「シンプルな本質」』(安宅和人著、英治出版、2010年11月)

サンプルデータで教師あり学習、教師なし学習

 本書ではこのあと、サンプルデータを用いて教師あり学習と教師なし学習で課題解決を試みていきます。実際に機械学習を活用する方法が気になる方はぜひお買い求めください!

現場で使える!Python機械学習入門

Amazon SEshop その他


現場で使える!Python機械学習入門
機械学習アルゴリズムの理論と実践

著者:大曽根圭輔、関喜史、米田武
発売日:2019年5月24日(金)
価格:3,456円(税込)

本書について

本書は、機械学習の基本と実践手法について解説した書籍です。機械学習の開発環境の準備、実際の現場での利用方法、そしてブラックボックス化しがちな理論部分もしっかりフォローしています。

 

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11532 2019/05/31 07:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング