中間報告

協調フィルタリングを用いた
ソフトウェア部品推薦手法の提案と実装
井上研究室
市井 誠
Javaソフトウェア部品検索システム
SPARS-J(1/2)
ソフトウェア部品検索システム
ソフトウェア部品の再利用を支援するシステム
キーワードからソフトウェア部品を検索する
Javaソフトウェア部品検索システムSPARS-J
Javaのクラスを部品として,ソースコードを検索
Webインターフェースによる検索・部品情報の表示
キーワード検索
利用関係にある部品の一覧表示
パッケージ階層の表示 (パッケージブラウザ)
2015/10/1
平成15年度 特別研究報告
2
Javaソフトウェア部品検索システム
SPARS-J(2/2)
SPARS-Jでは,部品そのものを解析して得られる情報のみ
を検索に用いている
ソースコード中の文字列を切り出した索引語
ソースコードを解析して得られた利用関係
利用者の検索履歴からも,部品に関する情報が得られる
同時に使用される部品
頻繁に使用される部品
検索履歴情報を利用し,
ユーザへの有効な部品提示ができないだろうか?
2015/10/1
平成15年度 特別研究報告
3
協調フィルタリング
ユーザの好みに合うアイテムを推薦する手法
ユーザの好みを,アイテムに対する評価の傾向から推測
似た好みの人が高く評価したアイテムを推薦
書籍などのオンラインショップで利用されている
「好み」を「検索目的」と置き換え,ソフトウェア部品検索
システムに応用できないか?
ユーザの目的を,検索履歴から推測
類似した目的のユーザが表示した部品を推薦
協調フィルタリングの手法により,検索者の目的に応じた部品の
推薦を行う
2015/10/1
平成15年度 特別研究報告
4
準備:概念の対応
「ユーザ」
検索目的が変われば,別ユーザとして扱う必要がある
ブラウザを閉じた段階で目的を終えたと判断する
「ブラウザを閉じるまで」=「セッション」を1ユーザとして扱う
「評価」
検索者からの,明示的な入力は求めない
部品の表示履歴を暗黙的な評価として扱う
表示:評価値”1”
未表示:評価値”0”
2015/10/1
平成15年度 特別研究報告
5
手法の概要
1. 検索者の表示履歴を,セッション毎に記録する
2. 対象セッションへの推薦部品を求める
ユーザ間の相関を基にした手法を使用
2015/10/1
平成15年度 特別研究報告
6
表示履歴の記録
検索者
Webブラウザ
部品データベース
履歴データベース
部品
セッションの追加
履歴の記録
セ
ッ
シ
ョ
ン
1
:表示済
2
3
4
5
6
7
a
b
c
d
e
2015/10/1
平成15年度 特別研究報告
7
推薦部品を求める
検索者
Webブラウザ
部品データベース
履歴データベース
推薦部品
1.
2.
3.
部品
推薦値
3
0.64
各セッションとの相関 7
係数(類似度)を求める
各部品の推薦値を,相
関係数と評価値から求
める
推薦する部品を利用
者に提示する
1
2
3
4
5
6
7
セッションeとの
:表示済
相関係数
d
1
1
0
1
1
0
0
1
1
0
0
1
0
1
0
0
0
0
1
0
0
0
1
0
1
1
0
0
0.58
0.67
0
0.67
e
1 1 ?
0 1 ?
0 ?
0 ?
0
0.64
セ
ッ
シ
ョ
ン
部品
a
b
c
“?”に入る値を推測
推薦値
0.64
2015/10/1
平成15年度 特別研究報告
0
0
0.64
8
スクリーンショット
部品情報表示
検索結果一覧
推薦画面
ZipEntryを利用している部品の一覧
((履歴の表示,全推薦クラスの表示)
ZipEntryを利用する部品を,
( java.util.zip.ZipEntry クラス)
推薦部品で絞り込み)
SPARS-J トップページ
セッション中で表示した部品
推薦部品による絞り込みが無い時
: 63部品
推薦部品
2015/10/1
平成15年度 特別研究報告
9
適用実験
内容
SPARS-Jを利用してのJavaプログラムの作成
推薦機能を使う場合,使わない場合で比較
被験者
研究室の人々 8名
A1~A8
課題
スケルトンコードの実装
P0(練習用),
P1~P4
グループ
GP1 (A1~A4)
GP2 (A5~A8)
評価項目
検索時間
作業時間から,コーディング時間を除いたもの
適合率
適合部品数÷表示部品数
適合部品: 提出されたプログラムに使用したと見なせる部品
手順
GP1
SPARS-Jと課題に慣れる
GP2
1
P0 (推薦機能 無し)
2
P1,P2 (推薦機能 無し) P3,P4 (推薦機能無し)
3
P3,P4 (推薦機能 有り)
2015/10/1
P1,P2 (推薦機能 有り)
平成15年度 特別研究報告
推薦の計算には,手順1,2 で
記録された履歴のみが使わ
れる
10
実験結果と考察(1/3)
推薦 無し
検索時間の比較
40
推薦 有り
40
30
検索時
20
間(分)
10
GP1(無)
GP2(有)
0
30
検索時
20
間(分)
10
GP2(無)
GP1(有)
0
P1
P2
P3
課題
P4
課題
適合率の比較
1
0.8
0.6
適合率 0.4
0.2
0
P1
P2
課題
1
0.8
GP1(無)
GP2(無)
0.6
適合率 0.4
GP2(有)
GP1(有)
0.2
•全体的に推薦機能を使用した場合に良い結
0
果が出ている P3
P4
課題
•P1で特に差が出ている
•P3では差が小さい
2015/10/1
平成15年度 特別研究報告
11
実験結果と考察(2/3)
課題P1では大きな差が見られる
どの被験者も知識の無い分野の課題
未知の分野に関して検索するときに有効である事を示
唆
課題P3ではあまり差が見られない
課題内容の経験者がいた
推薦機能を利用しなくても,効率の良い検索ができた
推薦機能の有無で差の無い被験者がいた
2015/10/1
平成15年度 特別研究報告
12
実験結果と考察(3/3)
効率の上がっていない被験者が存在する
表示済み部品は推薦対象外とした事が原因
該当する被験者の検索行動 :
様々な部品に軽く目を通したあとで,見直していく
推薦を必要とした時に,推薦されるべき部品が既に履歴に
入っていた
 有効な推薦がされなかった
表示済み部品も推薦するかどうか,利用者が選択でき
るようにする などの対応が必要
2015/10/1
平成15年度 特別研究報告
13
まとめと今後の課題
まとめ
ソフトウェア部品に適した推薦手法を提案し,SPARS-Jに適用し
た
適用実験により,検索効率の向上が確認された
今後の課題
アルゴリズムの改良
パフォーマンス
精度
– 履歴の重み付けなど
インターフェースの改良
表示済み部品の扱い
検索画面などからのシームレスな利用
より大規模な実験
2015/10/1
平成15年度 特別研究報告
14
スライド ショーの最後です。 クリックしても終了しません。
2015/10/1
平成15年度 特別研究報告
15
参考資料
2015/10/1
平成15年度 特別研究報告
16
類似部品群
本来同一である部品が,複数存在
コピーされた部品など
「類似部品群」と呼ばれる
「類似部品群」を「アイテム」に対応させる
(簡単のため説明では省略し,「部品」とした)
2015/10/1
平成15年度 特別研究報告
17
提案手法での相関係数
2ユーザの「どちらか」が評価した部品と,
どちらも評価していない部品について計算
a, i : ユーザ
vi , j : ユーザ iの部品jに対する評価値
I i : ユーザ iが評価 (表示)した部品集合
I d : ユーザ
a , iのどちらも評価してい
ない部品集合
(| I d | 1 0 0 0 0)
I  I a  Ii  I d
if j  I i
v
v'   i , j
 0 if j  I i
1
vi 
 v'i , j
| I | jI
c ( a, i ) 
 (v '
jI
 (v '
jI
2015/10/1
a, j
a, j
va )(v 'i , j vi )
va ) 2 (v 'i , j vi ) 2
平成15年度 特別研究報告
18
本来の相関係数
2ユーザの「両方」が評価した項目について計算
a, i : ユーザ
vi , j : ユーザ iの部品jに対する評価値
I i : ユーザ iが評価(表示)した部品集合
I  I a  Ii
1
vi 
vi , j

| I | jI
c ( a, i ) 
 (v
jI
a, j
 va )(vi , j  vi )
2
2
(
v

v
)
(
v

v
)
 a, j a
i, j
i
jI
2015/10/1
平成15年度 特別研究報告
19
提案手法での推薦値
相関係数の2乗を重みとして加重平均
U:ユーザaとの相関係数が0より大きい全てのユーザ
c(a, i )  if c(a, i )  0
c ' ( a, i )  
 0 if c(a, i )  0
c' (a, i )v'i , j

pa , j  iU
 | c ' ( a, i ) |
iU
2015/10/1
平成15年度 特別研究報告
20
一般的な手法での推薦値
U:部品jを評価したユーザの集合
pa , j  va
 c(a, i)(v  v )

 | c ( a, i ) |
i, j
iU
i
iU
2015/10/1
平成15年度 特別研究報告
21
実験結果 (一覧表)
GP1 (推薦機能 無し)
GP2 (推薦機能 有り)
A1
A2
A3
A4
平均
A5
A6
A7
A8
平均
検索時
間(分)
P1
28
47
14
50
34.8
4
3
28
15
12.5
P2
25
19
2
28
18.5
2
4
5
2
3.2
適合率
P1
0.42
0.53
0.23
0.26
0.36
1
1
0.78
0.75
0.89
P2
0.06
0.38
1
0.15
0.18
1
1
0.4
1
0.73
GP2 (推薦機能 無し)
GP1 (推薦機能 有り)
A5
A6
A7
A8
平均
A1
A2
A3
A4
平均
検索時
間(分)
P3
9
18
44
26
24.2
14
60
3
9
21.5
P4
23
45
13
23
26
3
38
7
12
15
適合率
P3
1
1
0.55
0.37
0.73
1
0.5
1
1
0.88
P4
0.55
0.63
0.73
0.73
0.66
0.67
0.64
0.83
1
0.79
2015/10/1
平成15年度 特別研究報告
22
実験結果(被験者ごとの比較)
推薦 無し
検索時間の比較 (被験者ごと)
60
50
40
平均検索
30
時間(分)
20
10
0
P1 , P2 (無)
P3 , P4 (有)
A1
A2
A3
A4
推薦 有り
60
50
40
平均検索
30
時間(分)
20
10
0
平均
P3 , P4 (無)
P1 , P2 (有)
A5
A6
A7
A8
平均
課題
課題
適合率の比較 (被験者ごと)
1
1
0.8
0.8
平均適合 0.6
率
0.4
P1 , P2 (無)
P3 , P4 (有)
平均適合 0.6
率
0.4
0.2
0.2
0
0
A1
A2
A3
A4 平均
•全体的に推薦機能を使用した課題の方が良い
課題
P3 , P4 (無)
P1 , P2 (有)
A5
A6
A7
A8
平均
課題
•被験者A2, A7は効率が上がったとは言えない
2015/10/1
平成15年度 特別研究報告
23
実験結果と考察
効率の上がっていない被験者
該当する被験者の検索行動
まず,様々な部品に目を通す
– 気になるものがあれば,メモやブックマーク
ある程度の数を確認した後,実際に使う部品を探す
– メモやブックマークを参考にする
– 推薦されるべき部品は既に履歴の中(→推薦されない)
実質的に,推薦機能は使っていない
2015/10/1
平成15年度 特別研究報告
24
定性的評価[アンケート] (1/2)
5段階評価
A1
推薦部品は役立っ 4
たか?
A2
A3
A4
A5
A6
A7
A8
最頻値
3
5
2
5
4
4
5
4,5
3
4
3
3
5
3
3
3
(1:役立たず~5:役立った)
UIは使いやすかった 3
か?
(1:問題外~5:優)
推薦部品は,おおむね活用されたと考えられる
ユーザーインターフェースは,可もなく不可もなくという評価
2015/10/1
平成15年度 特別研究報告
25
定性的評価[アンケート](2/2)
自由記入
評価できる点
推薦が履歴と一緒に表示されるため,自然に利用できた
使ったことのないライブラリ/クラス群を利用するとき,ひとつのクラスか
らクラスの塊が得られるので便利そう
改善点
推薦機能は別ページではなく,他のページからシームレスに使える
方が良い
推薦クラスは,クラス名のみの提示なので使えるかどうか判定しづら
い
その他
「みんな間違ったところでは一緒に間違う」という現象に対する懸念
新規に追加された部品は推薦されない,という問題
2015/10/1
平成15年度 特別研究報告
26