數據轉圖像、表征學習、均值編碼、轉換目標變量


原文:https://www.toutiao.com/i6597192035214557710/

幾種新的特征轉換思維:

1.數據轉換成圖像

  Kaggle上有一個微軟惡意軟件分類挑戰,它的數據集包含一組已知的惡意軟件文件,對於每個文件,原始數據包含文件二進制內容的十六進制表示。此前,參賽者在網上從沒接觸過類似的數據集,而他們的目標是開發最優分類算法,把測試集中的文件放到各自所屬的類別中。比賽冠軍的特征方法:

  將惡意文件的字節文檔看成黑白圖像,其中每個字節的像素強度在0-255之間。然而,標准圖像處理技術與n-gram等其他特征不兼容。所以之后,我們從asm文件而不是字節文件中提取黑白圖像。

  下圖是同一惡意軟件的字節圖像、asm圖像對比(左邊是字節圖像,右邊是asm圖像):

   

  asm文件是用匯編語言寫成的源程序文件。這個團隊發現把asm文件轉成圖像后,圖像的前800-1000個像素的像素強度可以作為分類惡意軟件的一個可靠特征。單獨使用這個特征並不會給分類器性能帶來明顯變化,但當它和其他n-gram特征一起使用時,性能提升效果就很顯著了。 

2.表征學習特征

  自編碼器能從數據樣本中進行無監督學習,這意味着算法直接從訓練數據中捕捉最顯著的特征,無需其他特征工程。

3.均值編碼

  用平均數這樣的統計量度來對分類值進行編碼,這就叫均值編碼。

  

  feature_label是scikit-learn編碼的標簽,feature_mean就是莫斯科標簽下的真實目標數量/莫斯科標簽下的目標總數,也就是2/5=0.4;

  對於Tver標簽—m=Tver標簽下的真實目標數量=3,n=Tver標簽下的目標總數=4,相應的,Tver編碼就是m/n=3/4=0.75(約等於0.8);

  數據分析中經常會遇到類別屬性,比如日期、性別、街區編號、IP地址等。絕大部分數據分析算法是無法直接處理這類變量的,需要先把它們先處理成數值型量。如果這些變量的可能值很多,也就是高基數,那么在這種情況下,使用label encoding會出現一系列連續數字,在特征中添加噪聲標簽和編碼會導致精度不佳,使用one-hot編碼,隨着特征不斷增加,數據集的維數也在不斷增加,這會阻礙編碼。因此,這時均值編碼是最好的選擇之一。但它也有缺點,就是容易過擬合,所以使用時要配合適當的正則化技術:CV 、Regularization Smoothing、Regularization Expanding mean。

4.轉換目標變量

  當我們拿到一個高度偏斜的數據時,如果我們不做任何處理,最后模型的性能肯定會受影響。

  

  如上圖所示,這里的數據高度偏斜,如果我們把目標變量轉成log(1+目標)格式,那么它的分布就接近高斯分布了。

  

 

  需要注意的是,提交預測值時,我們需要進行轉換回來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM