继上一篇了解模型评估的参数含义之后,我们来用ROC曲线与AUC两个指标来判别之前DGA的几个检测模型的好坏,之前只是用了准确率(accuracy)做了判别。
实验步骤
1.朴素贝叶斯算法的ROC曲线与AUC
2.XGBoost算法的ROC曲线与AUC
3.MLP算法的ROC曲线与AUC
4.RNN算法的ROC曲线与AUC
5.总结
实战部分
1.朴素贝叶斯
(1)在统计特征模型情况下,auc为71%左右,ROC如下
(2)在2-gram模型情况下,auc为79%左右,ROC如下
2.XGBoost
(1)在统计特征模型情况下,auc为85%左右,ROC如下
(2)在2-gram模型情况下,auc为81%左右,ROC如下
3.MLP
(1)在统计特征模型情况下,auc为85%左右,ROC如下
(2)在统计特征模型情况下,auc为94%左右,ROC如下
4.rnn
(1)在字符序列模型情况下,auc为51%左右,ROC如下
(2)在字符序列模型情况下,auc为92%左右,ROC如下
5.总结
上面的不同的数据特征与算法模型相结合,AUC得分如下:
统计特征模型 | 2-gram模型 | 字符序列模型 | |
---|---|---|---|
朴素贝叶斯 | 71% | 79% | - |
XGboost | 85% | 81% | - |
MLP | 85% | 94% | - |
RNN | - | 51% | 92% |
统计特征模型提取的数据特征与RNN的数据输入类型不符,所以忽略不做统计,用字符序列模型代替。可以看出,在相同的提取方法基础上,多层感知机mlp的效果更佳。而基于2-gram模型提取的多层感知机MLP算法得分甚至比基于字符序列提取的RNN还高,效果最好。
代码放在github上:model_comparison_dga.py