こんにちは、荒井(@yutakarai)です。
機械学習のビジネス導入プロジェクトの成功のための第一歩は「解決したい問題はなにか」を明確にすることです。
便利なライブラリも続々出てきていて、数学のバックグラウンドがたいしてなくてもそれなりのAIシステム(機械学習や深層学習を含む)が実装できるようになってきました。
ライブラリ等を利用することで強力できらびやかなアルゴリズムを扱うことができますが、そもそも間違った問題を解決しようとしていたら、結果は無意味なものになってしまいます。
今回は、機械学習を活用するために問題を定義する方法を紹介します。
問題定義のフレームワーク
問題を定義するための、簡単なフレームワークを紹介します。
このフレームワークは、問題の要素と動機、そしてその問題の解決に機械学習が適切かどうかを判断するのに役立ちます。
「フレームワーク」と言っても大そうなことではなく簡単に言ってしまえば、以下の3つの質問に対する答えを考えてみましょう、ということになります。
ステップ1:問題は何か?
ステップ2:なぜその問題を解決する必要があるのか?
ステップ3:どのように問題を解決するか?
次にそれぞれのステップについて解説します。
ステップ1:問題は何か
最初のステップは、問題は何かを知ることです。
問題を知るためのいくつかの方法を紹介します。
話し言葉で表現してみる
なんとなく頭の中にイメージしているだけでは、つかみどころのない不明瞭な状態のままです。
不明瞭なものを明確にするために、言語化すると良いです。
まずは、何が問題かを自分の友人や同僚に説明しているように表現してみてください。
これによって、問題の範囲を知るための手がかりが得られます。
それと同時に、問題の理解を共有するために使う表現の基本部分が見えてきます。
例:Twitterで、良い内容だと思ってツイートしてもリツイートされない
記述形式で表現してみる
「Machine Learning」の著者のトム・ミッチェルは、機械学習の形式について以下のように説明しています。
コンピュータプログラムは、Pによって測定されるようなTにおけるタスクにおけるその性能が、経験Eによって改善される場合、あるクラスのタスクTおよび性能測定Pに関して経験Eから学習すると言われる
、、、なんだか、意味がわかるようでよくわからないですよね。
この形式をもとにして、問題を記述形式で表現してみます。
問題についてのT、P、Eを定義します。
例えば:
タスク(T):そのツイートについて、リツイートを得れるかどうか分類する
エクスペリエンス(E):リツイートされるツイートと、リツイートされないツイートを知る
パフォーマンス(P):予測したツイートの中から正しく予測されたツイートの数をパーセンテージで表す(分類精度を算出)
仮説リストを作る
次に、問題に関する仮説のリストを作成してみます。
これは、今までの経験から得られた知見や勘のようなものです。「確実ではないかもしれないけど、〜〜〜かもしれない」程度の情報を列挙します。
例えば以下のような感じです、。
・ツイートに使用されている具体的な単語が関係するのではないか
・リツイートの対象となる特定のユーザーは関係ないかも
・リツイートの数は重要な要素かもしれない
・古いツイートは、最近のツイートに比べると予測しづらい
こういった自身が持つ情報を列挙しておくことで、問題の解決に役立てることができます。
前知識が完全にゼロの状態から機械学習システムにデータを入力してそこから結果を得るより、ある程度「ルール化できそうな」情報を前知識として整理しておいたほうが、時間やコストを削減することができるわけです。
ステップ2:なぜ問題を解決する必要があるのか?
次のステップは、なぜあなたはその問題の解決を望んでいるのか、なぜ必要としているのかについて深く考えることです。
問題を解決するための動機を考えてみましょう。問題が解決されたら、何がどう良くなるのでしょうか。
また、問題を解決することのメリットを考えてみることもおすすめします。
問題を解決することによるメリットは確実に享受できるでしょうか。
またメリットを享受できるのは誰でしょうか。
・自分個人
・部署
・会社全体
・経営陣
問題解決後に得られるメリットを整理して、上司や経営陣に提示することで、プロジェクトにかけられる時間と予算を確保することができるかもしれません。
ステップ3:どのように問題を解決するか?
最後のステップでは、問題をどのように解決するかを検討します。
収集するデータ、データを準備する方法、データの前処理、問題を解決するためのプログラムの設計方法、などを段階的に洗い出します。
このステップには、実行する必要のあるプロトタイプや実験が含まれています。
手動で実装されたプロトタイプのプログラムを使って、期待する精度の出力が得られるかを確認します。
機械学習を使って複雑な問題を解決しようとする前に、手動で指定された解決策を検討することが非常に重要です。
以前の記事でPoC(概念実証)について書きましたので、参考にしていただけたらと思います。
まとめ
今回は、問題の定義について紹介しました。
機械学習をビジネスに活用したいと考えた際は、今回紹介した内容をぜひ参考にしてみてください。