こんにちは。AIチームの柾屋です。
もともとビジネス側で広告運用コンサルティングやツール導入後のカスタマーサクセスを担当してきましたが、2022年4月からビジネスチームからAIチームへデータアナリストとして異動してきました。
tableauやGAS、RPA、簡単なPythonなどは業務で取り組んできましたが、初の試みとして機械学習で知識ゼロからボイスボットの離脱予測モデルを作成するというミッションに取り組みました。
取り組みの中で得られた「概念としての機械学習」と「実務で利用するため機械学習」とのギャップや面白さを紹介していきたいと思います。
この記事を読んで得られること
この記事は「AIや機械学習について概念は知っているけど、実務での取り組みはない」という方を対象にしています。
この記事を通して
- AIや機械学習の特性を理解した上で、どのような業務へ活用できるかを考えるきっかけになる
- これから機械学習でモデルを作成しようとする際に、失敗しがちなポイントを理解して効率よく進めることができる
- AIや機械学習のエンジニア、データサイエンティストの仕事の一部を理解し、採用や今後のキャリア選択に活かせる
などに役立てられる情報共有を目指していきたいと思います。
AIや機械学習は大枠でまとめられることが多いですが、実際はその中でもいくつも種類や方法に分かれており、そこに難しさや、面白さが隠れています。
今回は、ベーシックな機械学習を使った「予測モデル」を作る過程や注意点について紹介していきます。
概念としての機械学習
「AI」と「機械学習」と「ディープラーニング」
AIというと、これら3つのキーワードが混ざって利用されることが多いと思います。
なんとなく違いはわかるけど、「言語化することは難しい」という方は多いのではないでしょうか?
大きくは「AI」⊃「機械学習」⊃「ディープラーニング」という包含関係になっていますので、少し整理していきたいと思います。
「AI」とは?
「AI」とはなんでしょうか?
人工的に作られた、知能を持つ実態。あるいはそれを作ろうとすることによって知能自体を研究する分野である」
(国立情報学研究所 武田英明)
「人工的に作られた人間のような知能、ないしはそれを作る技術。人間のように知的であるとは、『気づくことのできる』コンピュータ、つまり、データの中から特徴量を生成し現象をモデル化することのできるコンピュータという意味である」
(東京大学 松尾豊)
学術的な定義はさまざまですが、「人工的に作られた知能」という部分は共有しているものが多く、「知能」の部分の解釈が分かれているものが多いようです。
どこまでの未来を想像するかによって、この「知能」の部分が「人間と見分けがつかない」レベルなのか、人間をはるかに「超越した」レベルなのかに大きく分割されている印象を受けました。
「機械学習」とは?
「機械学習」とはなんでしょうか?
「機械学習とは、データを分析する方法の1つで、データから、「機械」(コンピューター)が自動で「学習」し、データの背景にあるルールやパターンを発見する方法。近年では、学習した成果に基づいて「予測・判断」することが重視されるようになった。」
(NRI)
「機械学習とは「データから規則性や判断基準を学習し、それに基づき未知のものを予測、判断する技術」と人工知能に関わる分析技術を指しています。」
(総務省)
共通する部分として「データから規則性(ルールやパターン)を学習する技術・方法」ということが読み取れます。
人工的な知能(AI)を実現するために、データから規則性を学習する手法が「機械学習」だと意味を繋げることができそうです。
「ディープラーニング」とは?
ディープラーニングとは機械学習の手法の1つです。
機械学習は「データから規則性を学習する手法」と記載しましたが、どのような学習をさせるかによって「教師あり学習」、「教師なし学習」、「強化学習」の3つの領域に分かれます。
従来の機械学習と異なり、ディープラーニングでは「コンピュータが自ら特徴量を抽出する」ことができるようになりました。
例えば「画像認識」を例として考えてみます。
「自転車」を画像から認識する場合、ディープラーニングを使用して大量の自転車の画像データを学習することで、従来の機械学習に比べて簡単に特徴量を獲得することができます。
ディープラーニングでは、「自転車」の特徴を言語化して表現するのではなく、画像としての特徴で表現をします。形や色だけでなく、私たちでは考えられないような特徴を見つけ、数値データとして表現することができます。
機械学習のモデルの種類
紹介する機械学習のモデル
冒頭で少し紹介しましたが、今回取り組んだ課題が「ボイスボットの離脱予測モデルの作成」のため、機械学習のモデルの中でも「教師あり学習」について紹介したいと思います。
教師あり学習は,特徴量などの「入力データ」に対するモデルの出力が「正解データ」と近くなるように学習させます。
例えば、「迷惑メールかどうかの判定」を行うモデルの場合は、
- 入力データ:件名の文字数、本文の文字数、リンク数などのメールに含まれる情報
- 正解データ:迷惑メールだったかどうかの情報
のような区分となります。
教師あり学習を行うことで、「分類や識別」、「予測」などを行うことができるようになります。
教師あり学習のモデルの種類
教師あり学習の代表的なモデルは下記です。
- ランダムフォレスト
- 決定木
- k近傍法
- 線形回帰
- ナイーブベイズ
- SVM(Support Vector Machine)
- ロジスティック回帰
- 勾配ブースティング
それぞれモデルの特徴が分かれていますが、このモデルの中でも、
- ロジスティック回帰
- 決定木
- LightGBM(決定木の勾配ブースティング)
を選定して取り組みました。
これらのモデルを選定した理由としては、「予測をするだけでなく、ボイスボットの離脱に関わる要素も可視化したかった」ためです。
簡単なモデルの紹介は後述しますが、他のモデルと異なり、「人間にもどのような理由でそのような分類(予測)となったのかが理解しやすい」という特徴があります。
ロジスティック回帰
ロジスティック回帰は、「いくつかの要因(説明変数)から「2値の結果(目的変数)」が起こる確率を説明・予測することができる統計手法で、多変量解析の手法の1つ」です。
例えば、ボイスボットでは下記のような項目を設定しています。
- Botの話すスピード
- 質問の数
- 冒頭の挨拶文
これらの項目を特徴量(入力データ)とし、実際にユーザーが離脱したかどうか(正解データ)と一緒に学習させます。
学習済みのモデルでは、特徴量(入力データ)を与えることで、どのくらいの確率で離脱するかどうかを予測することができます。
また,ロジスティック回帰の特徴として,各特徴量が予測にどのぐらい貢献しているかを可視化することができます。
特徴量(入力データ)の影響値は回帰変数として数値化されます。
例えば上記の例(ダミーデータ)では、Botの話すスピードは離脱しない要素(マイナスの値)になり得るが、質問の数や冒頭挨拶の文量は離脱する要素(プラスの値)になり得ることが分かります。
決定木
決定木とは「特定の特徴がよく現れるようなデータのかたまりを見つけ、その分類ルールを生成する機械学習の手法」です。
決定木を用いると,以下のような条件分岐を得ることができます。
条件に従って分岐を辿っていくと、末端の葉っぱに書かれた結論を得ることができます。
例えば、ボイスボットの離脱予測を行った場合、
- Botの話すスピード
- 質問の数
- 冒頭の挨拶の文量
などの枝分かれを追っていくと,末端の葉は離脱確率を表し,追ってきた道順に当てはまるユーザが離脱する確率を確認できます。
先程紹介したロジスティック回帰よりも直感的な分岐でどのような要素が関わっているかを理解することができます。
LightGBM
LightGBMは、先程紹介した決定木の「勾配ブースティングフレームワーク」のことです。
データサイエンティストや機械学習エンジニアのコンペが開催されるKaggle(カグル)の上位入賞者の半数以上が活用した実績があるモデルとも言われています。
「勾配ブースティング」という新しい単語が出てきたので解説していきます。
- 勾配ブースティングとは、「複数のモデル(学習器)を融合させて1つの学習モデルを生成する手法」のひとつです。
- 「1人で問題を解くのではなく、複数人で意見を出し合った方が正答率が上がる」という考えに基づいています。
- 複数のモデルを直列的に並べて、前のモデルの学習結果を参考にしながら次のモデルを学習していきます。
- モデルの学習は、微分可能な損失関数を最小化することによって行われます。
LightGBMは「決定木の勾配ブースティングのフレームワーク」ということなので、先程紹介した決定木を「複数回使って1つの決定木モデルを完成させていく」ということです。
例えば、決定木(1号)の推定結果と実際の値の誤差のデータを用いて、決定木(2号)を訓練させます。決定木(2号)の推定結果と実際の値の誤差のデータを用いて決定木(3号)を訓練させます。これをN回繰り返していくという流れになります。
モデルの予測精度が高いというだけではなく、アウトプットは決定木と同じようなツリー図を出すことができ、どのような条件で分岐となるかの解釈性が良いことも特徴の1つです。
前半パートまとめ
以上で前半パートは終了です。
前半パートでは、「機械学習」と「ボイスボットの離脱予測をするために選定した機械学習モデル」について紹介していきました。
後半パートでは、実際にモデリングをした際に陥った失敗例について紹介していきたいと思います。