模型訓練前置處理之——數據預處理 原創
“ 數據預處理是一項復雜且重要的過程,是神經網絡的核心工作之一?!?/strong>
在神經網絡技術中,有幾個比較重要的環節,其中就有神經網絡模型的設計;但在此之前還有一個很重要的功能就是數據集的整理;一個高質量的數據集高性能神經網絡模型的基礎。
但怎么才能打造一個合格的數據集,以及怎么打造一個合格的數據集?而這就是神經網絡模型的數據處理部分。
數據預處理
不論是在傳統的數據分析領域,亦或者在神經網絡模型領域;數據處理都是其中必不可少,且相當重要的一環;但怎么進行數據處理,以及數據處理需要哪些步驟,以及每個步驟的作用是什么?這個可能很多人就不是很清楚了。
數據預處理的意義
在神經網絡模型訓練過程中,數據集的質量直接影響到模型的性能表現;而我們在收集訓練數據的過程中,難免會面臨著以下幾個問題:
- 原始數據存在異常值或缺失問題
- 模型無法直接處理原始數據格式
- 數據量或維度過大以及數據冗余問題
舉例說明以上幾個問題,首先最常見的異常值與缺失問題;比如在個人信息統計過程中,有人的年齡填了200歲;或者家庭地址沒填等就屬于異常值和缺失問題;因為目前來說,人不可能活到200歲,而如果是快遞這種需要郵寄地址的情況,地址缺失就是不肯接受的問題。
而模型無法處理原始數據格式,比如說計算機無法直接處理文字,圖片;只能把文字,圖片轉換成數字進行處理;亦或者時間格式可能需要轉換成時間戳。
最后數據冗余問題,比如說對一個班級的學生信息進行統計;可能存在部分學生被重復統計的情況;還有一種數據冗余是可以通過其它值進行計算;如有了商品的總價和數量就可以計算均價;但在很多數據處理中,均價可能會直接計算處理,如交易報表;但在神經網絡訓練過程中,可能就不需要均價這個字段。
而這就是絕大部分數據所存在的問題,這也就直接導致原始數據無法直接拿來使用;必須經過一定的處理才能滿足神經網絡的訓練需求。
因此,數據預處理需要經過哪些步驟呢?對數據預處理來說,主要需要經過以下幾個步驟:
- 數據清洗
- 數據轉換
- 數據壓縮
數據清洗就是需要清洗掉原始數據中存在的一些異常值,空值等;比較常見的清洗對象主要有以下幾個特征:
- 數據重復
- 數據雜亂
- 數據不完整
- 數據格式不一致
- 數據偏斜
- 數據冗余
因此,數據處理的第一步一般都是數據清洗;把一些非法數據進行刪除或整理。
數據清洗是數據處理的第一步,但其也有多種不同的方式;如,對非法數據直接刪除;如刪除數據中的重復,空值,不完整數據等;其次,也可以對數據進行填充處理,如對于不完整的數據可以使用平均值或者固定值進行填充。
舉例來說,你統計一個學校的學生數據;而很多學生的信息填寫并不完整,存在大量的缺失值。這時直接刪除缺失數據就不太合適了,因為刪除之后可能這次統計就沒有意義了。因此,這時就可以對一些不重要的數據進行填充,比如你需要統計的是學生的年齡分布,這時學生的地址就可以使用固定值進行填充。
而不論是數據清洗,還是數據轉換都要根據不同的需求場景,選擇合適的處理方式,而不是全部進行統一處理。
而數據轉換可能涉及到數據的格式轉換,以及形態的變換;如上圖所示,年齡和收入應該都統一采用數值類型,而不應該出現字符串的形式;而入職日期的格式也不完全相同;這種就需要把數據格式轉換成統一的類型。
而針對文本數據或圖像數據,也需要特定的格式變換;如文本數據需要采用數據編碼技術或者文本向量化的方式,把文本數據轉換成模型能夠識別的向量數據。
對于圖像數據也是如此,由于圖像的來源不同,因此圖像數據一般需要調整大小和通道數,像素歸一化處理等;比如MINST手寫數字的數據集就是統一的28*28固定大小的手寫數字圖片。
在神經網絡技術的學習過程中,很多人都只重視神經網絡模型本身,而忽略了數據的預處理過程。數據預處理是一項復雜并且繁重的工作,數據的質量間接決定了模型的性能。
而且,很多模型廠商頭疼的一件事就是,從哪里去找到足夠且合適的訓練數據。
本文轉載自公眾號AI探索時代 作者:DFires
