天天看點

深度學習筆記09_機器學習資料預處理

資料預處理、特征工程

神經網絡的資料預處理

預處理的原則:是使原始資料更适于用神經網絡處理,主要包括:向量化,标準化,處理缺失值和特征提取

向量化

無論處理什麼資料(聲音、圖像還是文本),都必須首先将其轉換為張量,且張量是浮點資料類型。例如, one-hot 編碼将其轉換為 float32 格式的張量。

值标準化

一般的值标準化做法對每個特征分别做标準化,使其均值為 0、标準差為 1。

例如,圖像資料被編碼為 0~255 範圍内的整數,将其變化為: 0~1 範圍内的浮點數。

這樣做的好處:

  • 避免了不同特征的資料,度量範圍不一樣,導緻輸入到神經網絡的不安全性,導緻較大的梯度更新,進而導緻網絡無法收斂
  • 讓網絡的學習變得更容易

特征資料需要符合如下的要求:

  • 取值較小:大部分值都應該在 0~1 範圍内
  • 同質性(homogenous):所有特征的取值都應該在大緻相同的範圍内。

标準化的做法:

  • 将每個特征分别标準化,使其平均值為 0。
  • 将每個特征分别标準化,使其标準差為 1。

coding 如下:

#平均值為 0
x-= x.mean(axis = 0)
# 标準差為 1
x/=x.std(axis=0)
           

處理缺失值

缺失值:指的是在樣本資料中,有的樣本并沒有某個特征資料,這個時候稱其為特征缺失。

一般處理的方法:将缺失值設定為 0。

要注意對于測試集中有的特征,而訓練集中又沒有該特征,這個時候就需要在訓練的過程中添加該特征:人為生成一些有缺失項的訓練樣本

特征工程

特征工程的概念

其實特征工程在傳統的機器學習中是一個非常重要的環節,這裡說的傳統是相對于現在神經網絡,尤其卷積神經網絡而言。

具體而言:是指将資料輸入模型之前,利用你自己關于資料和機器學習算法(這裡指神經網絡)的知識對資料進行寫死的變換(不是模型學到的),以改善模型的效果。

特征工程的本質

用更簡單的方式表述問題,進而使問題變得更容易。

特征工程在以前的機器學習中為什麼如此重要

經典的淺層算法沒有足夠大的假設空間來自己學習有用的表示。将資料呈現給算法的方式對解決問題至關重要。

例如在使用卷積神經網絡在處理MNIST數字分類問題上,以前的特征包括:圓圈個數、圖像中每個數字的高度、像素值的直方圖。

目前特征工程的重要性

  • 良好的特征仍然可以讓你用更少的資源更優雅地解決問題
  • 良好的特征可以讓你用更少的資料解決問題。

分享關于人工智能,機器學習,深度學習以及計算機視覺的好文章,同時自己對于這個領域學習心得筆記。想要一起深入學習人工智能的小夥伴一起結伴學習吧!掃碼上車!

深度學習筆記09_機器學習資料預處理

繼續閱讀