コンテンツにスキップ

2025年10月11日

今週の活動

新たな変更メトリクス(NF、LA/LT、LD/LT、LT/NF)の測定

Elasticsearch

メトリクス 変化量 + 変更メトリクス 追加前 変化量メトリクス 追加後 変化量 + 変更メトリクス 追加後
F1スコア 0.6175 0.7172 0.7761
Precision 0.5064 0.6098 0.7000
Recall 0.7910 0.8706 0.8706
Accuracy 0.6717 0.7700 0.8317
ROC-AUC 0.7874 0.8810 0.9201

Hazelcast

メトリクス 変化量 + 変更メトリクス 追加前 変化量メトリクス 追加後 変化量 + 変更メトリクス 追加後
F1スコア 0.6734 0.7119 0.7346
Precision 0.5764 0.6292 0.6504
Recall 0.8098 0.8195 0.8439
Accuracy 0.7317 0.7733 0.7917
ROC-AUC 0.8604 0.8790 0.8933

Netty

メトリクス 変化量 + 変更メトリクス 追加前 変化量メトリクス 追加後 変化量 + 変更メトリクス 追加後
F1スコア 0.4315 0.6614 0.7657
Precision 0.3211 0.5362 0.6569
Recall 0.6575 0.8630 0.9178
Accuracy 0.5783 0.7850 0.8633
ROC-AUC 0.6578 0.8630 0.9336

OrientDB

メトリクス 変化量 + 変更メトリクス 追加前 変化量メトリクス 追加後 変化量 + 変更メトリクス 追加後
F1スコア 0.4752 0.5310 0.7128
Precision 0.3571 0.4040 0.6063
Recall 0.7097 0.7742 0.8645
Accuracy 0.5950 0.6467 0.8200
ROC-AUC 0.7045 0.7456 0.9154

Neo4j

メトリクス 変化量 + 変更メトリクス 追加前 変化量メトリクス 追加後 変化量 + 変更メトリクス 追加後
F1スコア 0.4573 0.5707 0.7433
Precision 0.3497 0.4718 0.6557
Recall 0.6605 0.7222 0.8580
Accuracy 0.5767 0.7067 0.8400
ROC-AUC 0.6544 0.7932 0.9128

得られた成果

  • 変化量・変更メトリクスの導入により欠陥予測の精度が向上
    • 変化量メトリクス: 変更されたメソッド自体の特性を捉える(ミクロ的視点)
    • 変更メトリクス: 同じコミットで変更された他のコードの特性も捉える(マクロ的視点)

直面した課題

  • 変更メトリクスは推論に基づいて選定したが、変化量メトリクスについては根拠が不十分であるため、選定基準を明確にしてメトリクスを選び直すべき

来週の計画

  • 変化量メトリクスと変更メトリクスの選定基準を整理し、メトリクスを選ぶ際の整合性を高める
  • 必要に応じて再度データを取る
  • 交差検証による評価指標の変動を抑えるため、データセットのサンプルサイズの上限を3000から5000に増やす
  • 機械学習モデルにおいて重要度が高い特徴量やクラス分類に大きく貢献する分岐条件を可視化
  • 機械学習モデルのベースラインと比較したときにどれだけレビューの労力削減効果があるかを調べる方法を具体化
    • 現在検討している手法
      • Cost-Benefit Curve
        • 横軸にメソッドのレビュー数、縦軸にレビューによって発見された欠陥を含むメソッド数を置く
      • Effort-Aware Metrics
        • レビューに総労力の20%(先行研究を参照)が費やされると仮定し、欠陥発生リスクの高い上位20%のメソッドをレビューした場合に発見できる欠陥の割合を比較
        • Cost-Benefit Curveの20%地点における欠陥発見割合と同義