モデル構築よりも類似プロジェクト検索
事例紹介:見積もり精度の比較
今回は、協調フィルタリング技術を用いた工数見積もり(CF法)の具体的な事例を紹介するともに、従来の工数見積もりモデルにはない新たな可能性について述べる。
最初に、重回帰分析により構築された見積もりモデル(重回帰分析モデル)とCF法による見積もりモデル(CFモデル)の見積もり精度を比較した結果を紹介する。比較に利用したソフトウエア開発データは、NTTデータにおいて、約10年間にわたり1,081件のソフトウエア開発プロジェクトで収集、蓄積されたものである。利用したプロジェクト特性は14個(説明変数13個+目的変数1個)、データ欠損率は約60%であった。
比較対象とした重回帰分析モデルは、「欠損値処理法を用いたステップワイズ重回帰分析」によるものである。重回帰分析では、多数の説明変数の候補(プロジェクト特性)の中から、見積もり精度の向上に寄与すると考えられるものを選択して回帰式(見積もりに用いる一次式)を作成する方法をとる。ステップワイズ重回帰分析とは、変数選択においてステップワイズ変数選択法を用いる手法である。その詳細は文献(http://se.naist.jp/achieve/pdf/181.pdf)を参照されたい。
対象データに欠損がある場合、欠損値を含むプロジェクトを除外したり、欠損値を何らかの値で補完したり、といった前処理(欠損値処理)が必要となる。重回帰分析では、次の3つの欠損値処理法が広く用いられている。
1つ目が「リストワイズ除去法」だ。これは欠損値を1つでも含むプロジェクトはすべて分析対象から除去する。
2つ目が「ペアワイズ除去法」で、重回帰分析では、説明変数(プロジェクト特性)のすべての組み合わせ(説明変数のペア)について相関を求める。その際、ペアとした説明変数の値がどちらか一方でも欠損しているプロジェクトは除去する。
3つ目が「平均値挿入法」だ。この方法ではプロジェクトの除去は行わず、説明変数(プロジェクト特性)ごとに、得られている値の平均値を求め、欠損部分に代替値として挿入する。
以上3つの欠損値処理法をそれぞれ用いたステップワイズ重回帰分析モデルとCFモデルで試験工数の見積もりを行った場合の精度(平均相対誤差)を図1-1に示す。
利用データ数別の重回帰分析モデルとCFモデル
結果は明らかである。相対誤差が小さいほど見積もり精度の高いことを意味するが、CFモデルによる相対誤差は0.79、重回帰分析モデルでは、平均値挿入法を用いた場合でも22.11で、その差は約28倍である。もちろんこの結果は一例にすぎないが、約60%という高いデータ欠損率の下では、欠損値処理法を併用したとしても、重回帰分析モデルの見積もりには限界があるようである。
では、データ欠損がなければ、重回帰分析モデルによる見積もりの方が高い精度が得られるのであろうか。必ずしもそうとは限らない。図1-2は、先ほどと同じ1,081件のソフトウエア開発プロジェクトのデータのうち、データ欠損のない140プロジェクトの9個の説明変数(プロジェクト特性)を使って試験工数を見積もった結果である。
縦軸は見積もりの相対誤差(中央値)を表す。一方、横軸は、利用可能データ数(プロジェクト数)である。つまり、重回帰分析においては、モデル構築に利用したデータ数であり、CF法においては、見積もり対象プロジェクトとの類似度を評価したプロジェクト数である。
これを見ると、利用可能データ数(プロジェクト数)が少ないうちは、重回帰分析モデルの方がCFモデルよりも高い見積もり精度となっているが、利用可能データ数が50件を超えたあたりから両者の関係は逆転する。しかも、利用可能データ数が増えるにつれて、CF法ではわずかながらも見積もり精度が向上する(誤差が小さくなる)傾向にあるが、重回帰分析モデルでは、必ずしもそうはなっていない。
このグラフの意味するところは非常に興味深い。一般に、利用できるソフトウエア開発データ(実績データ)が多いほど精度の高い見積もりモデルを構築できるといわれている。しかし、多様なソフトウエア開発プロジェクトのデータで重回帰分析モデルを構築すると、その適用範囲は広くなるかもしれないが、最大公約数的なモデルとなり、個々のプロジェクトでの見積もり精度は必ずしも高くならない可能性がある。これでは、実績データを収集し蓄積しようという開発者のインセンティブがなくなってしまう。
一方、CF法では、実績データが蓄積されるほど、見積もり対象プロジェクトと類似度の高いプロジェクトが含まれる可能性が高くなるので、適用範囲が広くなると共に見積もり精度も向上する可能性がある。しかも、データ欠損に強いので、含まれるデータの種類が多少異なっても気にせず蓄積していけばよい。
両者のこの差は、実用上非常に大きいのではないだろうか。
では、CF法においてどれぐらいの欠損まで許容されるのであろうか。2つ目の事例として、データ欠損に対するロバスト性について紹介する。