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%地点における欠陥発見割合と同義
