協調フィルタリングに基づく ソフトウェア開発技術の推薦 ソフトウェアサイエンス研究会@信州大学 2005 年 6 月 23 日 奈良先端科学技術大学院大学 情報科学研究科 秋永 知宏,大杉 直樹,柿元 健,角田 雅照, 門田 暁人,松本 健一
1 ソフトウェア開発技術の習得の必要性 新しいソフトウェア開発技術が急速に増加している. UML , COCOMO II ,アスペクト指向など 毎週約 10 個の新出単語(技術の名前など)が IT 用語辞 典に追加され, 2005 年現在,単語数は 6797 語である. Incept Inc. , “IT 用語辞典 e-Words” , ; 生産性や品質を向上させるために,これらの新しい 開発技術を習得していく必要がある.
2 技術の習得における問題 技術の習得に充てられる時間は非常に少ない. 教育にかける時間(年平均) 100 時間未満 77.0% 100 ~ 200 時間未満 16.4% 200 ~ 300 時間未満 3.3% 300 ~ 400 時間未満 1.6% 400 ~ 500 時間未満 0.0% 500 時間以上 1.6% 経済産業省,組み込みソフトウェア開発強化推進委員会(監修), “ 2004 年度版 組み込みソフトウェア産業実態調査報告書 ” , 2004 . 大量の開発技術の中から,業務内容に適した技術 を取捨選択して学習することが求められる.
3 目的とアプローチ 目的 習得する技術の取捨選択を容易にする. アプローチ 個々の開発者の興味を事前に調査し,業務に適 していると思われるソフトウェア開発技術を, 協調フィルタリングを用いて推薦する.
4 協調フィルタリングとは? 協調:複数のユーザの知識を利用して, フィルタリング:大量のアイテムの中から,役立つ アイテムだけを選び出す(推薦する). 好みの傾向が類似したユーザ F K A B DE C G IJ H L NO M P Q ST R 大量のアイテム F が良い !K が好き ! ? ? F F K K
5 応用例: Amazon 社の書籍推薦システム データ収集各ユーザが,読み終えた本を 5 (好き) ~ 1 (嫌い)の 5 段階で評価する. 好みの傾向が似ているユーザが高く評価した本が推 薦される.
6 書籍 2 書籍 1 書籍 4書籍 4 書籍 3 書籍 5書籍 5 推薦対象ユーザ ユーザ A ユーザ B ユーザ C ? (知らない) 5 (好き) 5 (好き) 1 (嫌い) 5 (好き) 5 (好き) ? (知らない) 5 (好き) 5 (好き) 5 (好き) 1 (嫌い) 1 (嫌い) 1 (嫌い) 1 (嫌い) ? (知らない) 3 (普通) 5 (好き) 3 (普通) 1 (嫌い) ? (知らない) 各ユーザによる,各技術に対する 4 段階の評価値を 用いて推薦を行う. 推薦を行う際に用いるデータ 推薦対象開発者 開発者 A 開発者 B 開発者 C 技術 2 技術 1 技術 4 技術 3 予測対象 技術 ? (知らない) 4 (興味大) 4 (興味大) 1 (興味なし) 4 (興味大) ? (知らない) 4 (興味大) 4 (興味大) 4 (興味大) 1 (興味なし) 1 (興味なし) 4 (興味大) 1 (興味なし) 1 (興味なし) ? (知らない) 2 (興味小) 4 (興味大) 3 (興味あり) 1 (興味なし) ? (知らない)
7 ? (知らない) ? (知らない) ? (知らない) ? (知らない) ? (知らない) 4 (興味大) 3 (興味あり) 2 (興味小) 1 (興味なし ) 4 (興味大) 推薦するソフトウェア開発技術の決定 1. 開発者が「知らない」と答えた全技術について,評 価値を予測する. ユーザベース予測 アイテムベース予測 2. 評価値が 3 以上になると予測される技術を推薦す る 技術 6 技術 5 技術 8 技術 7 技術 9 予測した評価値 フィルタリング 推薦対象ユーザ に対する推薦 技術 5 4 (興味大) 技術 9 4 (興味大) 技術 6 3 ( 興味あり )
8 類似度: 0.92 類似度: 1.0 類似度: –0.97 技術 2 技術 1 技術 4 技術 3 予測対象 技術 4 (興味大) 4 (興味大) 1 (興味なし) 推薦対象開発者 開発者 A 開発者 B 開発者 C 1. 類似度計算:推薦対象開発者と他の開発者間との類 似度を求める. 2. 予測値計算:類似度の高い k 人の開発者の評価値 を類似度で加重平均し,「知らない」技術の評価値 を算出する. 評価値予測方法 1 :ユーザベース予測 4 (興味大) ? (知らない) 4 (興味大) 4 (興味大) 4 (興味大) 1 (興味なし) 1 (興味なし) 4 (興味大) 1 (興味なし) 1 (興味なし) ? (知らない) 2 (興味小) 4 (興味大) 3 (興味あり) 1 (興味なし) ? (知らない) ? (知らない) 4 (興味大) 予測する
9 類似度 1.0 類似度 類似度 0.1 技術 2 技術 1 4 (興味大) 4 (興味大) 1 (興味なし) 推薦対象開発者 開発者 A 開発者 B 開発者 C 1. 類似度計算:技術間の類似度を求める. 2. 予測値計算:類似度の高い k 個の技術の評価値を 類似度で加重平均し,「知らない」技術の評価値を 算出する. 評価値予測方法 2 :アイテムベース予測 4 (興味大) ? (知らない) 4 (興味大) 4 (興味大) 4 (興味大) 1 (興味なし) 1 (興味なし) 4 (興味大) 1 (興味なし) 1 (興味なし) ? (知らない) 2 (興味小) 4 (興味大) 3 (興味あり) 1 (興味なし) ? (知らない) ? (知らない) 4 (興味大) 技術 4 技術 3 予測する 予測対象 技術
10 評価実験 目的 協調フィルタリングが開発技術の推薦に効果があるか否 かを明らかにする. 効果がある場合,ユーザベース予測とアイテムベース予 測のどちらがより効果があるかを明らかにする. 以下の方法を用いて推薦を行い,精度を比較した. ユーザーベース予測に基づく推薦 アイテムベース予測に基づく推薦 単純な推薦 各技術に対する評価の平均値を予測値とする 例 ) Java の評価値が 4, 3,4,3 のとき,評価の予測値は 3.5 とな る 全員からの評価が高い技術を推薦する
11 1. データ中の評価値をひとつ選び,隠蔽する. 2. 隠蔽した評価値を予測する. 3. 実際の評価値(実測値)と予測した評価値(予測値)を比 較し,精度評価指標を計算する. 4.1 ~ 3 の手順を,すべての開発者に対して行った (leave one out 法 ) . 類似度: 0.98 類似度: 1.0 類似度: – (興味大) 4 (興味大) 4 (興味大) 1 (興味なし) 3 (興味あり) 4 (興味大) 4 (興味大) 1 (興味なし) 1 (興味なし) ? (知らない) 2 (興味小) 1 (興味なし) 予測対象 技術 技術 2 技術 1 技術 4 技術 3 推薦対象開発者 開発者 A 開発者 B 開発者 C 予測する 実験手順 4 (興味大) 4 (興味大) 1 (興味なし) ? (知らない) 1 (興味なし) 4 (興味大) 3 (興味あり) ? (知らない) 比較する 3 (興味あり) ? (予測対象) 4 (興味大)
12 実験に用いたデータ データ収集方法 各ソフトウェア開発技術に対する興味の度合いをアン ケートにより調査した. 中間値が付けられないように,興味の度合いは 4 段階とし た. 調査対象者 21 社のソフトウェア開発技術者: 31 名, 2 大学の大学院生 ( 情報科学専攻 ) : 19 名 調査対象技術 ソフトウェア開発に関する技術: 51 個 エクストリームプログラミング( XP ),能力成熟度モデル統合 ( CMMI ),統一モデリング言語( UML ), Web サービスなど
13 データの詳細
14 評価指標 (1/2) 絶対誤差の平均値. 適合率:推薦された技術 (N r 個 ) のうち,実際にユー ザが興味を持っていた(実測値 3 以上)技術 (N a 個 ) の割合. 再現率:実際にユーザが興味を持っていた(実測値 3 以上)技術 (N u 個 ) のうち,推薦された技術 (N r 個 ) の 割合.
15 評価指標 (2/2) F1 値:適合率と再現率を1つの値で表現した値 閾値を変更すると,適合率と再現率が変化する. 例 ) 推薦する技術数が多くなるように閾値を設定すると,再現率 は大きくなるが,適合率は低い値となる. 適合率と再現率はトレードオフの関係にある. 閾値を変化させ, F1 値の最大値を採用した.
16 実験結果 (1/2) 単純な推薦と比較して,ユーザベース,アイテム ベース共に,高い精度を示した.
17 実験結果 (2/2) 閾値を変化させた時の適合率と再現率の関係
18 実験結果まとめ 協調フィルタリングに基づく推薦のほうが,単純な 推薦よりも精度が高かった. 絶対誤差平均については有意差あり 再現率,適合率は10~20%程度高い ユーザーベースとアイテムベースの間では, 絶対誤差平均については有意差あり(ユーザベースが良 い) 再現率,適合率はどちらが良いとはいえない.
19 類似度に基づく可視化 技術間の類似度に基づき,類似関係グラフを作成し た. 開発者は,グラフを見ることで,各技術の位置付け を知ることができる. 直感的に類似していると考えられる開発技術が,グラフ 上においても距離が近いことが確認できた.
20 アンケートご協力のお願い 本研究に興味を持たれた方 アンケートに協力してもよい方 メールアドレスを記入していただいた方には,結果 を返信いたします. 個人情報の利用目的 本アンケートにて収集した個人情報は,下記の目的で使 用します. アンケート結果集計による協力者全体の傾向調査. 個々のアンケート結果分析によるオススメ技術等の分析. 分析方法の有効性を確認するための事例研究(実験デー タとして利用). 結果を個人名・組織名を隠蔽した上で一般に公開. アンケート協力者への結果のフィードバック
21 今後の課題 より大規模なデータセットに対しても,提案手法が 有効であるかどうかを確かめる. 開発者のデータを増やす. 開発技術の項目数を増やす. 重回帰分析など,他の手法を用いて推薦を行い,精 度の比較を行う. 提案方法を実装し, Web などで公開する.