1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        干貨|特征工程最后一個(gè)要點(diǎn) : 特征預(yù)處理

        共 3488字,需瀏覽 7分鐘

         ·

        2021-10-13 19:04

        點(diǎn)擊上方小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        本文轉(zhuǎn)自|機(jī)器學(xué)習(xí)算法工程師
        前言


        在前面我們分別討論了特征工程中的特征選擇與特征表達(dá),本文我們來(lái)討論特征預(yù)處理的相關(guān)問(wèn)題。主要包括特征的歸一化和標(biāo)準(zhǔn)化,異常特征樣本清洗與樣本數(shù)據(jù)不平衡問(wèn)題的處理。


        章節(jié)目錄

        • 特征的標(biāo)準(zhǔn)化和歸一化

        • 異常特征樣本清洗

        • 處理不平衡數(shù)據(jù)

        • 結(jié)語(yǔ)

        01?特征的標(biāo)準(zhǔn)化和歸一化
        由于標(biāo)準(zhǔn)化和歸一化這兩個(gè)詞經(jīng)常混用,所以本文不再區(qū)別標(biāo)準(zhǔn)化和歸一化,而通過(guò)具體的標(biāo)準(zhǔn)化和歸一化方法來(lái)區(qū)別具體的預(yù)處理操作。

        z-score標(biāo)準(zhǔn)化:這是最常見(jiàn)的特征預(yù)處理方式,基本所有的線性模型在擬合的時(shí)候都會(huì)做 z-score標(biāo)準(zhǔn)化。具體的方法是求出樣本特征x的均值mean和標(biāo)準(zhǔn)差std,然后用(x-mean)/std來(lái)代替原特征。這樣特征就變成了均值為0,方差為1了。在sklearn中,我們可以用StandardScaler來(lái)做z-score標(biāo)準(zhǔn)化。當(dāng)然,如果我們是用pandas做數(shù)據(jù)預(yù)處理,可以自己在數(shù)據(jù)框里面減去均值,再除以方差,自己做z-score標(biāo)準(zhǔn)化。?

        ??

        max-min標(biāo)準(zhǔn)化:也稱為離差標(biāo)準(zhǔn)化,預(yù)處理后使特征值映射到[0,1]之間。具體的方法是求出樣本特征x的最大值max和最小值min,然后用(x-min)/(max-min)來(lái)代替原特征。如果我們希望將數(shù)據(jù)映射到任意一個(gè)區(qū)間[a,b],而不是[0,1],那么也很簡(jiǎn)單。用(x-min)(b-a)/(max-min)+a來(lái)代替原特征即可。在sklearn中,我們可以用MinMaxScaler來(lái)做max-min標(biāo)準(zhǔn)化。這種方法的問(wèn)題就是如果測(cè)試集或者預(yù)測(cè)數(shù)據(jù)里的特征有小于min,或者大于max的數(shù)據(jù),會(huì)導(dǎo)致max和min發(fā)生變化,需要重新計(jì)算。所以實(shí)際算法中, 除非你對(duì)特征的取值區(qū)間有需求,否則max-min標(biāo)準(zhǔn)化沒(méi)有 z-score標(biāo)準(zhǔn)化好用。


        L1/L2范數(shù)標(biāo)準(zhǔn)化:如果我們只是為了統(tǒng)一量綱,那么通過(guò)L2范數(shù)整體標(biāo)準(zhǔn)化也是可以的,具體方法是求出每個(gè)樣本特征向量x 的L2范數(shù)L2,然后用x /L2代替原樣本特征即可。當(dāng)然L1范數(shù)標(biāo)準(zhǔn)化也是可以的,即用x/L1代替原樣本特征。通常情況下,范數(shù)標(biāo)準(zhǔn)化首選L2范數(shù)標(biāo)準(zhǔn)化。在sklearn中,我們可以用Normalizer來(lái)做L1/L2范數(shù)標(biāo)準(zhǔn)化。


        此外,經(jīng)常我們還會(huì)用到中心化,主要是在PCA降維的時(shí)候,此時(shí)我們求出特征x的平均值mean后,用x-mean代替原特征,也就是特征的均值變成了0, 但是方差并不改變。這個(gè)很好理解,因?yàn)镻CA就是依賴方差來(lái)降維的,如果我們做了z-score標(biāo)準(zhǔn)化,所以特征的方差為1,那么就沒(méi)法來(lái)降維了。


        雖然大部分機(jī)器學(xué)習(xí)模型都需要做標(biāo)準(zhǔn)化和歸一化,也有不少模型可以不做做標(biāo)準(zhǔn)化和歸一化,主要是基于概率分布的模型,比如決策樹(shù)大家族的CART,隨機(jī)森林等。當(dāng)然此時(shí)使用標(biāo)準(zhǔn)化也是可以的,大多數(shù)情況下對(duì)模型的泛化能力也有改進(jìn)。
        02?異常特征樣本清洗

        我們?cè)趯?shí)際項(xiàng)目中拿到的數(shù)據(jù)往往有不少異常數(shù)據(jù),有時(shí)候不篩選出這些異常數(shù)據(jù)很可能讓我們后面的數(shù)據(jù)分析模型有很大的偏差。那么如果我們沒(méi)有專業(yè)知識(shí),如何篩選出這些異常特征樣本呢?常用的方法有兩種。

        第一種是聚類,比如我們可以用KMeans聚類將訓(xùn)練樣本分成若干個(gè)簇,如果某一個(gè)簇里的樣本數(shù)很少,而且簇質(zhì)心和其他所有的簇都很遠(yuǎn),那么這個(gè)簇里面的樣本極有可能是異常特征樣本了。我們可以將其從訓(xùn)練集過(guò)濾掉。

        第二種是異常點(diǎn)檢測(cè)方法,主要是使用iForest或者one class SVM,使用異常點(diǎn)檢測(cè)的機(jī)器學(xué)習(xí)算法來(lái)過(guò)濾所有的異常點(diǎn)。

        當(dāng)然,某些篩選出來(lái)的異常樣本是否真的是不需要的異常特征樣本,最好找懂業(yè)務(wù)的再確認(rèn)一下,防止我們將正常的樣本過(guò)濾掉了。


        03?處理不平衡數(shù)據(jù)
        這個(gè)問(wèn)題其實(shí)不算特征預(yù)處理的部分,不過(guò)其實(shí)它的實(shí)質(zhì)還是訓(xùn)練集中各個(gè)類別的樣本的特征分布不一致的問(wèn)題,所以這里我們一起講。我們做分類算法訓(xùn)練時(shí),如果訓(xùn)練集里的各個(gè)類別的樣本數(shù)量不是大約相同的比例,就需要處理樣本不平衡問(wèn)題。也許你會(huì)說(shuō),不處理會(huì)怎么樣呢?如果不處理,那么擬合出來(lái)的模型對(duì)于訓(xùn)練集中少樣本的類別泛化能力會(huì)很差。舉個(gè)例子,我們是一個(gè)二分類問(wèn)題,如果訓(xùn)練集里A類別樣本占90%,B類別樣本占10%。而測(cè)試集里A類別樣本占50%, B類別樣本占50%, 如果不考慮類別不平衡問(wèn)題,訓(xùn)練出來(lái)的模型對(duì)于類別B的預(yù)測(cè)準(zhǔn)確率會(huì)很低,甚至低于50%。

        如何解決這個(gè)問(wèn)題呢?一般是兩種方法:權(quán)重法或者采樣法。權(quán)重法是比較簡(jiǎn)單的方法,我們可以對(duì)訓(xùn)練集里的每個(gè)類別加一個(gè)權(quán)重class weight。如果該類別的樣本數(shù)多,那么它的權(quán)重就低,反之則權(quán)重就高。如果更細(xì)致點(diǎn),我們還可以對(duì)每個(gè)樣本加權(quán)重sample weight,思路和類別權(quán)重也是一樣,即樣本數(shù)多的類別樣本權(quán)重低,反之樣本權(quán)重高。sklearn中,絕大多數(shù)分類算法都有class weight和 sample weight可以使用。

        如果權(quán)重法做了以后發(fā)現(xiàn)預(yù)測(cè)效果還不好,可以考慮采樣法。采樣法常用的也有兩種思路,一種是對(duì)類別樣本數(shù)多的樣本做子采樣, 比如訓(xùn)練集里A類別樣本占90%,B類別樣本占10%。那么我們可以對(duì)A類的樣本子采樣,直到子采樣得到的A類樣本數(shù)和B類別現(xiàn)有樣本一致為止,這樣我們就只用子采樣得到的A類樣本數(shù)和B類現(xiàn)有樣本一起做訓(xùn)練集擬合模型。第二種思路是對(duì)類別樣本數(shù)少的樣本做過(guò)采樣, 還是上面的例子,我們對(duì)B類別的樣本做過(guò)采樣,直到過(guò)采樣得到的B類別樣本數(shù)加上B類別原來(lái)樣本一起和A類樣本數(shù)一致,最后再去擬合模型。


        上述兩種常用的采樣法很簡(jiǎn)單,但是都有個(gè)問(wèn)題,就是采樣后改變了訓(xùn)練集的分布,可能導(dǎo)致泛化能力差。所以有的算法就通過(guò)其他方法來(lái)避免這個(gè)問(wèn)題,比如SMOTE算法通過(guò)人工合成的方法來(lái)生成少類別的樣本。方法也很簡(jiǎn)單,對(duì)于某一個(gè)缺少樣本的類別,它會(huì)隨機(jī)找出幾個(gè)該類別的樣本,再找出最靠近這些樣本的若干個(gè)該類別樣本,組成一個(gè)候選合成集合,然后在這個(gè)集合中不停的選擇距離較近的兩個(gè)樣本,在這兩個(gè)樣本之間,比如中點(diǎn),構(gòu)造一個(gè)新的該類別樣本。舉個(gè)例子,比如該類別的候選合成集合有兩個(gè)樣本(x1,y),(x2,y),那么SMOTE采樣后,可以得到一個(gè)新的訓(xùn)練樣本((x1+x2)/2,y),通過(guò)這種方法,我們可以得到不改變訓(xùn)練集分布的新樣本,讓訓(xùn)練集中各個(gè)類別的樣本數(shù)趨于平衡。我們可以用imbalance-learn這個(gè)Python庫(kù)中的SMOTEENN類來(lái)做SMOTE采樣。


        04?結(jié)語(yǔ)
        特征工程系列終于寫完了,這個(gè)系列的知識(shí)比較零散,更偏向工程方法,所以不像算法那么緊湊,寫的也不是很好,希望大家批評(píng)指正。如果有其他好的特征工程方法需要補(bǔ)充的,歡迎留言評(píng)論。

        好消息,小白學(xué)視覺(jué)團(tuán)隊(duì)的知識(shí)星球開(kāi)通啦,為了感謝大家的支持與厚愛(ài),團(tuán)隊(duì)決定將價(jià)值149元的知識(shí)星球現(xiàn)時(shí)免費(fèi)加入。各位小伙伴們要抓住機(jī)會(huì)哦!


        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 36
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            黑人三级片 | 中国老太卖婬HD播放福利二区免 | 国产一区免费视频 | 免费黄片在线 | chinese叫床对白videos | 高清无码黄色电影 | 女的操男的 | 青娱乐极品| 女女女女女bbbbbb毛片小说 | 一本操b毛片 |