協調フィルタリングに基づく ソフトウェア開発技術の推薦 ソフトウェアサイエンス研究会@信州大学 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
© Copyright 2024 ExpyDoc