コンテンツにスキップ

2025年11月29日

今週の活動

  • 論文の第5章の下書きを書いた
    • 提案手法(メソッド単位とコミット単位の時系列変化を考慮した欠陥予測)の有効性を、5つのオープンソースプロジェクト(Elasticsearch, Hazelcast, Neo4j, Netty, OrientDB)を用いて検証

得られた成果

  • 予測性能の向上
    • ベースライン(既存メトリクスのみ)、ステップ2(メソッド単位の変化量追加)、ステップ3(コミット単位の変化率さらに追加)と段階的に評価した結果、ステップ3が全てのプロジェクトで最も高いF1スコアを記録
    • マクネマー検定の結果、ベースラインと提案手法(ステップ3)の予測性能の差は統計的に有意(p値 < 0.01)であることが確認された
    • 10分割交差検証の結果、性能のばらつき(標準偏差)は小さく、モデルが安定していることが示された
  • 特徴量の寄与度
    • ランダムフォレストのFeature Importance分析により、コミット単位の「追加行数(lines_added)」「変更ファイル数(num_files)」と、メソッド単位の「トークン変化量(tokens_change)」が予測に強く寄与していることが明らかになった
    • Partial Dependence Plotの分析から、コミットの変更規模(行数やファイル数)が大きくなるほど、バグ混入確率は低下する傾向が見られた
    • これは、大規模な変更は計画的な機能追加であることが多く、逆に小規模で分散した変更の方がリスクが高いことを示唆
  • モデルの解釈性
    • 決定木の可視化により、提案手法では静的なコードメトリクスよりも、時系列変化(トークン変化や追加行数など)を分岐条件として重視していることが確認された
    • ベースラインと比較して、より高い確信度(確率)でバグの有無(特にバグありクラス)を判定できるノードが増加
  • レビュー労力の削減効果
    • 提案手法は、同じレビュー労力(コスト)でより多くのバグを発見できることが示された

来週の計画

  • 論文の第6章の内容を考える