ベイズ統計を用いた 失敗プロジェクト予測モデルの構築 · 2016. 10. 12. ·...
Transcript of ベイズ統計を用いた 失敗プロジェクト予測モデルの構築 · 2016. 10. 12. ·...
© 2016 Canon Imaging Systems Inc.
ベイズ統計を用いた 失敗プロジェクト予測モデルの構築
キヤノンイメージングシステムズ株式会社
品質推進部 今井 賢彦
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
Agenda
P. 2
・ 取組みの背景と課題
・ 失敗プロジェクト予測モデルとは
・ 予測モデル構築の流れ
・ ステップ1:プロジェクトの失敗を定義
・ ステップ2:失敗の影響因子と閾値を決定
・ ステップ3:プロジェクト失敗確率を計算
・ まとめ
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
会社紹介
社名 : キヤノンイメージングシステムズ株式会社
設立 : 1990年1月26日
資本金 : 1億円
社員数 : 433名 ※2016年4月現在
主要株主 : キヤノン株式会社
所在地 : 本社・開発センター:新潟市、小杉事業所:川崎市
その他 : ISO14001認証取得、CMMI レベル2取得(2006年)
P. 3
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
Agenda
P. 4
・ 取組みの背景と課題
・ 失敗プロジェクト予測モデルとは
・ 予測モデル構築の流れ
・ ステップ1:プロジェクトの失敗を定義
・ ステップ2:失敗の影響因子と閾値を決定
・ ステップ3:プロジェクト失敗確率を計算
・ まとめ
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
• 当社にてQCD未達となる問題が複数件発生
• 第三者が「定量的かつ早期に問題を検出できないか?」について検討
第三者:
・メトリクスからプロジェクト失敗を予測したい
プロジェクト:
・失敗の兆候を把握し、是正アクションに繋げたい
先行研究である東芝(株)「プロジェクト失敗リスク予測モデル」を参考に自社向けのモデル構築を開始
取組みの背景と目的
背景
目的
P. 5
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
Agenda
P. 6
・ 取組みの背景と課題
・ 失敗プロジェクト予測モデルとは
・ 予測モデル構築の流れ
・ ステップ1:プロジェクトの失敗を定義
・ ステップ2:失敗の影響因子と閾値を決定
・ ステップ3:プロジェクト失敗確率を計算
・ まとめ
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
• ベイズ統計を応用したナイーブベイズ分類器に基づきプロジェクト失敗確率を予測
• メトリクスの閾値に対し、OKまたはNGによって失敗確率が変動
モデルの特徴
失敗判定
ライン
0%
OK
Case1
Case3
Case2
起点
失敗確率
100%
NG
見積り 実装 詳細設計 基本設計 要件定義
メトリクス1 メトリクス2 メトリクス3
プロジェクトがどの
パターンを辿るか監視
確率変動はパラメータ数によりパターン化
OK
NG
NG
P. 7
パラメータ
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
ベイズ統計を採用した理由
• プロジェクト進行中に、逐次的な予測の更新が可能
• 予測を「確率」で提供できる
あくまで確率として監視すればよいため、導入障壁が低くなる
データ量が増えれば、より確率の精度は増す
• ある値を上回るか、下回るかの2択で判定できるため、データのバラツキや欠損に強い
あるデータが極端な値を示しても、そのデータに引っ張られて失敗確率が大きく変動しない
P. 8 ※ Thomas Bayes (1702-1761) 出典:Wikipedia
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
失敗プロジェクト予測モデル構築の流れ
プロジェクトの“失敗”を定義
失敗に影響の大きいメトリクス(因子)とその閾値を決定
ベイズの定理からプロジェクト失敗確率を計算し、モデルを検証
2-1. 各因子(候補)を対数変換し正規分布を仮定
2-2. t検定で失敗に影響する因子を抽出
2-3. 抽出した影響因子の閾値を決定
ステップ1
ステップ2
ステップ3
3-1. 起点とプロジェクト失敗判定ラインを設定
3-2. ベイズの定理からプロジェクト失敗確率を計算
3-3. モデルの当て嵌まり具合を確認 P. 9
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
Agenda
P. 10
・ 取組みの背景と課題
・ 失敗プロジェクト予測モデルとは
・ 予測モデル構築の流れ
・ ステップ1:プロジェクトの失敗を定義
・ ステップ2:失敗の影響因子と閾値を決定
・ ステップ3:プロジェクト失敗確率を計算
・ まとめ
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
プロジェクトの“失敗”を定義
すべて達成 どれかが非達成
• 過去のプロジェクトデータから、基準値①②③が 1つ以上非達成のものを“失敗”とし、2群に振り分け
① 「工数超過」、「結合テストまたはシステムテストのバグ密度」
② 「結合テストのバグ密度」、「結合テストバグ予実比」
③ 「システムテストのバグ密度」、「システムテストバグ予実比」
基準値
“成功”群 “失敗”群
P. 11
ステップ1
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
Agenda
P. 12
・ 取組みの背景と課題
・ 失敗プロジェクト予測モデルとは
・ 予測モデル構築の流れ
・ ステップ1:プロジェクトの失敗を定義
・ ステップ2:失敗の影響因子と閾値を決定
・ ステップ3:プロジェクト失敗確率を計算
・ まとめ
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
候補となる因子の選定条件
システム テスト
単体/結合 テスト
実装 詳細設計 基本設計 要件定義 見積り 計画
出荷
・ 上流(実装までの工程)を対象 → 早期のリスク検知が目的のため、テスト後では遅いと考えた
・ 主にレビューメトリクス「指摘密度」「工数比率」など → SLOC数、指摘件数はプロジェクト規模に左右されるため除外
モデルによる監視対象:実装までの工程
対象工程
対象指標
P. 13
ステップ2
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc. P. 14
t検定で失敗に影響する因子を抽出
• 左に偏った分布のため、データを対数変換し正規分布を仮定できるよう補正
• 対数変換後の2群に対し、独立サンプルt検定を実施
• 有意差があった以下の5因子を抽出
X1:ステップ生産性 p値=0.0003
X2:基本設計レビュー指摘密度 p値=0.002
X3:詳細設計レビュー工数密度 p値=0.082 ※
X4:コードレビュー指摘密度 p値=0.01
X5:コードレビュー工数密度 p値=0.007
※統計的にはp<0.05が一般的だが、p<0.1程度であれば影響因子として採用
Welch Two Sample t-test
data: SDRV_DefDensity_LOG by Failure
t = -3.2526, df = 29.697, p-value = 0.002849
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.6853847 -0.1565258
sample estimates:
mean in group c mean in group f
-1.1700224 -0.7490671
例)ある因子の検定結果: p値が0.002で
有意差あり!
ステップ2
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc. P. 15
• 成功/失敗を判定する境界値を決める必要がある とはいえ、どうやって決めればよいか?
• 検証してみると、成功/失敗をうまく識別できない!
抽出した影響因子の閾値を検討
全体の 平均値?
75 パーセン タイル?
失敗群の 平均値?
全体の 中央値?
正規分布 だから 1σ?
2群の 平均の
中間は?
失敗群のプロジェクトを成功と判定してしまう 成功群のプロジェクトを失敗と判定してしまう
即ち、以下のようなケースが多くなる
ステップ2
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
2群のバラツキに着目
• 2群のバラツキがほぼ等しければ、2群の平均値の中間点や全体の平均値を閾値にしても識別はうまくいくかもしれないが・・・
• 2群が不等分散の場合、分散バランスを考慮して閾値を設定したほうがよさそう
ステップ2
P. 16
2群のバラツキがほぼ等しい場合 2群のバラツキが等しくない場合
中間点が閾値でも バランスはよい
mS mF mS mF 閾値L 閾値L
失敗群(Failure) の分布
成功群(Success) の分布
2.本当は失敗なのに成功と 判定されるものの割合
1.本当は成功なのに失敗と 判定されるものの割合
2よりも1がとても大きくなってしまうのは問題!
失敗群(Failure) の分布
成功群(Success) の分布
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
• 閾値の設定
① 2群の標準偏差比を算出
② ①の比率を2群の平均値の差に適用し、分割点を閾値に設定
2群の斜線部の面積が等しくなる境界線を閾値とする
P. 17
2群の不等分散を考慮し閾値を決定 ステップ2
成功群(Success) の分布
失敗群(Failure) の分布
標準偏差の比率を出す SF:Ss = 2:3 …①
平均値の差 ms ー mF の分割点
1.5 × + 0.5 × = 0.9 …②
閾値L=0.9
ms =1.5
SF
Ss
2群の分散バランスを考慮することで、識別の偏りをなくし 適切な境界線を閾値に設定できるようになった
mF =0.5
※ 計算例
ZF ZS
5 5
3 2
=
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
Agenda
P. 18
・ 取組みの背景と課題
・ 失敗プロジェクト予測モデルとは
・ 予測モデル構築の流れ
・ ステップ1:プロジェクトの失敗を定義
・ ステップ2:失敗の影響因子と閾値を決定
・ ステップ3:プロジェクト失敗確率を計算
・ まとめ
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
起点とプロジェクト失敗判定ラインを設定
失敗判定
ライン
0%
起点
失敗確率
100%
30%
50%
ステップ3
見積り 実装 詳細設計 基本設計 要件定義
失敗と判定
成功と判定
P. 19
• モデルの起点とプロジェクト失敗判定ラインを設定する
起点には 30% を設定
全体のうち失敗群に振り分けた割合+失敗予備軍への注意喚起分を上乗せ
プロジェクト失敗判定の確率は 50% に設定
この時点ではリスク大
この時点ではリスク小
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
ベイズ展開公式
• 起点を事前確率に設定し、ベイズ展開公式に当て嵌めてその因子の事後確率を算出
P(F|D) = P(F) × P(D|F) /
P:確率 F:プロジェクト失敗 D:データ
事後確率(知りたいこと) 因子Xxが閾値NGだった場合に プロジェクトが失敗する確率
事前確率(既知のこと) 起点あるいは前の因子の事後確率
尤度(起こること) 失敗プロジェクトで 因子Xxが閾値NGだった割合
ベイズ 展開公式
事前確率 (起点)
ベイズ 展開公式
因子X2の 事後確率
因子X1の 事後確率
データ
データ 因子X1の事後確率は 因子X2算出の事前確率へ
P(D) 全体のうち、因子Xxで閾値NGだった割合
ステップ3
因子Xxが閾値に対しNGだった場合
事前確率 ベイズ
展開公式
=
因子 X1
因子 X2
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
プロジェクト失敗確率を計算
Aプロジェクトの例
• 因子X1:基本設計レビュー指摘密度
• 閾値に対しNGだった場合(①)と、OKだった場合(②)のプロジェクト失敗確率は以下の式で計算
事前確率:起点の 0.3
失敗群で因子X1が閾値NGだった割合:0.75
成功群で 〃 :0.35
① 因子X1が閾値NGだった場合:失敗確率は上昇
事後確率 = 0.3 × 0.75 /(0.75×0.3+0.35×(1-0.3))= 0.48
② 因子X1が閾値OKだった場合:失敗確率は下降
事後確率 = 0.3 × 0.35 /(0.75×0.3+0.35×(1-0.3))= 0.22
P. 21
ステップ3
P(F) × P(D|F) / P(D) = P(F|D) ベイズ展開公式で表現すると
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
モデルの当て嵌まり具合を確認
• モデルの算出結果を完了したプロジェクトで検証した結果
⇒ 81%を正しく予測できた
※失敗群のプロジェクトを「失敗」と識別
成功群のプロジェクトを「成功」と識別した割合
「成功」 と予測
「失敗」 と予測
成功群 失敗群
「成功」と予測
(誤判定)
「失敗」と予測
(誤判定)
失敗群の80% 全体の81%
P. 22
ステップ3
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
Agenda
P. 23
・ 取組みの背景と課題
・ 失敗プロジェクト予測モデルとは
・ 予測モデル構築の流れ
・ ステップ1:プロジェクトの失敗を定義
・ ステップ2:失敗の影響因子と閾値を決定
・ ステップ3:プロジェクト失敗確率を計算
・ まとめ
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
• 過去のプロジェクトデータから構築したモデルを稼働中のプロジェクトに適用し、トライアルを実施
• 進行中の工程で失敗確率が高まることはあるが、最終的には成功で着地しており、失敗判定プロジェクトは0件
• 今後も継続して使用していく中で、因子の追加や閾値の見直しなど、精度をより高める改良が必要
• 「なぜ因子の閾値が上回る(下回る)と失敗リスクが高まるのか」といったプロジェクト側のコントロールに影響する要因を見つけ出し、対策する
現状と課題
P. 24
現状
課題
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
• 複数のメトリクスを各開発工程から選択することでプロジェクトの進行に合わせて失敗を予測できる
• 各メトリクスに適切な閾値を設けることで、プロジェクト側がメトリクスを監視しながらコントロールする基準とできる
• 失敗の定義は各組織が検出したい問題を考慮し、適切に設定する必要がある
まとめ
導入メリット
実運用に際して
P. 25
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
ご清聴ありがとうございました
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
[1] 森俊樹,覚井真吾,田村朱麗,“プロジェクト失敗リスク予測モデルの構築”,
プロジェクトマネジメント学会誌,2013
https://www.toshiba.co.jp/tech/review/2014/01/69_01pdf/f03.pdf
[2] 野中誠,小池利和,小室睦,“データ指向のソフトウェア品質マネジメント”,
日科技連出版社,2012
[3] 小池利和,“ソフトウェアメトリクス統計分析入門”,日科技連出版社,2015
[4] 涌井良幸,涌井貞美,“史上最強図解 これならわかる!ベイズ統計学”,ナツメ社,2012
[5] 砂塚利彦,“定量管理のススメ (セミナー資料)”,砂塚コンサルティングサービス株式会社,
2014
参考文献
P. 27
ソフトウェア品質シンポジウム2016
© 2016 Canon Imaging Systems Inc.
ソフトウェア品質シンポジウム2016