本系列只用于自己做筆記用.
來源 : 實(shí)用機(jī)器學(xué)習(xí) 李沐
https://www.bilibili.com/video/BV1Xh411p7M9
2.2 數(shù)據(jù)清理
Data Errors
現(xiàn)實(shí)中, 當(dāng)我們進(jìn)行模型訓(xùn)練時(shí), 如果我們使用的不是標(biāo)準(zhǔn)數(shù)據(jù)集, 我們就會(huì)難以評(píng)判模型的優(yōu)劣. 特別是當(dāng)用于訓(xùn)練的數(shù)據(jù)并不干凈的時(shí)候, 模型可能會(huì)難以收斂, 或者會(huì)損失精度.
一個(gè)好的模型通常能容納錯(cuò)誤的數(shù)據(jù), 但是會(huì)造成一定程度的精度下降.
而當(dāng)這個(gè)模型被部署在online并且接受新的數(shù)據(jù)時(shí), 將可能引發(fā)新的錯(cuò)誤. (如使用self supervised learning時(shí), 標(biāo)記的label不干凈, 但是又會(huì)重新放入到網(wǎng)絡(luò)中進(jìn)行訓(xùn)練)
Types of data errors
Outliers : 數(shù)據(jù)分布不在正常的分布中.
Rule violations : 違背規(guī)則. 如某個(gè)必要的要素缺失.
Pattern violations : 違背設(shè)定的格式/語法. 如價(jià)格設(shè)置了美元, 但是給出的是rmb.
How to detect
Outliers : 類別修改, boxplot
Rule : functional dependencies , Denial constraints
Pattern : syntactic, semantic
數(shù)據(jù)變換
raw data 到我們需要的數(shù)據(jù)大體上是不一樣的, 這時(shí)候需要進(jìn)行數(shù)據(jù)變形.
我們通常把數(shù)據(jù)標(biāo)注后, 特征工程前的過程, 叫做數(shù)據(jù)變形.
Normalization
Min-Max normalization. 線性的劃分到[a,b]中.
Z-score normalization. 0 mean 1 standard deviation.
Decimal scaling. minimized to [-1, 1].
Log scaling. 相比于數(shù)值, 更注重比例.
Image Transformations
圖片占用空間較大, 而且儲(chǔ)存成本較高.
一般我們會(huì)使用下采樣和剪切的方法. 而且機(jī)器學(xué)習(xí)對(duì)于低分辨率圖像也有較好的適應(yīng)性.
需要注意的是, 如果使用jpeg, 質(zhì)量為中等質(zhì)量(80%~90%), 大概會(huì)有1%的精度下降.
也可以使用whitening讓輸入冗余性更小, 且模型會(huì)收斂的更快.
Video Transformation
視頻預(yù)處理跟圖像大致相同, 都是用于平衡儲(chǔ)存空間、圖像質(zhì)量和讀取速度的.
通常使用的是10s內(nèi)的短視頻/片段(e.g. 包含一個(gè)動(dòng)作)
復(fù)雜的視頻也無法被神經(jīng)網(wǎng)絡(luò)所理解.
難點(diǎn) : 不同的視頻會(huì)有不同的壓縮算法, 需要在儲(chǔ)存和采樣解碼速度之間做妥協(xié). 為了加速, 有時(shí)會(huì)使用GPU解碼.
Text Transformation
詞根化、語法化.
am, is, are -> be
car, cars, car's, cars' -> car
詞源化tokenization.
把text分割成一個(gè)個(gè)詞.
text.split(" ")
Summary
數(shù)據(jù)轉(zhuǎn)換是把數(shù)據(jù)轉(zhuǎn)換成模型更適合的狀態(tài).
需要平衡質(zhì)量、儲(chǔ)存、讀取速度之間的關(guān)系.
表: normalization
圖: 剪裁、下采樣、 whitening
視頻: clipping, sample frames
文本: 詞根化、語法化, 來進(jìn)行簡(jiǎn)化輸入, 詞源化得到輸入到機(jī)器學(xué)習(xí)的小單元(unit).
2.4 特征工程
機(jī)器學(xué)習(xí)偏愛固定好的, 具有特定長(zhǎng)度的輸入/輸出.
傳統(tǒng)機(jī)器學(xué)習(xí)如SVM比較依賴特定的特征輸入, 以前的數(shù)據(jù)工程師也專注于提取不同的數(shù)據(jù)特征用于訓(xùn)練網(wǎng)絡(luò).
深度學(xué)習(xí)的過程也大致相同, 但是特征提取并不是人工進(jìn)行選擇, 而是自動(dòng)的選擇, 代價(jià)是更花費(fèi)數(shù)據(jù)和計(jì)算.
Tabular
- int / float : 直接使用或者區(qū)間量化
- categorical data : one-hot encoding. 不常見 / 不重要的放在同一類Unknown, 以維持列數(shù)在有限上.
- Date-time : feature list. e.g. [year, month, day, day_of_year, week_of_year, day_of_week] 劃分的時(shí)候最好能體現(xiàn)特定的特征.
- Feature combination : 兩種特征之間的外乘(Cartesian product)
Text
- bag of words : 把token用one-hot表示出來, 然后對(duì)于一句話就把所有one-hot加起來. (會(huì)丟失順序信息, 還可能內(nèi)容過大)
- Word embedding (Word2Vect): 把詞表示成一個(gè)向量, 向量之間有語義信息 (語義相近體現(xiàn)為向量之間的內(nèi)積較小). 這個(gè)向量是通過網(wǎng)絡(luò)預(yù)測(cè)上下文的詞訓(xùn)練出來的.
- Pre-trained language models (e.g. BERT, GPT-3) : transformer模型, 相較于word2vect更大. 能抽取比較好的語義信息.
Image / Video
- 傳統(tǒng)特征 : 手動(dòng)提取, 如sift
- 預(yù)訓(xùn)練深度神經(jīng)網(wǎng)絡(luò) : 分類器前的feature map, 如resnet, vgg等.
summary
特征提取很重要, 目前通常有手動(dòng)提取和深度學(xué)習(xí)兩種方法, 后面的方法更受人喜愛, 但是會(huì)更expensive.
2.5 總結(jié)
Challenge
- 數(shù)據(jù)大小和質(zhì)量之間的權(quán)衡.
- 數(shù)據(jù)質(zhì)量 :
- 多樣性 : 不同的方面
- 無偏移的 : 沒有偏移到特定的一方.
- 公平性 : 沒有區(qū)別對(duì)待人和事.
- 大型數(shù)據(jù)管理 : 存儲(chǔ), 處理, 版本控制, 安全