99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀如何解決分類中的樣本傾斜問題
如何解決分類中的樣本傾斜問題
2018-04-09
收藏

如何解決分類中的樣本傾斜問題

先來說說樣本的偏斜問題,也叫數(shù)據(jù)集偏斜(unbalanced),它指的是參與分類的兩個類別(也可以指多個類別)樣本數(shù)量差異很大。比如說正類有10,000個樣本,而負類只給了100個,這會引起的問題顯而易見,可以看看下面的圖:


方形的點是負類。H,H1,H2是根據(jù)給的樣本算出來的分類面,由于負類的樣本很少很少,所以有一些本來是負類的樣本點沒有提供,比如圖中兩個灰色的方形點,如果這兩個點有提供的話,那算出來的分類面應(yīng)該是H’,H2’和H1,他們顯然和之前的結(jié)果有出入,實際上負類給的樣本點越多,就越容易出現(xiàn)在灰色點附近的點,我們算出的結(jié)果也就越接近于真實的分類面。但現(xiàn)在由于偏斜的現(xiàn)象存在,使得數(shù)量多的正類可以把分類面向負類的方向“推”,因而影響了結(jié)果的準確性。
解決方法
這個問題可以有多種方法去解決:
1. 對訓練數(shù)據(jù)undersampling,即對多數(shù)類數(shù)據(jù)進行抽樣,或者將少數(shù)類翻倍,使得兩類數(shù)量相同,這種方法在效果上也還說得過去。但是這種方法會有一些問題:1) 重采樣改變了樣本的分布,對于某些依賴于樣本概率分布的算法來說這個方法行不通。2) 對多數(shù)類采樣會使信息減少,而對少數(shù)類翻倍并不會使得信息增多。
2. 使用Cost-sensitive learning方法,該方法是想試試看能否通過訓練時候這種懲罰把預測“推”向另外一面,下面要講的就是這種方法。
經(jīng)典SVM
經(jīng)典的SVM是一個硬間隔分類,其對應(yīng)的優(yōu)化問題:


其就是為了能夠找到最優(yōu)超平面,如下圖

離群點
現(xiàn)在想象我們有另一個訓練集,只比原先這個訓練集多了一篇文章,映射到高維空間以后,也就多了一個樣本點,但是這個樣本的位置是這樣的:

就是圖中黃色那個點,它是方形的,因而它是負類的一個樣本,這單獨的一個樣本,使得原本線性可分的問題變成了線性不可分的。這樣類似的問題(僅有少數(shù)點線性不可分)叫做“近似線性可分”的問題。
以我們?nèi)祟惖某WR來判斷,說有一萬個點都符合某種規(guī)律(因而線性可分),有一個點不符合,那這一個點是否就代表了分類規(guī)則中我們沒有考慮到的方面呢(因而規(guī)則應(yīng)該為它而做出修改)?
其實我們會覺得,更有可能的是,這個樣本點壓根就是錯誤,是噪聲,是提供訓練集的同學人工分類時打瞌睡錯放進去的。所以我們會簡單的忽略這個樣本點,仍然使用原來的分類器,其效果絲毫不受影響。
但這種對噪聲的容錯性是人的思維帶來的,我們的程序可沒有。由于我們原本的優(yōu)化問題的表達式中,確實要考慮所有的樣本點(不能忽略某一個,因為程序它怎么知道該忽略哪一個呢?),在此基礎(chǔ)上尋找正負類之間的最大幾何間隔,而幾何間隔本身代表的是距離,是非負的,像上面這種有噪聲的情況會使得整個問題無解。這種解法其實也叫做“硬間隔”分類法,因為他硬性的要求所有樣本點都滿足和分類平面間的距離必須大于某個值。
因此由上面的例子中也可以看出,硬間隔的分類法其結(jié)果容易受少數(shù)點的控制,這是很危險的(盡管有句話說真理總是掌握在少數(shù)人手中,但那不過是那一小撮人聊以自慰的詞句罷了,咱還是得民主)。
松弛變量

上面那個問題的解決方法也很明顯,就是仿照人的思路,允許一些點到分類平面的距離不滿足原先的要求。由于不同的訓練集各點的間距尺度不太一樣,因此用間隔(而不是幾何間隔)來衡量有利于我們表達形式的簡潔。我們原先對樣本點的要求是:



意思是說離分類面最近的樣本點函數(shù)間隔也要比1大。如果要引入容錯性,就給1這個硬性的閾值加一個松弛變量,即允許


因為松弛變量是非負的,因此最終的結(jié)果是要求間隔可以比1小。但是當某些點出現(xiàn)這種間隔比1小的情況時(這些點也叫離群點),意味著我們放棄了對這些點的精確分類,而這對我們的分類器來說是種損失。但是放棄這些點也帶來了好處,那就是使分類面不必向這些點的方向移動,因而可以得到更大的幾何間隔(在低維空間看來,分類邊界也更平滑)。顯然我們必須權(quán)衡這種損失和好處。好處很明顯,我們得到的分類間隔越大,好處就越多。

把損失加入到目標函數(shù)里的時候,就需要一個懲罰因子(cost,也就是libSVM的諸多參數(shù)中的C),原來的優(yōu)化問題就變成了下面這樣:


這個式子有這么幾點要注意:
  一是并非所有的樣本點都有一個松弛變量與其對應(yīng)。實際上只有“離群點”才有,或者也可以這么看,所有沒離群的點松弛變量都等于0(對負類來說,離群點就是在前面圖中,跑到H2右側(cè)的那些負樣本點,對正類來說,就是跑到H1左側(cè)的那些正樣本點)。
  二是松弛變量的值實際上標示出了對應(yīng)的點到底離群有多遠,值越大,點就越遠。
  三是懲罰因子C決定了你有多重視離群點帶來的損失,顯然當所有離群點的松弛變量的和一定時,你定的C越大,對目標函數(shù)的損失也越大,此時就暗示著你非常不愿意放棄這些離群點,最極端的情況是你把C定為無限大,這樣只要稍有一個點離群,目標函數(shù)的值馬上變成無限大,馬上讓問題變成無解,這就退化成了硬間隔問題。
四是懲罰因子C不是一個變量,整個優(yōu)化問題在解的時候,C是一個你必須事先指定的值,指定這個值以后,解一下,得到一個分類器,然后用測試數(shù)據(jù)看看結(jié)果怎么樣,如果不夠好,換一個C的值,再解一次優(yōu)化問題,得到另一個分類器,再看看效果,如此就是一個參數(shù)尋優(yōu)的過程,但這和優(yōu)化問題本身決不是一回事,優(yōu)化問題在解的過程中,C一直是定值,要記住。
  五是盡管加了松弛變量這么一說,但這個優(yōu)化問題仍然是一個優(yōu)化問題(汗,這不廢話么),解它的過程比起原始的硬間隔問題來說,沒有任何更加特殊的地方。
懲罰因子

在式子1中

注意其中C的位置,也可以回想一下C所起的作用(表征你有多么重視離群點,C越大越重視,越不想丟掉它們)。這個式子是以前做SVM的人寫的,大家也就這么用,但沒有任何規(guī)定說必須對所有的松弛變量都使用同一個懲罰因子,我們完全可以給每一個離群點都使用不同的C,這時就意味著你對每個樣本的重視程度都不一樣,有些樣本丟了也就丟了,錯了也就錯了,這些就給一個比較小的C;而有些樣本很重要,決不能分類錯誤,就給一個很大的C。
對付數(shù)據(jù)集偏斜問題的方法之一就是在懲罰因子上作文章,想必大家也猜到了,那就是給樣本數(shù)量少的負類更大的懲罰因子,表示我們重視這部分樣本(本來數(shù)量就少,再拋棄一些,那人家負類還活不活了),因此我們的目標函數(shù)中因松弛變量而損失的部分就變成了:

其中i=1…p都是正樣本,j=p+1…p+q都是負樣本。libSVM這個算法包在解決偏斜問題的時候用的就是這種方法。

那C+和C-怎么確定呢?它們的大小是試出來的(參數(shù)調(diào)優(yōu)),但是他們的比例可以有些方法來確定。咱們先假定說C+是5這么大,那確定C-的一個很直觀的方法就是使用兩類樣本數(shù)的比來算,對應(yīng)到剛才舉的例子,C-就可以定為500這么大(因為10,000:100=100:1嘛)。

但是這樣并不夠好,回看剛才的圖,你會發(fā)現(xiàn)正類之所以可以“欺負”負類,其實并不是因為負類樣本少,真實的原因是負類的樣本分布的不夠廣(沒擴充到負類本應(yīng)該有的區(qū)域)。說一個具體點的例子,現(xiàn)在想給政治類和體育類的文章做分類,政治類文章很多,而體育類只提供了幾篇關(guān)于籃球的文章,這時分類會明顯偏向于政治類,如果要給體育類文章增加樣本,但增加的樣本仍然全都是關(guān)于籃球的(也就是說,沒有足球,排球,賽車,游泳等等),那結(jié)果會怎樣呢?雖然體育類文章在數(shù)量上可以達到與政治類一樣多,但過于集中了,結(jié)果仍會偏向于政治類!所以給C+和C-確定比例更好的方法應(yīng)該是衡量他們分布的程度。比如可以算算他們在空間中占據(jù)了多大的體積,例如給負類找一個超球——就是高維空間里的球啦——它可以包含所有負類的樣本,再給正類找一個,比比兩個球的半徑,就可以大致確定分布的情況。顯然半徑大的分布就比較廣,就給小一點的懲罰因子。

但是這樣還不夠好,因為有的類別樣本確實很集中,這不是提供的樣本數(shù)量多少的問題,這是類別本身的特征(就是某些話題涉及的面很窄,例如計算機類的文章就明顯不如文化類的文章那么“天馬行空”),這個時候即便超球的半徑差異很大,也不應(yīng)該賦予兩個類別不同的懲罰因子。

核函數(shù)與松弛因子

松弛變量也就是個解決線性不可分問題的方法罷了,但是回想一下,核函數(shù)的引入不也是為了解決線性不可分的問題么?為什么要為了一個問題使用兩種方法呢?

其實兩者還有微妙的不同。一般的過程應(yīng)該是這樣,還以文本分類為例。在原始的低維空間中,樣本相當?shù)牟豢煞郑瑹o論你怎么找分類平面,總會有大量的離群點,此時用核函數(shù)向高維空間映射一下,雖然結(jié)果仍然是不可分的,但比原始空間里的要更加接近線性可分的狀態(tài)(就是達到了近似線性可分的狀態(tài)),此時再用松弛變量處理那些少數(shù)“冥頑不化”的離群點,就簡單有效得多啦。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }