協調フィルタリングを用いた ソフトウェア部品推薦手法の提案と実装 井上研究室 市井 誠 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 | jI c ( a, i ) (v ' jI (v ' jI 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 | jI c ( a, i ) (v jI a, j va )(vi , j vi ) 2 2 ( v v ) ( v v ) a, j a i, j i jI 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 iU | c ' ( a, i ) | iU 2015/10/1 平成15年度 特別研究報告 20 一般的な手法での推薦値 U:部品jを評価したユーザの集合 pa , j va c(a, i)(v v ) | c ( a, i ) | i, j iU i iU 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
© Copyright 2024 ExpyDoc