技術(shù)分析:計算機(jī)視覺與機(jī)器學(xué)習(xí)等領(lǐng)域不平衡數(shù)據(jù)處理綜述
簡介在現(xiàn)實世界中,我們收集的數(shù)據(jù)在大多數(shù)時候是嚴(yán)重不平衡的,所謂不平衡數(shù)據(jù)集就是訓(xùn)練樣本不是平均分布在目標(biāo)類中,例如,如果我們以個人貸款分類問題為例,就很容易得到“未批準(zhǔn)”的數(shù)據(jù),而不是“已批準(zhǔn)”的信息,結(jié)果,模型會更偏向具有大量訓(xùn)練實例的類,這降低了模型的預(yù)測能力。在典型的二元分類問題中,它還會II型錯誤的增加。這一障礙不僅局限于機(jī)器學(xué)習(xí)模型,而且也主要存在于計算機(jī)視覺和自然語言處理領(lǐng)域。這些問題可以通過對每個區(qū)域分別使用不同的技術(shù)來有效地處理。注意:本文將簡要概述各種可用的數(shù)據(jù)增強(qiáng)方法,但不深入技術(shù)細(xì)節(jié),這里展示的所有圖像都來自Kaggle。
目錄
- 機(jī)器學(xué)習(xí)——不平衡數(shù)據(jù)(上采樣和下采樣)
- 計算機(jī)視覺——不平衡數(shù)據(jù)(圖像數(shù)據(jù)增強(qiáng))
NLP——不平衡數(shù)據(jù)(Google交易和分類權(quán)重)
1. 機(jī)器學(xué)習(xí)——不平衡數(shù)據(jù)
處理類不平衡的兩種主要方法是上采樣/過采樣和下采樣/欠采樣。抽樣過程只應(yīng)用于訓(xùn)練集,對驗證和測試數(shù)據(jù)不作任何更改。python中的Imblearn庫可以方便地實現(xiàn)數(shù)據(jù)重采樣。上采樣是將合成生成的數(shù)據(jù)點(對應(yīng)于少數(shù)類)注入數(shù)據(jù)集的過程,在這個過程之后,兩個標(biāo)簽的計數(shù)幾乎是相同的,這種均衡過程防止了模型向多數(shù)類傾斜,而且目標(biāo)類之間的交互(邊界)保持不變,同時,上采樣機(jī)制由于附加信息的存在而給系統(tǒng)帶來偏差。我們可以通過分析Google Analytics的貸款預(yù)測問題來解釋這些步驟。這里使用的訓(xùn)練數(shù)據(jù)集可以在以下鏈接中找到。
SMOTE(SyntheticMinorityOversamplingTechnique)——upsampling: 上采樣SMOTE基于knearestneighbors算法,綜合生成數(shù)據(jù)點,這些數(shù)據(jù)點位于已經(jīng)存在的數(shù)量被超過的群體附近。應(yīng)用此方法時,輸入記錄不應(yīng)包含任何空值。
#import imblearn library
from imblearn.over_sampling import SMOTENC
oversample = SMOTENC(categorical_features=[0,1,2,3,4,9,10], random_state = 100)
X, y = oversample.fit_resample(X, y)
datduplicate—upsampling: 在這種方法中,已存在的數(shù)據(jù)點被隨機(jī)抽取并重復(fù)。from sklearn.utils import resample
maxcount = 332
train_nonnull_resampled = train_nonnull[0:0]
for grp in train_nonnull['Loan_Status'].unique():
GrpDF = train_nonnull[train_nonnull['Loan_Status'] == grp]
resampled = resample(GrpDF, replace=True, n_samples=int(maxcount), random_state=123)
train_nonnull_resampled = train_nonnull_resampled.a(chǎn)ppend(resampled)
下采樣是一種減少訓(xùn)練樣本落在多數(shù)類下的機(jī)制。因為它有助于平衡目標(biāo)類別的計數(shù),但刪除收集到的數(shù)據(jù),我們往往會丟失很多有價值的信息。
Tomek (T-Links): -
T-Link基本上是來自不同類(最近的鄰居)的一對數(shù)據(jù)點,其目標(biāo)是丟棄與多數(shù)類(數(shù)量較多的類)相對應(yīng)的樣本,從而減少占主導(dǎo)地位的標(biāo)簽的數(shù)量。這也增加了兩個標(biāo)簽之間的邊界空間,從而提高了性能準(zhǔn)確性。
from imblearn.under_sampling import TomekLinks
undersample = TomekLinks()
X, y = undersample.fit_resample(X, y)
質(zhì)心
2. 計算機(jī)視覺——不平衡數(shù)據(jù)
對于非結(jié)構(gòu)化數(shù)據(jù),如圖像和文本輸入,上述平衡技術(shù)將不會有效。在計算機(jī)視覺中,模型的輸入是圖像中像素的張量表示,所以只是隨機(jī)改變像素值(為了添加更多的輸入記錄)就可以完全改變圖片本身的意義。有一種概念叫做數(shù)據(jù)增強(qiáng),即圖像經(jīng)過大量轉(zhuǎn)換后仍然保持其意義不變。各種圖像轉(zhuǎn)換包括縮放、剪切、翻轉(zhuǎn)、填充、旋轉(zhuǎn)、亮度、對比度和飽和度變化,通過這樣做,僅使用單個圖像,就可以創(chuàng)建一個龐大的圖像數(shù)據(jù)集。讓我們看看Analyticsvidhya中發(fā)布的計算機(jī)視覺hackathon,使用的數(shù)據(jù)集可以在這里找到。
要求是將車輛分為緊急和非緊急兩類。為了便于說明,我們使用“0.jpg”圖像。
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
datagen = ImageDataGenerator(
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
img = load_img('images/0.jpg')
x = img_to_array(img)
x = x.reshape((1,) + x.shape)
print(x.shape)
# the .flow() command below generates batches of randomly transformed images
# and saves the results to the `preview/` directory
i = 0
for batch in datagen.flow(x, batch_size=1,
save_to_dir='preview', save_prefix='vehichle', save_format='jpeg'):
i += 1
if i > 19:
break # otherwise the generator would loop indefinitely
在GitHub存儲庫中可以找到整個代碼和一個預(yù)訓(xùn)練過的模型。
3. NLP——不平衡數(shù)據(jù)
自然語言處理模型處理序列數(shù)據(jù),如文本、移動圖像,其中當(dāng)前數(shù)據(jù)與之前的數(shù)據(jù)有時間依賴性。由于文本輸入屬于非結(jié)構(gòu)化數(shù)據(jù),所以我們要以不同的方式處理這些場景。例如,以票據(jù)分類語言模型為例,其中IT票據(jù)必須根據(jù)輸入文本中出現(xiàn)的單詞順序分配給不同的組。谷歌翻譯(google trans python包): 這是擴(kuò)展少數(shù)群體數(shù)量的有用技術(shù)之一。
在這里,我們把給定的句子翻譯成“非英語”語言,然后再翻譯成“英語”,通過這種方式,可以維護(hù)輸入消息的重要細(xì)節(jié),但是單詞的順序/有時具有相似意義的新詞作為新記錄引入,從而增加了不足類的計數(shù)。輸入文字- "warning for using windows disk space"數(shù)據(jù)補(bǔ)充文字-“Warning about using Windows storage space”即使上面的句子的意思是一樣的,它也引入了新單詞,從而通過擴(kuò)大輸入樣本的數(shù)量來提高語言模型的學(xué)習(xí)能力。下面執(zhí)行的代碼可以在GitHub存儲庫中找到。googletrans.readthedocs.io/en/latest/from googletrans import Translatortranslator = Translator()
def German_translation(x): print(x) german_translation = translator.translate(x, dest='de') return german_translation.text
def English_translation(x): print(x)
english_translation = translator.translate(x, dest='en') return english_translation.text
x = German_translation("warning for using windows disk space")
English_translation(x)
類權(quán)重: 該方法是在擬合模型過程中利用類權(quán)重參數(shù)。對于目標(biāo)中的每個類別,都分配一個權(quán)重,與多數(shù)類相比,少數(shù)類將獲得更多的權(quán)重,因此,在反向傳播過程中,與少數(shù)類相關(guān)聯(lián)的損失值越大,模型會對輸出中的所有類一視同仁。import numpy as np
from tensorflow import keras
from sklearn.utils.class_weight import compute_class_weight
y_integers = np.a(chǎn)rgmax(raw_y_train, axis=1)
class_weights = compute_class_weight('balanced', np.unique(y_integers), y_integers)
d_class_weights = dict(enumerate(class_weights))
history = model.fit(input_final, raw_y_train, batch_size=32, class_weight = d_class_weights, epochs=8,callbacks=[checkpoint,reduceLoss],validation_data =(val_final, raw_y_val), verbose=1)
這個選項在機(jī)器學(xué)習(xí)分類器中也可用,如我們給class_weight = ' balanced '的' SVM '。# fit the training dataset on the classifier
SVM = svm.SVC(C=1.0, kernel='linear', degree=3, gamma='auto', class_weight='balanced', random_state=100)
結(jié)論到目前為止,我們已經(jīng)討論了不同領(lǐng)域處理不平衡數(shù)據(jù)的各種方法,如機(jī)器學(xué)習(xí)、計算機(jī)視覺和自然語言處理。盡管這些方法只是解決多數(shù)Vs少數(shù)目標(biāo)群體問題的開始,還有其他先進(jìn)的技術(shù)可以進(jìn)一步探索。

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
10月23日火熱報名中>> 2025是德科技創(chuàng)新技術(shù)峰會
-
10月23日立即報名>> Works With 開發(fā)者大會深圳站
-
10月24日立即參評>> 【評選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評選
-
即日-11.25立即下載>>> 費(fèi)斯托白皮書《柔性:汽車生產(chǎn)未來的關(guān)鍵》
-
11月27日立即報名>> 【工程師系列】汽車電子技術(shù)在線大會
-
12月18日立即報名>> 【線下會議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
推薦專題
-
10 大模型的盡頭是開源
- 1 特斯拉工人被故障機(jī)器人打成重傷,索賠3.6億
- 2 【行業(yè)深度研究】退居幕后四年后,張一鳴終于把算法公司變成AI公司?
- 3 AI 時代,阿里云想當(dāng)“安卓” ,那誰是“蘋果”?
- 4 硬剛英偉達(dá)!華為發(fā)布全球最強(qiáng)算力超節(jié)點和集群
- 5 機(jī)器人9月大事件|3家國產(chǎn)機(jī)器人沖刺IPO,行業(yè)交付與融資再創(chuàng)新高!
- 6 谷歌“香蕉”爆火啟示:國產(chǎn)垂類AI的危機(jī)還是轉(zhuǎn)機(jī)?
- 7 00后華裔女生靠兩部AI電影狂賺7.8億人民幣,AI正式進(jìn)軍好萊塢
- 8 美光:AI Capex瘋投不止,終于要拉起存儲超級周期了?
- 9 華為已殺入!AI領(lǐng)域最熱黃金賽道,大廠的數(shù)字人美女讓我一夜沒睡著覺
- 10 隱退4年后,張一鳴久違現(xiàn)身!互聯(lián)網(wǎng)大佬正集體殺回