Application of Collaborative Filtering for

Application of Collaborative Filtering for
Software Component Retrieval System
Graduate School of Information
Science and Technology, Osaka
Makoto Ichii, Reishi Yokomori,
Katsuro Inoue
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
1
ソフトウェア部品検索システム
過去に開発された大量のソフトウェア資産
企業内で開発
WWW上で公開
再利用や理解を支援するツールが必要
部品数が多いために把握が困難
部品に詳しい人が不在
ソフトウェア検索システム
ソフトウェア資産をデータベースに登録
キーワード入力により部品を検索・取得
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
Javaソフトウェア部品検索システム
SPARS-J
Javaソフトウェア部品検索システムSPARS-J
Javaのクラスを部品として,ソースコードを検索
Webインターフェースによる検索・部品情報の表示
キーワードによる全文検索
利用関係にある部品の一覧表示
パッケージ階層の表示
(パッケージブラウザ)
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
研究の目的
SPARS-Jでは,部品の静的な解析結果のみを利
用している
過去のユーザの検索行動をフィードバックする事で,
検索の支援ができないか?
様々なユーザが,それぞれの目的でシステムを利用
過去に同じ目的で検索したユーザがいるかもしれない
そのユーザが利用した部品を提示することで,ユーザの検
索の労力を減らせる
協調フィルタリングの利用により,「部品の推薦」とい
う形でユーザの部品検索を支援する
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
協調フィルタリング(1/2)
大量のアイテムの中から,ユー
ザから得た情報をもとに,推薦
するアイテムを決定する手法
書店などのオンラインショップで
利用されている
様々な手法が提案されている
本研究では,ユーザ間の相関を
もとにした手法を応用
ユーザが未評価のアイテムに対し
て,その評価値を推測する
amazon.co.jp
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
協調フィルタリング(2/2)
アイテム
ユーザ
評価
1
2
D
3
推薦
A
B
C
D
E
5
3
1
?
?
1
?
4
1
4
5
4
1
5
2
好みが似ている
3
2
?
4
2
1. ユーザから,各アイテムに対する評価を得る
2. ユーザの評価をもとに,アイテムを推薦する
1. 評価の類似度の高いユーザを求める
2. 類似度の高いユーザの評価をもとに,推薦するアイテムを決定
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
概念の対応 (1/2)
「アイテム」
本来同一である部品が,複数存在
コピーして利用されている部品など
「類似部品群」と呼ばれる
類似部品を個別に扱うと,本来同じ部品に対する評価が別々の
ものとして扱われてしまう
「類似部品群」をアイテムとして扱う
以降は,簡単のために「アイテム」=「部品」として説明
「評価」
明示的に評価を入力するのは,労力がいる
表示履歴を,部品に対する暗黙的な評価として扱う
表示した部品に,評価値 1をつける
表示していない部品は評価値 0
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
7
概念の対応 (2/2)
「ユーザ」
同じユーザでも,時と場合により異なる目的で検索を行う
部品に対する評価の傾向が変化する
履歴を全て使うと,目的に合わない部品を推薦してしまう
検索目的が変われば,別のユーザとして扱う必要がある
ブラウザを閉じた段階で目的を終えたと判断する
「ブラウザを閉じるまで」=「セッション」をユーザとして扱う
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
提案手法の手順
ユーザの検索履歴を,セッションごとに取得する
対象となるセッションへ,部品を推薦する
セッション間の相関係数を求める
他セッションの評価(履歴)をもとに,推薦部品を決定
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
履歴の取得
ユーザ
Webブラウザ
部品データベース
履歴データベース
部品
セッションの追加
履歴の記録
セ
ッ
シ
ョ
ン
1
:表示済
2
3
4
5
6
7
a
b
c
d
e
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
部品の推薦
ユーザ
Webブラウザ
部品データベース
履歴データベース
3
各セッションとの相関
係数を求める
各部品の推薦値を,相
関係数と評価値から求
める
推薦する部品を利用
者に提示する
部品
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
7
セ
ッ
シ
ョ
ン
a
b
c
“?”に入る値を推測
推薦値
0.64
0
0
0.64
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
SPARS-Jへの実装
部品登録部
推薦部
部品の登録
部品の推薦
履歴データ
ベース
部品データ
ベース
履歴の取得
ユーザ
部品検索部
検索・表示
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
スクリーンショット
部品情報表示
検索結果一覧
推薦画面
ZipEntryを利用している部品の一覧
((履歴の表示,全推薦クラスの表示)
ZipEntryを利用する部品を,
( java.util.zip.ZipEntry クラス)
推薦部品で絞り込み)
SPARS-J トップページ
セッション中で表示した部品
推薦部品による絞り込みが無い時
: 63部品
推薦部品
→3部品
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
適用実験の概要(1/2)
目的
推薦機能が検索効率の改善に役立つかどう
か検証する
…
public static void main(String[] args) {
// 入力ファイル: data/a.gif
File inFile = new File("data", "a.gif");
String inFileSuffix = "gif";
内容
// 出力ファイル: data/b.png
File outFile = new File("data", "b.png");
String outFileSuffix = "png";
SPARS-Jを利用してのJavaプログラム作成
ImageConverter imageConverter = new ImageConverter();
try {
BufferedImage image =
imageConverter.readImage(inFile, inFileSuffix);
if (image != null) {
// ビューアで確認
new Viewer(image);
imageConverter.writeImage(image, outFile,
outFileSuffix);
} else {
System.out.println("Image is null");
}
} catch (Exception e) {
e.printStackTrace();
}
与えられたスケルトンコードに対して実装
SPARS-Jで検索したソースコードを参考する
練習課題を含む5個の課題(P0~P4)を用意
被験者
井上研究室の学生・研究員 8名
(A1~A8)
2グループ(GP1,GP2)に分け,比較
}
SPARS-J データベース
/**
* 拡張子に応じた形式でイメージを読み込み, BufferedImageで返す
*
* @param file 読み込み元 ファイル
* @param suffix 拡張子
* @return 読み込んだイメージ
*/
public BufferedImage readImage(File file, String
suffix) throws IOException {
BufferedImage image = null;
JDK,WWW上から収集したソースなど
約35,000 クラス
履歴データベースは空の状態から開始
// ここにコードを書いて下さい
return image;
}
…
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
適用実験の概要(2/2)
手順
GP1 (A1~A4)
GP2 (A5~A8)
1
P0
2
P1, P2
P3, P4
3
P3, P4
P1, P2
SPARS-Jと課題に慣れる
グループ分けの参考にする
推薦機能 無し
推薦機能 有り
評価項目
検索時間
作業時間全体から コーディング時間を引いたもの
適合率
表示した部品のうち,プログラムに利用できる部品の割合
これらを,推薦機能を利用する場合/利用しない場合で比較
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
実験結果と考察(1/4)
推薦 無し
検索時間の比較
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
GP1(無)
GP2(有)
P1
P2
課題
1
0.8
0.6
適合率
0.4
0.2
0
GP2(無)
GP1(有)
P3
P4
課題
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
実験結果と考察(2/4)
課題P1では大きな差が見られる
どの被験者も知識の無い分野の課題
未知の分野に関して検索するときに有効である
課題P3ではあまり差が見られない
課題分野の知識のある被験者の存在
推薦機能を利用しなくても,効率の良い検索ができた
推薦機能の有無による差が見られない被験者の存在
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
実験結果と考察(3/4)
推薦 無し
検索時間の比較 (被験者ごと)
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
平均
課題
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
実験結果と考察(4/4)
効率の上がっていない被験者が存在する
「表示済み部品は推薦しない」という方針が原因
該当する被験者の検索行動 :
まず様々な部品に軽く目を通し,後半はそれらを見直しながら
有効な部品を絞り込んでいく
利用できる部品は,序盤で履歴に入ってしまい,ほとんど推
薦されない
 推薦機能を有効に利用できていなかった
表示済み部品も推薦するかどうか,利用者が選択でき
るようにする などの対応が必要
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
19
まとめと今後の課題
まとめ
ソフトウェア部品を対象とした推薦手法を提案し,SPARS-Jに適
用した
適用実験により,ユーザの検索効率の向上が確認された
今後の課題
精度の向上
履歴の重み付けなど
ユーザーインターフェースの改良
表示済み部品の扱い
検索画面などからのシームレスな利用
より大規模な実験
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
20