平衡訓練數據是數據預處理的重要組成部分。數據不平衡是指數據集中的類分布不均,這可能會導致模型訓練的潛在風險。有幾種方法可以平衡訓練數據和克服不平衡數據,包括重采樣和權重平衡。想象一下,如果有一個模型可以識別圖片中是狗還是貓。在測試過程中,模型正確識別了圖片中的所有狗,但沒有識別出貓。在查看訓練數據集時,意識到有10張狗的圖片和100張貓的圖片。這是數據不平衡的一個例子,其中每個對象類的數據集沒有可比數量的實例。
你需要知道的事實是,不平衡的數據無處不在,無法避免數據集不平衡。考慮一個調查電動車車主對電動車維修費意見的例子。因為大部分開電動車的人年收入都很高,所以80%的結果是“收費還算合理”。
換句話說,數據集是有偏見的。一個訓練來預測調查反應的模型通常會預測一個人,無論收入、駕駛傾向或汽車偏好如何,都會認為費用低廉。
在檢查犯罪數據時也會出現同樣的問題。在使用人工智能 (AI) 預測犯罪行為時,不平衡的犯罪數據集會使數據集中存在的種族和性別偏見永久化。在面對不平衡數據時,使用方法改進訓練過程至關重要,平衡訓練數據有兩種主要方法:關注數據集或權重。
在我們不想改變模型的情況下,我們可以簡單地進行數據預處理。換句話說,我們應該查看我們的數據集,了解數據分布,并決定如何重新采樣我們的數據,這是平衡訓練數據的一步。這里,有兩種可能的方法:
過/欠采樣:在少數類中增加樣本或在多數類中減少樣本。
聚類技術:這類似于重采樣,但不是將樣本添加到不同的類中,我們首先找到每個類中的子類或子簇,然后復制子類中的樣本以確保大小相等。
權重平衡是平衡訓練數據和處理不平衡數據的另一種好方法,這是通過乘以 logits 將類權重添加到損失函數來完成的。我們首先定義類權重以賦予少數類額外的權重,然后將類權重乘以損失函數。在 Tensorflow 中,您可以執行以下操作:
loss = tf.nn.softmax_cross_entropy_with_logits(labels, pred)
weighted_loss = loss * class_weights
為什么我們要將權重乘以原始損失函數?這使得損失成為加權平均值,其中每個樣本的權重由其對應類的 class_weight 指定。
在 Modzy 平衡訓練數據
在 Modzy,我們的數據科學家將數據預處理視為一項 關鍵任務。在訓練我們的模型之前,我們確保我們的數據集不會產生潛在風險并且我們的模型是穩健的。
這對您意味著什么
在 AI 激增的世界中,重要的是我們要特別關注訓練數據,以降低有偏差輸出的風險。
上述就是關于如何解決不平衡數據集的問題的全部內容,想了解更多關于人工智能的信息,請繼續關注中培偉業。