Document

協調フィルタリングに基づく
ソフトウェア開発技術の推薦
ソフトウェアサイエンス研究会@信州大学
2005年6月23日
奈良先端科学技術大学院大学 情報科学研究科
秋永 知宏,大杉 直樹,柿元 健,角田 雅照,
門田 暁人,松本 健一
ソフトウェア開発技術の習得の必要性

新しいソフトウェア開発技術が急速に増加している.


UML,COCOMO II,アスペクト指向など
毎週約 10 個の新出単語(技術の名前など)が IT 用語辞典に
追加され,2005 年現在,単語数は 6797語である.


Incept Inc.,“IT用語辞典 e-Words”,1997-2004; http://e-words.jp
生産性や品質を向上させるために,これらの新しい開発
技術を習得していく必要がある.
1
技術の習得における問題

技術の習得に充てられる時間は非常に少ない.
300~400時間未満
1.6%
200~300時間未満
3.3%
100~
200時間未満
16.4%
400~500時間未満 0.0%
500時間以上
1.6%
100時間未満
77.0%
教育にかける時間(年平均)
経済産業省,組み込みソフトウェア開発強化推進委員会(監修),“2004年度版 組み込みソフトウェア産業実態調査報告書”,2004.

大量の開発技術の中から,業務内容に適した技術を
取捨選択して学習することが求められる.
2
目的とアプローチ


目的
 習得する技術の取捨選択を容易にする.
アプローチ
 個々の開発者の興味を事前に調査し,業務に適して
いると思われるソフトウェア開発技術を,協調フィル
タリングを用いて推薦する.
3
協調フィルタリングとは?


協調:複数のユーザの知識を利用して,
フィルタリング:大量のアイテムの中から,役立つアイテ
ムだけを選び出す(推薦する).
F が良い!
K が好き!
F
?
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
K
?
好みの傾向が類似したユーザ
大量のアイテム
4
応用例:Amazon 社の書籍推薦システム


データ収集各ユーザが,読み終えた本を 5(好き)~1
(嫌い)の 5 段階で評価する.
好みの傾向が似ているユーザが高く評価した本が推薦
される.
5
推薦を行う際に用いるデータ

各ユーザによる,各技術に対する 4 段階の評価値を用
いて推薦を行う.
推薦対象開発者
推薦対象ユーザ
開発者
ユーザ A
開発者
ユーザ B
開発者
ユーザ C
書籍 1
技術
書籍 2
技術
書籍 3
技術
書籍 4
技術
1
3
2
5
4
5
4
予測対象
書籍 5
技術
?
(興味なし)
(嫌い)
(興味小)
(普通)
(興味大)
(好き)
(興味大)
(好き)
(知らない)
1
?
5
4
5
4
5
4
(興味大)
(好き)
(興味大)
(好き)
(興味大)
(好き)
?
5
4
5
4
(興味大)
(好き)
(興味大)
(好き)
1
1
(興味なし)
(嫌い)
(知らない)
1
3
(興味なし)
(嫌い)
(興味あり)
(普通)
(知らない)
?
5
4
(知らない)
(興味大)
(好き)
1
(興味なし)
(嫌い)
(興味なし)
(嫌い)
(興味なし)
(嫌い)
6
推薦するソフトウェア開発技術の決定
1. 開発者が「知らない」と答えた全技術について,評価値
を予測する.


ユーザベース予測
アイテムベース予測
2. 評価値が 3 以上になると予測される技術を推薦する
予測した評価値
技術 5
技術 6
技術 7
技術 8
技術 9
?
4
?
3
?
2
1
?
?
4
(興味大) (知らない)
(興味あり) (知らない)
(興味小) (知らない)
(興味大)
(知らない)
(興味なし) (知らない)
フィルタリング
技術 5
推薦対象ユーザ
4
に対する推薦
(興味大)
技術 6
技術 9
3
4
(興味あり)
(興味大)
7
評価値予測方法 1:ユーザベース予測
1. 類似度計算:推薦対象開発者と他の開発者間との類似
度を求める.
2. 予測値計算:類似度の高い k 人の開発者の評価値を
類似度で加重平均し,「知らない」技術の評価値を算出
する.
推薦対象開発者
開発者 A
開発者 B
開発者 C
技術 1
技術 2
技術 3
技術 4
1
2
4
4
予測対象
技術
?
4
(興味なし)
(興味小)
(興味大)
(興味大)
(興味大)
(知らない)
1
?
4
4
4
(興味大)
(興味大)
(興味大)
?
4
4
(興味大)
(興味大)
1
1
(興味なし) (知らない)
1
3
(興味なし) (興味あり) (知らない)
?
4
(知らない)
(興味大)
1
(興味なし) (興味なし) (興味なし)
予測する
類似度:1.0
類似度:0.92
類似度:–0.97
8
評価値予測方法 2:アイテムベース予測
1. 類似度計算:技術間の類似度を求める.
2. 予測値計算:類似度の高い k 個の技術の評価値を類
似度で加重平均し,「知らない」技術の評価値を算出す
る.
類似度 類似度 類似度 類似度
推薦対象開発者
開発者 A
開発者 B
開発者 C
予測する
0.1
-0.98
1.0
1.0
技術 1
技術 2
技術 3
技術 4
1
2
4
4
?
4
(興味なし)
(興味小)
(興味大)
(興味大)
(知らない)
(興味大)
1
?
4
4
4
(興味大)
(興味大)
(興味大)
?
4
4
(興味大)
(興味大)
1
1
(興味なし) (知らない)
1
3
(興味なし) (興味あり) (知らない)
?
4
(知らない)
(興味大)
1
予測対象
技術
(興味なし) (興味なし) (興味なし)
9
評価実験

目的



協調フィルタリングが開発技術の推薦に効果があるか否か
を明らかにする.
効果がある場合,ユーザベース予測とアイテムベース予測
のどちらがより効果があるかを明らかにする.
以下の方法を用いて推薦を行い,精度を比較した.



ユーザーベース予測に基づく推薦
アイテムベース予測に基づく推薦
単純な推薦



各技術に対する評価の平均値を予測値とする
例) Javaの評価値が4, 3 ,4 ,3のとき,評価の予測値は3.5となる
全員からの評価が高い技術を推薦する
10
実験手順
1. データ中の評価値をひとつ選び,隠蔽する.
2. 隠蔽した評価値を予測する.
3. 実際の評価値(実測値)と予測した評価値(予測値)を比較し,
精度評価指標を計算する.
4. 1~3の手順を,すべての開発者に対して行った(leave one out
法).
予測対象
推薦対象開発者
開発者 A
開発者 B
開発者 C
技術 1
技術 2
技術 3
技術 4
1
2
4
4
(興味なし)
(興味小)
(興味大)
1
?
4
4
4
(興味大)
(興味大)
(興味大)
4
4
(興味大)
(興味大)
1
1
(興味なし) (知らない)
1
比較する
3
?
(興味なし) (興味あり) (知らない)
?
4
(知らない)
(興味大)
1
技術
3
?
4
(興味大) (予測対象)
(興味あり)
(興味大)
(興味なし) (興味なし) (興味なし)
予測する
類似度:1.0
類似度:0.98
類似度:–0.97
11
実験に用いたデータ

データ収集方法



調査対象者



各ソフトウェア開発技術に対する興味の度合いをアンケート
により調査した.
中間値が付けられないように,興味の度合いは4段階とした.
21社のソフトウェア開発技術者:31名,
2大学の大学院生(情報科学専攻):19名
調査対象技術

ソフトウェア開発に関する技術:51個

エクストリームプログラミング(XP),能力成熟度モデル統合(CMMI),
統一モデリング言語(UML),Webサービスなど
12
データの詳細
50
45
40
35
30
25
20
15
10
5
0
KDesktopEnvironment(KDE)
Qt
VisualComponentLibrary(VCL)
MicrosoftFoundationClasses(MFC)
WindowsAPI
J2SESDK
統計的品質管理(SQC)
総合的品質管理(TQM)
全社的品質管理(TQC)
オブジェクト指向設計
構造化設計
サービス指向アーキテクチャ
Webサービス
SOAP
ExtensibleMarkupLanguage(XML)
GoalQuestionMetric(GQM)アプローチ
AgileCOCOMO
COCOMOII
COCOMO
ファンクション・ポイント法
COBOL
LISP
Python
Ruby
Perl
Pascal
VisualBasic(VB)
ドットネット(.NET)
C/C++
CommonGatewayInterface(CGI)
HypertextPreprocessor(PHP)
ActiveServerPages(ASP)
JavaServerPages(JSP)
EnterpriseJavaBeans(EJB)
Java
シーボック(SWEBOK)
ピンボック(PMBOK)
統一モデリング言語(UML)
チームソフトウェアプロセス(TSP)
パーソナルソフトウェアプロセス(PSP)
能力成熟度モデル統合(CMMI)
ソフトウェア能力成熟度モデル(SWISO9000
ラショナル統一プロセス(RUP)
エクストリーム・モデリング(XM)
フィーチャ駆動型開発(FDD)
クリスタル・ファミリ
適応型ソフトウェア開発(ASD)
リーン・ソフトウェア開発(LSD)
スクラム
エクストリームプログラミング(XP)
13
興味あり(3,4)
興味なし(1,2)
評価指標(1/2)

絶対誤差の平均値.
 実測値-予測値
絶対誤差の平均値=

n
n
適合率:推薦された技術(Nr個)のうち,実際にユーザが
興味を持っていた(実測値3以上)技術(Na個)の割合.
Na
適合率= 100%
Nr

再現率:実際にユーザが興味を持っていた(実測値3以
上)技術(Nu個)のうち,推薦された技術(Nr個)の割合.
Nr
再現率= 100%
Nu
14
評価指標(2/2)

F1値:適合率と再現率を1つの値で表現した値
2  再現率 適合率
F1値 
再現率  適合率

閾値を変更すると,適合率と再現率が変化する.



例)推薦する技術数が多くなるように閾値を設定すると,再現率は大き
くなるが,適合率は低い値となる.
適合率と再現率はトレードオフの関係にある.
閾値を変化させ,F1値の最大値を採用した.
15
実験結果(1/2)

単純な推薦と比較して,ユーザベース,アイテムベース
共に,高い精度を示した.
0.80
0.60
ユーザベース
アイテムベース
単純な推薦
0.40
0.20
0.00
絶対誤差平均
F1値
16
実験結果(2/2)
閾値を変化させた時の適合率と再現率の関係
100%
80%
適合率

60%
40%
20%
0%
0%
20%
40%
60%
80%
100%
再現率
ユーザベース
アイテムベース
単純な推薦
17
実験結果まとめ

協調フィルタリングに基づく推薦のほうが,単純な推薦
よりも精度が高かった.



絶対誤差平均については有意差あり
再現率,適合率は10~20%程度高い
ユーザーベースとアイテムベースの間では,


絶対誤差平均については有意差あり(ユーザベースが良い)
再現率,適合率はどちらが良いとはいえない.
18
類似度に基づく可視化


技術間の類似度に基づき,類似関係グラフを作成した.
開発者は,グラフを見ることで,各技術の位置付けを知
ることができる.

直感的に類似していると考えられる開発技術が,グラフ上に
おいても距離が近いことが確認できた.
19
アンケートご協力のお願い




本研究に興味を持たれた方
アンケートに協力してもよい方
メールアドレスを記入していただいた方には,結果を返
信いたします.
個人情報の利用目的






本アンケートにて収集した個人情報は,下記の目的で使用し
ます.
アンケート結果集計による協力者全体の傾向調査.
個々のアンケート結果分析によるオススメ技術等の分析.
分析方法の有効性を確認するための事例研究(実験データと
して利用).
結果を個人名・組織名を隠蔽した上で一般に公開.
アンケート協力者への結果のフィードバック
20