SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

トップエスイーからのアウトカム ~ ソフトウェア工学の現場から

機械学習による分析過程を把握しつつ、支援ツールによる自動化で的確な分析結果を得る(後編)

トップエスイーからのアウトカム ~ ソフトウェア工学の現場から 第2回


  • X ポスト
  • このエントリーをはてなブックマークに追加

 社会人エンジニア向けの教育プログラム「トップエスイー」での講義や制作結果などからエンジニアの皆さんに対して有用な情報をお届けするコーナーです。前回と今回の2回にわたり、機械学習を取り上げています。前回は機械学習によるデータ分析のプロセスと注意点について解説しました。今回は分析結果の評価についてと、筆者がトップエスイーの修了制作で作成した、一連のデータ分析プロセスを自動化するツール「MALSS」について解説します。MALSSはデータ分析を自動化するだけでなく、分析者の知識習得も支援することができます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

分析結果の評価の仕方

 これまで、データの前処理、アルゴリズム選択、分析手順について見てきました。次に、具体的に何かの分析をした結果をどのように評価するのか、ということについて説明しましょう。

 ある検査で、病気に罹患しているか判別するモデルを、得られた知見を活かして作成したと想像してください。10000サンプルのデータを予測モデルに適用した予測結果と、実際の罹患の有無(正解)を突き合わせて、図1のような評価データが得られました。表に記載された「陽性(Positive)」という用語にはなんとなく良いイメージが、「陰性(Negative)」にはなんとなく悪いイメージがあり、つい病気の場合を陰性と考えてしまいがちですが、着目している現象が発現(この場合は病気に罹患)している状態が「陽性」、発現していない状態が「陰性」なので気をつけてください。つまり、罹患していないと予測した(予測が陰性)データのうち、本当に罹患してなかった(正解が陰性)サンプルが9900あるということで、99%のデータを正しく判別することができたと結論付けたとしましょう。これは良い分析結果と判断して問題ないでしょうか?ここではこのような分析結果の評価方法について考えていきます。

図1 予測結果の例
図1 予測結果の例

評価に用いる指標

 評価指標としてよく使われるものに「精度(Accuracy)」があります。精度は、

 精度 = 正解数÷データ数

と、定義されます。モデルの性能の良しあしを、精度の良しあしと言ってしまうことがありますが、本稿では、この意味で精度という言葉を用います。

 以下のような式で示される誤差率も、評価指標としてよく用いられます。

 誤差率 = 1 - 精度

 図1の評価結果は精度99%です。一見、良い結果が得られたように思われますが、これには一つ問題があります。それは、予測結果が全て陰性であり、陽性であると判別したデータが一つもないことです。本当に罹患していた患者について、誰一人として罹患しているという予測ができなかったことになり、その点からも予測結果の利用には大きな問題があるといえるでしょう。今回のように、データのラベルに偏りがある場合(不均衡データ)、精度を評価指標として用いると、このように、常に数の多い方のラベルを予測結果として返す予測モデルができあがってしまうことがあります(※注:不均衡データは予測モデルの学習そのものが難しいという問題もあります)。

 このような問題に対処するため、混同行列(Confusion matrix)というものを考えます。図2のようなテーブルを混同行列と呼びます。正解ラベルが陽性か、陰性かということに対し、それらを陽性と予測したか、陰性と予測したかで予測結果を、

  • 真陽性(True positive: TP):陽性のものを正しく陽性と予測
  • 偽陰性(False negative: FN):陽性のものを誤って陰性と予測
  • 真陰性(True negative: TN):陰性のものを正しく陰性と予測
  • 偽陽性(False positive: FP):陰性のものを誤って陽性と予測

のように区別します。そして、

  • 真陽性率(True positive rate):陽性のものを正しく予測できた割合(ヒット率)= TP/(TP+FN)
  • 偽陽性率(False positive rate):陰性のうち誤って陽性と予測した割合(誤報率)= FP/(FP+TN)

と、いう評価指標を考えます。

 図1の例で考えると精度は99%ですが、真陽性率が0%、偽陽性率が0%であり、真陽性率が低いのは問題である、と判断することが可能となります。

 評価指標はこの他にも、

  • 適合率(Precision):陽性と予測したものの正解率 = TP/(TP+FP)
  • 再現率(Recall):陽性のうち正しく予測できた率 = TP/(TP+FN)
  • F値:適合率と再現率の調和平均=2(Precision・ Recall)/(Precision+Recall)

と、いったものもよく用いられます(図1の例ではいずれも0となります)。

図2 混同行列
図2 混同行列

 ここまでは、分類問題の評価指標を取り上げてきました。回帰問題の予測指標としては、

などや、MSEの平方根をとったRoot mean squared error(RMSE) もよく用いられます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
評価に基づく対策の立て方

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
トップエスイーからのアウトカム ~ ソフトウェア工学の現場から連載記事一覧

もっと読む

この記事の著者

鴨志田 亮太(日立製作所)(カモシダ リョウタ)

日立製作所 研究開発グループ所属 研究員。トップエスイー9期生(2014年度)。OSSの機械学習ライブラリが充実するなかで、それらを利用した、正しいデータ分析プロセスの習得をどうサポートできるかに興味を持ち、データ分析支援ツールMALSSを開発。 MALSS(GitHub) 機械学習によるデータ分析まわりのお話(SlideShare)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9995 2017/03/08 16:04

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング