〈データ分析〉タスクの問題設定について考える。
こんにちは。くにです。
今回は、データ分析や機械学習タスクの問題設定について考えてみます。
ここでは、ビジネス上の課題がある程度定まっているときに、技術的な問題に落とし込む場面を想定しています。ビジネス課題自体が明確でないことも多いのですが、それは別の機会に。
この記事では、問題設定の位置付け、スキル向上策、ヒントを書きました。
あくまで個人的な経験によるものなので、体系的なものではありませんし、所属する組織とは関係のない話ですので、その点ご諒承ください。
問題設定とは何か
問題設定とは、データを使って明らかにしたいことを明確にすることです。機械学習技術を使って解きたい問題を設定することと言ってもよいかもしれません。
問題設定はプロジェクトの方向性を定めるもので、データサイエンティストにとって重要なスキルになります。問題設定ができるということは、分析デザインを行ってプロジェクトを引っ張ることができる、ということに相当します。
なぜなら、問題設定を行うときには、分析アプローチ、実験手順、評価方法をおおよそ頭の中で描けている必要があるからです。複数人で実施するプロジェクトであれば、その実験を行えるメンバーが頭に浮かんでいることでしょう。
問題設定スキルを向上させるには
さて、この問題設定はどうしたらできるようになるでしょうか。
多くの人からこの質問を受けてきましたが、そのたびに答えに窮していました。「実プロジェクトを通して経験を積んでいくと、いつか感覚が掴めるようになりますよ。」と答えていました。実際、自分自身も問題設定ができるようになったポイントはよく分からなかったからです。
参考書を紹介してほしいとよく言われました。しかし、問題設定の確かな手順を示す書籍は思い当たりませんでした。そこで、以下のような参考書を薦めてきました。自分も役に立ったからです。
・戦略的データサイエンス入門,オライリー
・データ分析プロセス,共立出版
・意思決定のための「分析の技術」,ダイヤモンド社
・データサイエンス講義,オライリー
これらの本は、手法やコードをカタログ的に並べたものでなく、概念やプロセス、評価方法、データサイエンスの全体像を解説しています。このため、私が問題設定や分析デザインを考え始めたときに、大変参考になりました。しかし、問題設定や分析デザインをやったことがない人にこれらの本を薦めても、なかなか響きませんでした。やはり、実践と共に学ばないと難しいというジレンマがあるようでした。
いろいろ考えた挙げ句、今は次のようなアドバイスをしています。
自分の頭で考えて仮説を作り、トライアンドエラーを繰り返すというのが一番効果的だという結論に達しました。つまり、ビジネス課題が定まっているとし、その課題に対する問題設定の仮説を考え、実際に分析から考察までやってみるというものです。分析に至らないとしても、実問題に対して仮説を立てることを繰り返すことで、問題設定力は確実に向上することでしょう。
スキルアップのための量稽古作戦(私の場合)
私自身、問題設定スキルが大きく向上したのは、問題設定を短期間に大量にこなしたときでした。数ヶ月で100以上やったと思います。このときのことを少し書いてみます。
研究所からビジネスサイドに移った直後、初めは分析チームでなく、プリセールス兼マーケティングの部隊に配属されました。当時はAIブームが唐突にやってきた時期で、顧客や社内の営業から大量の問い合わせが来ていました。そこで、毎日のように顧客のところにき、AI技術(といっても大半は機械学習)や事例を紹介しつつ、顧客課題をインタビューしていたのでした。
位置付けとしてはセールスでしたので、ヤワヤワなディスカッションでした。顧客もAIに興味津々ですから、情報を知りたいと思っていました。しかし、技術が妙に宣伝されていた時期なので期待値が上がりすぎて、実に様々な質問や要望が飛んできました。
例えば、以下のような様々な質問や要望がやってきました。(いろいろと詳細は変えてあります。)
例1 「社内のノウハウを共有できていない。人がほしいと思う情報を問い合わせたら探してくれるインハウスのシステムを提案してほしい。」
例2 「BtoBの出荷準備作業を効率化したい。画像データを使って作業を自動化できないか?」
例3 「営業力を底上するためにハイパフォーマの行動特性を解析して、そのノウハウを展開したい。」
例4 「マーケティングで需要予測を昔からやっている。その予測精度を向上するために、新しいアプローチを提案してほしい。」
これらの質問に正確に答えるには、業務の詳細を把握し、データを見てみる必要があるでしょう。インハウスの分析者ならそういった手を打てると思います。しかし、私達のように、外部から支援する場合、意思決定者や現場の方へインタビューを続けながらアプローチを練り上げる必要があります。
しかし、このようなアクションをとるためにも、初回のインタビューである程度、問題設定の見込みを付けておく必要があります。会話の中で考え、質問して引き出しながら、想定アプローチと次のアクションを探るのです。
まさに、会話がスタートする瞬間から問題設定を行うことになります。私は、異動直後、これが上手くできず相当に悩んでいました。しかし、量をこなすことで自然とできるようになっていました。
例1について考えてみましょう。
表面的には情報検索タスクのように感じますが、これだけではまだわかりません。共有できてないノウハウとは何か、どのような課題を引き起こしているのか、ということを引き出して初めて問題の輪郭がはっきりします。
例えば、そのノウハウが事務手続きや開発文書であれば、第一段階としてエンタープライズ検索システムを見直すことになるでしょう。もし、一般的な索引を用いた検索処理で上手くいっていないようなら、何かしらの手段を用いて、検索文に対して文書をスコアリングするようなタスクになるかもしれません。利用形態によってはレコメンド技術の活用も有望でしょう。
一方、そのノウハウがある業務のトラブルシューティングだった場合はどうでしょうか。これは単純な検索では難しいかもしれません。業務の特性、トラブルの発生頻度と影響度、そのトラブルに対応できる人材の育成にかかる時間等を深く調査する必要があります。複雑な知識を有するようなものなら知識ベースを構築する手もありますが、メンテが大変そうです。オントロジーと検索の組み合わせになるかもしれません。
==
こちらに書いた量稽古は、経営コンサルタントの大前研一さんが、自身のスキル向上のためにやったトレーニングに似ていると思いました。大前さんは、経営の知識がない状態でエンジニアから経営コンサルタントに転職してしまい、大いに困ったといいます。そこで、電車の中で仮想的な経営者からの問いを作って、それに対するアプローチを考える練習を毎日行ったのです。大量のケーススタディをこなすことで、経営における問題設定とコンサルティングアプローチの構築スキルを習得されたのでした。
問題設定の本質は異質なものの接点を見つけること。
問題設定のスキル向上には量稽古。
でも、何かヒントになることはないか。これをずっと考えてきました。
確かに、問題設定を一流の品質でできるようになるには、ドメイン知識、技術に対する広い知見、実務経験が必要です。しかし、そうはいっても、問題設定は人が何らかの形で情報を整理して行っています。そこには、何か特有の情報整理術があるのではないか、という問いかけです。
そこで、こういう考えに至りました。
「問題設定には、異質なものの接点を見つける力が必要だ。」
ビジネス課題とデータ分析・機械学習。業務と技術。これらはある意味で異質なものです。ビジネス課題を解決するためにデータ分析を行うとき、データ分析はその手段のひとつに過ぎません。
つまり、問題設定とはビジネス課題と手段のフィッティングを行っているようなものです。それらを繋ぐためには、その接点をどうにか見つけなくてはなりません。「目利き」と言ってもよいでしょう。もちろん、接点がなかったのなら、手段としてのデータ分析は不要だったということになるでしょう。
データ分析タスクの場合、この接点はビジネス(業務)、データ、技術が交差するところに現れます。図にすると以下のような形ですね。
この接点を見つけるとき、エンジニアにとって特に難易度が高いのはどこでしょうか。私は、ビジネス(業務)と技術の接点を見つけるのが最も難易度が高いと考えています。なぜなら、ビジネスは生物で形は様々ですが、多くの技術は数学的な論理の上に成り立つものだからです。そして、両者は制約条件を多く持っていますが、それらは全く違うものでしょう。
この異質なものの接点を見つけるには、それぞれを何らかの形で抽象化する必要があります。実は、熟練のデータ分析者が問題設定を行う時、両者の情報を暗黙的に抽象化しているのだと考えています。
ここで再び、上であげた例の一つを見てみましょう。
例1 「社内のノウハウを共有できていない。人がほしいと思う情報を問い合わせたら探してくれるインハウスのシステムを提案してほしい。」
この例では、ノウハウの対象によって検索タスクになったりそうでなかったりしますが、このように抽象化することである程度接点が見つかるでしょう。
【ビジネス】社内のノウハウを共有
⇒ノウハウ=暗黙知 or 参照文書 or … →「知識」or「情報」?
⇒共有=能動的に伝える or 誰かが探す or … →「探索」or 「伝達」?
【技術】情報検索技術 / レコメンド技術
⇒NLPによる検索各種 →教師なし or 教師あり(質問応答) or …
⇒知識ベース →オントロジー and/or RDFストア(ネットワーク)
⇒レコメンド →履歴の行列分解 or 類似度判定 or モデルベース or …
まとめ
この記事では、データ分析や機械学習タスクにおける「問題設定」を取り上げました。その難しさ、スキル向上策、ヒントを個人的な経験を元に整理してみました。
最後に書いた「抽象化」という作業はやはり経験が物を言う領域です。しかし、暗黙知自体を整理することで、何らかヒントになる情報を提供できるのではないか、と考えています。まだまとまっていませんが、以下のようなツイートを投げかけてみました。
いつかこれらを整理して、記事にしたいと思います。
最後まで読んでいただき、ありがとうございました!