tensorlfow學習之四訓練集樣本不平衡問題

2021-09-24 09:47:58 字數 1828 閱讀 5657

本文**  

卷積神經網路(cnn)可以說是目前處理影象最有力的工具了。而在機器學習分類問題中,樣本不平衡又是乙個經常遇到的問題。最近在使用cnn進行分類時,發現cnn對訓練集樣本不平衡問題很敏感。在網上搜尋了一下,發現這篇文章 對這個問題已經做了比較細緻的探索。於是就把它簡單整理了一下,相關的記錄如下。

一、實驗資料與使用的網路

所謂樣本不平衡,就是指在分類問題中,每一類對應的樣本的個數不同,而且差別較大。這樣的不平衡的樣本往往使機器學習演算法的表現變得比較差。那麼在cnn中又有什麼樣的影響呢?作者選用了cifar-10作為資料來源來生成不平衡的樣本資料。

cifar-10是乙個簡單的影象分類資料集。共有10類(airplane,automobile,bird,cat,deer,dog, frog,horse,ship,truck),每一類含有5000張訓練,1000張測試。

cifar-10樣例如圖:

訓練時,選擇的網路是這裡的cifar-10訓練網路和引數(來自alex krizhevsky)。這個網路含有3個卷積層,還有10個輸出結點。

之所以不選用效果更好的cnn網路,是因為我們的目的是在實驗時訓練很多次進行比較,而不是獲得多麼好的效能。而這個cnn網路因為比較淺,訓練速度比較快,比較符合我們的要求。

二、類別不平衡資料的生成

直接從原始cifar-10取樣,通過控制每一類取樣的個數,就可以產生類別不平衡的訓練資料。如下表所示:

這裡的每一行就表示「乙份」訓練資料。而每個數字就表示這個類別佔這「乙份」訓練資料的百分比。

dist. 1:類別平衡,每一類都占用10%的資料。

dist. 2、dist. 3:一部分類別的資料比另一部分多。

dist. 4、dist 5:只有一類資料比較多。

dist. 6、dist 7:只有一類資料比較少。

dist. 8: 資料個數呈線性分布。

dist. 9:資料個數呈指數級分布。

dist. 10、dist. 11:交通工具對應的類別中的樣本數都比動物的多

對每乙份訓練資料都進行訓練,測試時用的測試集還是每類1000個的原始測試集,保持不變。

三、類別不平衡資料的訓練結果

以上資料經過訓練後,每一類對應的**正確率如下:

第一列total表示總的正確率,下面是每一類分別的正確率。

從實驗結果中可以看出:

類別完全平衡時,結果最好。類別「越不平衡」,效果越差。比如dist. 3就比dist. 2更不平衡,效果就更差。同樣的對比還有dist. 4和dist. 5,dist. 8和dist. 9。其中dist. 5和dist. 9更是完全訓練失敗了。

四、過取樣訓練的結果

再次訓練,進行測試,結果為:

可以發現過取樣的效果非常好,基本與平衡時候的表現一樣了。

過取樣前後效果對比,可以發現過取樣效果非常好:

五、總結

cnn確實對訓練樣本中類別不平衡的問題很敏感。平衡的類別往往能獲得最佳的表現,而不平衡的類別往往使模型的效果下降。如果訓練樣本不平衡,可以使用過取樣平衡樣本之後再訓練。

這確實是乙個「經驗主義」的結論,但多少給我們平常訓練cnn模型帶來一些啟發和幫助。

hp實訓之測試(第四周)

測試前期比較重要的基礎知識點 1.v模型 需求分析 概要設計 詳細設計 編碼 單元測試 整合測試 系統測試 驗收測試 2.軟體配置項csci 在軟體開發過程中產生的所有資訊構成軟體配置,它們是文件 報告等 3.基線 base line 大概來說,基線是軟體開發的基礎,是重點階段的結點 4.軟體測試分...

了凡四訓感悟

人生近30載,不順之事,可以說是十有五六,自從學習了傳統文化,特別是了凡四訓後,發現人生除了家業 事業,還應該有最為重要的道業,本人學習已有2年時間,發現之後的路雖也時常遇到坎坷,但大方向確實往越來越好發展了,在此,與各位it同仁分享一些感悟以及此道泰斗的一些語錄,希望大家人生變得更有意義。下面是了...

tensorflow學習之新增層並簡單訓練

import tensorflow as tf import numpy as np def add layer inputs,in size,out size,activation function none weights tf.variable tf.random normal in size...