データの前処理や結果のグラフ化について
BayoLinkSメールマガジン
いつも BayoLink をご愛用いただきありがとうございます。 いよいよ11月も終わりとなり寒さも増してきましたが、皆様いかがお過ごしでしょうか。 今年も先日 11/22 に数理システムユーザーコンファレンスが盛況のうちに無事終了することが できました。ご来場くださいました皆様、そしてご講演くださいました皆様、 誠にありがとうございました。当社を代表し心より御礼申し上げます。 ご講演内容は、以下の URL よりご覧いただけます。 https://www.msi.co.jp/userconf/2018/index.html ※近日中に公開予定です。 また、昨日 11/29 の BayoLink 特別セミナー「製造業×データサイエンス ~製造現場における BayoLink のリアルタイム活用~」にも、多くの皆様に ご来場いただきましたこと、この場を借りて御礼申し上げます。 それではこれより、 BayoLink ユーザーの皆様に BayoLink メールマガジン Vol.6 をお届けします。 ベイジアンネットワークは試食品のアンケート分析から生産ラインの異常要因分析まで産業分野を 問わず幅広く使うことのできる手法です。 先日のユーザーコンファレンスでは、AGC 株式会社の小野様にご講演いただいたのを私も聴講させて いただきましたが、様々な問題を解決された事例ををお聞きし、あらためて BayoLink の可能性を 感じることができました。 ユーザーの皆様としては、それでも BayoLink でベイジアンネットワークを使いこなせるように なるまでには、いくつものハードルがあるように感じられるかもしれません。そのハードルは、 実は BayoLink へデータを入れる前の処理 (データ加工) だったり、推論結果の可視化と解釈の部分 だったりしないでしょうか。 そこで今回は、BayoLink の WEB サイトの事例紹介ページでも掲載させていただいている 2 つの論文に注目し、その中で登場するデータの前処理や結果のグラフ化についてご紹介したいと 思います。 --=--=--=--=--=--=--=--=--=--=--=--=--=--= BayoLink 事例紹介 https://www.msiism.jp/case/bayolinks/ [1]「LCD 製造工程における製造情報オントロジーとベイジアンネットワークを用いた 不良原因探索支援システム」浜本紘希 様, 北村章 様, 田聡志 様, 庄司孝裕 様, 松野宏樹 様, 渡邉真悟 様 システム制御情報学会論文誌, Vol.31, No3, pp.87-94, 2018. [2]「ベイジアンネットワーク による修学状態推移モデルの構築」 近藤伸彦 様, 畠中利治 様 日本教育工学会論文誌 Vol.41, No.3, pp.271-281, 2017 --=--=--=--=--=--=--=--=--=--=--=--=--=--= ★ 数値変数の離散化 気温や圧力、金額や個数など、数値で表される量があります。年齢などもそうです。 BayoLink のベイジアンネットワークはカテゴリ変数を扱う手法ですから、そういった変数は そのままでは適切に扱うことができません。このような数値変数は、 年齢 (0、1、2、…) → 年齢層 (10代以下、20~30代、40~50代、60~70代、80代以上) のように区間で区切ってカテゴライズ (離散化) して利用します。 等区間で区切って離散化したり、各区間に含まれる件数が同じになるように 離散化 (等数分割) したりするのがオーソドックスな方法です。 論文 [1] の第 7 章「決定木を用いた離散化処理手法」では、数値変数の離散化に、 決定木 (Decision Tree) と呼ばれる機械学習の手法を用いる方法が取り上げられています。 これは、ある特徴量 (数値変数) をある閾値で離散化するものとし、その離散化の前後で 不良率 (正常 or 異常という 2 値をとる変数) の正常と異常の混じり具合が減少する (不純度が減少する) ような閾値を見つけ出していくという方法です。 同論文では、この「不純度」を表す指標としてジニ係数を採用しています。 (詳細は論文をご覧ください) これを別の例でも考えてみましょう。 例えば、優良顧客と非優良顧客が混ざったアパレルショップの会員データがあったとします。 顧客の年齢を、27 歳を閾値として分割する (つまり 27 歳未満の顧客グループと 27 歳以上の 顧客グループに分ける) と、優良と非優良とが最もきれいに分離されるとします。このとき、 (優良非優良の説明変数としては) 年齢は 27 歳という閾値で離散化することが適切であると 考えることができます。 ★ 推論結果の可視化 次に論文 [2] に注目してみましょう。[2] では、作成したベイジアンネットワーク (モデル) の 活用例の 1 つとして「学士過程の任意の時点において、その時点までのデータをエビデンスとして セットし、確率推論によってそれ以降の修学状態を推定する。」が挙げられています。 つまり大学在籍中の任意時点までの成績から、それ以降の修学状態 (在籍 or 退学 (または休学)) を 推定するというわけです。 (詳細は論文をご覧ください) ここでは 4.4 節の図 6 に着目します。これは 1 年次までの時点 (入学前、入学直後、1 年前期初、1 年前期末、1 年後期末)の 情報 (エビデンス) から、3 年次初めに在籍しているかどうか ( OK or notOK ) を 確率推論したもので、エビデンスの時期で確率値がどう推移するか を箱ひげ図 ( Box Plot ) を用いてグラフ化したものです。 ここでのポイントは、モデルによる予測によって修学状態を当てることができたかどうか (正解率) ではなく、「確率値の変化」が妥当かどうか、という視点でモデルの検証を 行っていることです。ここで入手可能であった情報だけから未来の修学状態を高い精度で 的中させることは (他の手法を用いたとしても) ほぼ不可能だと思われます。大学中退の理由には 成績に反映されないような別の事情があるかもしれません。そのような情報を全て入手することは 不可能であると考えるのが自然だからです。在籍している確率は **% であるというように、 ベイジアンネットワークは確率値として表現することで、不確実性のある物事を自然な形で 捉えることができるのがメリットですから、「確率値の変化」で検証することは理にかなっています。 ★ BayoLinkS 上記で取り上げた離散化や可視化は、10月にリリースされたばかりの BayoLinkS の機能を使うことで 簡単に実現することができます。数値変数の離散化は「離散化」機能、推論結果等のデータの可視化 (グラフ化) は、「データ可視化」機能を利用します。 「離散化」機能には、上記の「ジニ係数」以外にも「カイ 2 乗値」や「誤判別数」という指標が 実装されています。設定画面上で 「列名」← 離散化したい数値変数 「アルゴリズム」←「ジニ係数」 「目的変数」←「不良率」 「分割数」← 3 などのように指定することで「ジニ係数」を用いた離散化を行うことができます。 ※ただし厳密には論文 [1] の決定木を用いたロジックとは異なります。 「データ可視化」機能で論文 [2] のような推論結果の可視化を行う場合には、BayoLink の「検証」の 出力に含まれる推論結果を対象データとします。 そして、 「グラフの種類」←「箱ひげ図」 「変量」←「3 年次初めに在籍しているかどうかの事後確率値」 オプションの「層別」←「実際の修学状態」 オプションの「横トレリス」←「エビデンスの時点を表す変数」 というように設定すると、同じようなグラフを描くことができます。 BayoLinkS に関する詳細は、以下のURLをご覧ください。 https://www.msi.co.jp/solution/bayolinks/top.html 2018年10月より、BayoLink 体験セミナーでは、BayoLinkS をご体験いただけるよう実習内容を 変更いたしました。 BayoLinkS にご興味をお持ちの方は、ぜひセミナーへお越しください。 また、BayoLink ユーザーの皆様は、特別価格にて BayoLinkS へ移行が可能ですので、 お気軽にご連絡ください。 今回のメールマガジンでは、データの前処理と推論実行後の可視化の部分に焦点を当ててみましたが、 いかがでしたでしょうか。皆様の抱える問題の解決に少しでもお役に立てるようでしたら幸いです。 (2018.11.30. 山口 裕)