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の分析から、コミットの変更規模(行数やファイル数)が大きくなるほど、バグ混入確率は低下する傾向が見られた
- これは、大規模な変更は計画的な機能追加であることが多く、逆に小規模で分散した変更の方がリスクが高いことを示唆
- モデルの解釈性
- 決定木の可視化により、提案手法では静的なコードメトリクスよりも、時系列変化(トークン変化や追加行数など)を分岐条件として重視していることが確認された
- ベースラインと比較して、より高い確信度(確率)でバグの有無(特にバグありクラス)を判定できるノードが増加
- レビュー労力の削減効果
- 提案手法は、同じレビュー労力(コスト)でより多くのバグを発見できることが示された
来週の計画