こんにちは。データアナリストの石丸です。普段の業務では、海外のデータアナリストと一緒に機械学習のPoC(実証実験)とかをよくやっています。先日ですが、このサイトの主のカズやんのご紹介で彼のYoutube動画に出演させてもらいました。

ちなみに観てない人はぜひ見てください!
機械学習とかデータサイエンス界隈の動向とか、データ分析初学者向けの話とかをざっくりしています。
出演させてもらったのですが、その中でデータ分析における「ドメイン知識」の重要性ということについて少し説明しましたが、尺の関係等もあり、上手く説明できなかったため、この場を借りてもう少し具体的にお話ししたいと思います。

ドメイン知識とは?

ドメイン知識とは、機械学習システムや統計技法を適用する対象ドメインの専門知識のことを指します。
車の自動運転だったら、エンジンが動いたりブレーキが効くメカニズム、ひいては交通ルール、地理情報のこと、ECサイトだったらどうすればCVR(コンバージョンレート)が上がるかだったり、トラフィック全般、サイトの客層に関する情報とかいったものがそれに当たります。こういったものは従来ならば経験者の知識をもとに運用されており、少し大げさかもしれないけれども、「匠の技」という風に言い換えることもできるでしょう。機械学習とかディープラーニングは究極的には、こういった人間の経験則を数学的に近似させて、人間と置き換えることを目標としています。まぁ、今のところあまり上手く行っていないというのが現実ではありますが。

データサイエンスの弱点

次に、「統計学」、「機械学習」、更には「データ分析」が何ができて、何ができないのかということについて話します。ここで結構、世の中一般で誤解が生じていると僕は思っています。もっと言えば世の中一般だけでなく、データアナリスト、データサイエンティストの間でも相当数の人間がしっかりと理解していないです。ちなみに、本エントリーでは「統計」とか「機械学習」をごちゃ混ぜにして説明していますが、ややこしくなるので、それらの厳密な違いに関しては触れません。同じものだと思って読み進めてください。
はい。まず、何が弱点かっていうところからですが、データ分析や機械学習、統計は、人間の認知を超えて新しい発見をしてくれる天才的なテクニックではないということです。大抵の場合、人間が感づいていることを数値的に確認する時に役立つ道具でしかないと言っても過言ではないでしょう。もちろん人間が知らなかったようなデータのパターンを、機械学習のアルゴリズムが発見するとかはあるかもしれませんが、大方の場合、「過学習」という問題に収束します。これも説明は省くので興味ある人は調べてみてください。
世の中のAIとか機械学習に対する反応を見ていると、「シンギュラリティ」だとか「人間の能力を超える」だとか騒がれていますが、こういった言説の裏側にあるのは、機械学習が人間でも気づくことのできなかったようなパターンをデータの中から発見する魔法の道具という認識があるのだと思います。ここらへんは特に、「データマイニング」とかいう言葉が混乱を更に増幅している気がしています。統計学、機械学習は金脈を自動的にmine、つまり、掘り当ててくれたりはしません。金脈の場所を大体予測して掘り当てるのはいつだってドメイン知識、人間の「勘」です。経験則であり、「匠の技」です。統計、データ分析の役割は金脈があるという事実を数字として明示的に示すことに尽きます。だから、「統計学は最強の学問」ではないのです。もっと言うと、機械学習や統計学はデータを数字にして表すだけで、その裏にある因果関係を人間の認知と同様に理解することはありません。例えば、急にあなたのブログの訪問者数が増えたとしても、機械学習のシステムが自動的に原因を推測して、探し回って、それを正確に提示するなんてことはなかなか難しいことです。運営主が「有名ブロガーの〇〇さんがブログで紹介してくれたからかな」とか予想して実際に流入元のデータを見たりして初めて確信が持てるというのが大抵の場合の流れです。この「〜かな」っていうのも過去の経験から学んだ立派な「匠の技」、ドメイン知識だと言えるでしょう。機械学習の仕事、統計解析の仕事はこの「ドメイン知識によると〜かな」という推論→データを見て事実検証、のサイクルを延々と回すことが中心で、人間のドメイン知識による推論なしには成立しません。
特に僕の場合、発電所だとか工場だとかインフラ関係の機械学習導入を生業としているので、ドメイン知識なしには、何から分析すればいいのかすらわからず、途方に暮れてしまいます。かなり複雑な機械が幾重にも精巧に組み合わさって動いている中で、データのみを俯瞰して全体のメカニズムを理解するのは不可能です。実際、僕がプロジェクト中に最も力を入れたのは、精度が高くなるような新しい機械学習のアルゴリズムの実装とかではなく、顧客からのドメイン知識の入手と関連する論文、記事を読み漁ることでした。

信頼できる機械学習システムのためのドメイン知識

また、特に機械学習に関して言うと、ドメイン知識は分析の手がかりのためだけでなく、システムのロバストネス(頑健性)を担保する役割もあります。機械学習の問題点としては、先ほど述べた過学習や、ランダムなノイズデータが入った時の予測精度の急激な低下といったことが挙げられます。頑健性とは、どのような状況下においてもシステムが安定したパフォーマンスを出すということを意味します。これを保障するにはドメイン知識をもとにあらゆる状況を想定して機械学習モデルを意図的にトレーニングさせなければなりません。
ニュージーランドの銃乱射事件でFacebookのAIシステムが乱射動画を自動検知できず、サイト上への公開を許してしまったことが非難されていますが、これは「銃乱射の動画を上げるテロリストがいるかもしれない」という「ドメイン知識」がなく、類似の動画を意図的にトレーニングさせることができなかったことが原因とも言えます。もっとも「適切な」動画をトレーニングデータにしても、モデルが上手く学習するかどうかは別の話ですが。。。
だからこそAIのビジネスが最も差をつける部分はドメイン知識であり、本来ならば、データ分析や機械学習のPoCはアウトソースするのではなく、OEM(Original Equipment Manufacturer)やそのビジネスを回している会社自身が内製化して進めるのが妥当とも言えます。アルゴリズムや分析ツールは既にOSS開発などでだいぶ民主化されているので、後はそれを使いこなせるドメインエキスパートを育成することが勝敗の分け目になるはずです。
そういった意味で、ダイキンのAI人材社内育成とかは非常によろしい兆候だと思います。という非常に長い補足でした。

ちなみに

もし、ご興味あれば、twitterをやっているので、是非、シェア&フォローお願いします!