1. 比賽信息
比賽地址:阿里雲惡意程序檢測新人賽
比賽介紹:使用自然語言處理的方法對惡意程序的行為(API調用序列)進行分析,實現對惡意程序鑒別及分類。
2. 我的主要工作
1)數據預處理:格式轉換csv->txt->pkl,根據fileid分組數據,排序后生成api序列,用於訓練;
2)數據分析及可視化:主要是數據分布分析,包括惡意程序類別分布分析、調用api的類別及頻率分析,訓練集與測試集分布差異分析(計算交叉熵)等,
得出結論:此任務訓練集與測試集分布差異不大,惡意程序類型更多是與api調用序列有關,與api類別及api調用次數關系不大;
3)模型訓練及測試:使用了ngram,tf-idf等方法,使用word2vec訓練了詞向量,xgboost進行了集成學習,並使用了n折交叉驗證。
心得:ngram比tf-idf更適合於此任務,
原因在於IDF是一種試圖抑制噪音的加權,單純地認為文本頻率小的單詞就越重要,文本頻率大的單詞就越無用,而對於此任務來說,出現頻率小的api也是很有用的。
4)線上成績:0.472587,129名(2019-11-04)
3. 實踐記錄(博客形式)
【新人賽】阿里雲惡意程序檢測 -- 實踐記錄10.13 - Google Colab連接 / 數據簡單查看 / 模型訓練
【新人賽】阿里雲惡意程序檢測 -- 實踐記錄10.20 - 數據預處理 / 訓練數據分析 / TF-IDF模型調參
【新人賽】阿里雲惡意程序檢測 -- 實踐記錄10.27 - TF-IDF模型調參 / 數據可視化
【新人賽】阿里雲惡意程序檢測 -- 實踐記錄11.3 - n-gram模型調參
【新人賽】阿里雲惡意程序檢測 -- 實踐記錄11.10 - XGBoost學習 / 代碼閱讀、調參經驗總結
【新人賽】阿里雲惡意程序檢測 -- 實踐記錄 11.24 - word2vec模型 + xgboost
4. 個人主頁
天池主頁: Yenchiang-阿里天池
博客主頁:Yanqiang-博客園
Github主頁:YanqiangWang-Github