SHOEISHA iD

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

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

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

要件定義書がしっかり読まれているかを測定――視線情報を機械学習にかけ、要件定義書レビューの評価を行う

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


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

視線情報と機械学習を用いたレビュー品質評価手法の構築

 続いてレビュー品質の評価手法を説明します。前述の実験で取得した視線情報を基にし、機械学習の手法を用いて評価結果を得る手法を構築しました。構築のフロー図を図4に示します。まず、アイトラッカを用いてレビュー時の視線情報を取得し、レビュー対象文書のページごとの特徴量を算出します。次に視線情報から算出できる多数の特徴量のうち、レビュー品質に影響を及ぼしている特徴量を抽出します。その後、抽出した特徴量を使って機械学習を行い、レビュー品質を評価するモデル(以降、レビュー品質評価モデル)を構築します。

図4 レビュー品質の評価手法構築のフロー図
図4 レビュー品質の評価手法構築のフロー図

特徴量の抽出

 アイトラッカで取得できる次の4つの基本情報を基に、計47個の特徴量を算出します(表1)。47個の特徴量の内訳は、既存研究で定義された46個の特徴量と本手法で追加した「blinkの回数の割合」です。

 英語の理解度と視線の関連を調査した過去の研究で、特定の視線情報が理解度と相関したことから、全47個の特徴量のうち、特定の特徴量がレビュー品質に影響すると考えました。そこで、Random Forest(以降、RF)による機械学習アルゴリズムを使って、レビュー品質に影響を及ぼす特徴量を抽出しました。RFは各特徴量の重要度も同時に算出するので、重要度の低い特徴量はレビュー品質への影響は少ないとして削除できます。

表1 47個の特徴量
表1 47個の特徴量

レビュー品質評価モデル

 抽出した特徴量を用いて、レビュー品質評価モデルを複数のアルゴリズムで構築します。今回採用したアルゴリズムは、「RF」「Decision Tree(以降、DT)」「k-Nearest Neighbor(以降、kNN)」および「Weighted Support Vector Machine(以降、WSVM)」の4つです。特に、WSVMの場合は、データの重み付けにより、レビュー品質が悪い人と良い人の分布が不均一な場合にも適切な対応ができます。

 各アルゴリズムによるレビュー評価モデルの有効性の確認はCross-validationを行い、Recall(再現率)、Accuracy(正解率)を算出して比較します。Accuracyは予測したレビュー品質と実際のレビュー品質との一致率で、Recallはレビュー品質が悪い人を正とした場合、正の人を正しく予測できた割合です。それぞれ式(1)、(2)にて導出します。

式(1)(2)
式(1)(2)

 ここで、TP、TN、FP、FNは表2に示す混合行列の各要素です。Cross-validationと評価指標についてはCodeZine掲載の2つの記事「機械学習による分析過程を把握しつつ、支援ツールによる自動化で的確な分析結果を得る(前編)」「機械学習による分析過程を把握しつつ、支援ツールによる自動化で的確な分析結果を得る(後編)」により詳しい説明があります。

表2 真の結果と予測結果の混合行列
表2 真の結果と予測結果の混合行列

レビュー品質評価モデルの構築結果

 19名の被験者から得られた実験データを用いて、レビュー品質評価モデルを構築した結果を説明します。まず、被験者グループを欠陥検出数により分けます。欠陥検出数がT個以下の被験者をレビュー品質が低いlowグループ、欠陥検出数がTより大きいグループをレビュー品質が高いhighグループとします。今回は、T = 1、2、3の3ケースそれぞれでレビュー品質評価モデルを構築しました。

特徴量の抽出

 47個の特徴量について、RFを3回実行して得られた重要度の上位4個を表3に示します。Tが変化しても、「blinkの時間の割合」と「blinkの回数の割合」は上位4位以内で共通の特徴量でした。したがって、当該2つの特徴量がレビュー品質に影響を与える重要な特徴量であると考えました。ここで、「blinkの時間(回数)の割合」とは、blinkの時間(回数)をレビュー時間で割った値です。

表3 RFにより得られた平均重要度の上位4項目(RFの実行は3回)
表3 RFにより得られた平均重要度の上位4項目(RFの実行は3回)

レビュー品質評価モデル

 「blinkの時間の割合」と「blinkの回数の割合」の2つの特徴量に基づいて、レビュー品質評価モデルを構築し、採用するアルゴリズムごとの性能を評価しました。得られた結果を表4に示します。表4から次の事実が確認できます:

  • T = 1とT = 2の場合、DTによるレビュー品質評価モデルのAccuracyが最も高い。
  • T = 3の場合、kNNによるレビュー品質評価モデルのAccuracyが最も高い。
  • Tの増加につれて、アルゴリズムによらずAccuracyは下がる。
  • T = 1とT = 3のhighとlowのデータ数は逆転し、WSVM以外のアルゴリズムはRecallの性能も同様に逆転しているが、WSVMのhighとlowに対するRecallの性能差は小さい。
表4 アルゴリズムごとのレビュー品質評価モデルの性能
表4 アルゴリズムごとのレビュー品質評価モデルの性能

 以上の結果をまとめると、47個の特徴量のうち、「blinkの時間の割合」と「blinkの回数の割合」はT = 1、2、3に対して、常に上位の重要度を示し(特に、前者は常に1位)、当該2つの特徴量によって構築したレビュー品質評価モデルの性能はTの増加につれて低下したものの、T = 1の場合には84%の精度で分類できました。これは、実験終了後に行ったアンケートの主観評価(理解度、集中度、経験など)を用いて分類した場合(Accuracy:69.4%)よりも高い結果でした。

blinkとレビュー品質の関係

 集中している時や注意力が必要な時はblinkが少なくなると言われています。そこで、実験で得られた「blinkの時間の割合」と「blinkの回数の割合」の散布図とそれを楕円で抽象化した図との関係を図5に示します。図5では、青いプロットと赤いプロットがありますが、レビュー品質の高いhighの場合を青、品質の低いlowの場合を赤としました。この結果から次の事実が確認できます:

  • T = 1、2、3のすべて場合において、highグループ(青の点・楕円)はblinkが小さい場合と、それとは分離して中~大の領域の2領域が存在する。
  • lowグループ(赤の点・楕円)は、T = 1の場合はblinkが小~中程度の領域に存在したが、Tの増加につれて全域に広がっている。
図5 blinkの時間の割合とblinkの回数の割合の散布図(上段)とその抽象図(下段)(図の赤い点と楕円はlowグループ、青い点と楕円はhighグループを示す)
図5 blinkの時間の割合とblinkの回数の割合の散布図(上段)とその抽象図(下段)(図の赤い点と楕円はlowグループ、青い点と楕円はhighグループを示す)

 以上の事実から、レビュー品質の高いhighグループの人は、集中している時や注意が必要な時に現れるblinkの回数が少ないという特徴だけではなく、blinkの回数が多い場合もあることがわかりました。しかしながら、Tの増加につれてhighグループとlowグループの混在範囲が増え、2つのグループを適切に分割することが難しくなるという問題があります。この問題によって、Tの増加につれてレビュー品質評価モデルの性能が劣化してしまいました。

アイトラッカの出力とレビュー品質の関係

 レビュー時の視線情報を用いて、要件定義書レビューを1ページ単位で評価するレビュー品質評価手法を紹介しました。全47個の特徴量から重要度の高い2つの特徴量「blink(瞬き)の時間の割合」と「blinkの回数の割合」を抽出し、レビュー品質評価モデルを構築し、性能を評価したところ、T = 1の場合には高精度の結果が得られました。blinkとレビュー品質の関係を分析したところ、レビュー品質の高いグループの人はblinkが少ないだけではなく、場合によってはむしろ多く、レビュー品質の低いグループはその中間の値であるという特徴を持つことがわかりました。

 しかし、Tの増加に伴いレビュー品質評価モデルの性能が劣化してしまい、blinkだけではレビュー品質を適切に分類し予測できないため、他の視線情報を組み込んだレビュー品質評価モデルによって性能向上を目指したいと考えています。

 今回は、視線情報を要件定義書レビューに活用しましたが、それ以外にもコードレビューやペアプログラミングに活用する事例も存在します。本記事が、ソフトウェア開発の品質向上への視線情報活用検討の参考になれば幸いです。

トップエスイーについて

 「トップエスイー」は、国立情報学研究所で実施している、社会人エンジニア向けのソフトウェア工学に関する教育プログラムです。トップエスイーでは講義や制作課題を通して、最先端の研究成果や現場で得られた知見が蓄積されてきました。その「アウトカム」、つまり成果やそこに至る過程を紹介し、現場のエンジニアの方々に活用いただける記事を連載しています。2017年度より、講義を中心に受講し後半にまとめとして「ソフトウェア開発実践演習」を行う「トップエスイーコース」と、指導教員と1対1で受講生が抱える現場の問題を解決する「アドバンストップエスイーコース」の2コースとなりました。アドバンスコースでは、本稿で紹介したような大きなテーマに取り組む「プロフェッショナルスタディ」と、数人の受講生が先端的な知識を学習し共有するための「先端ソフトウェアゼミ」の2つの科目に年間を通して取り組みます。トップエスイーは年間で受講していただけます。2019年度の申し込みは、2019年1月31日までです。

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

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

もっと読む

この記事の著者

斉藤 功樹(日本ユニシス株式会社)(サイトウ コウキ)

 2014年度第9期生としてトップエスイー受講、2017年度第12期生としてアドバンス・トップエスイーを受講。日本ユニシス株式会社 総合技術研究所に所属。大規模データ処理技術や衛星画像のデータ処理・データ分析に関する研究に従事し、現在は視線情報を用いた文章の読解に関する研究に従事。

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11218 2019/01/29 12:41

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング