国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

機器學習的特征預處理問題討論

汽車玩家 ? 來源:今日頭條 ? 作者:不一樣的程序猿 ? 2020-03-15 17:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文我們來討論特征預處理的相關問題。主要包括特征的歸一化和標準化,異常特征樣本清洗與樣本數據不平衡問題的處理。

1. 特征的標準化和歸一化

由于標準化和歸一化這兩個詞經?;煊茫员疚牟辉賲^別標準化和歸一化,而通過具體的標準化和歸一化方法來區別具體的預處理操作。

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

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

L1/L2范數標準化:如果我們只是為了統一量綱,那么通過L2范數整體標準化也是可以的,具體方法是求出每個樣本特征向量

x→的L2范數||x→||2,然后用x→/||x→||2代替原樣本特征即可。當然L1范數標準化也是可以的,即用x/||x||1

代替原樣本特征。通常情況下,范數標準化首選L2范數標準化。在sklearn中,我們可以用Normalizer來做L1/L2范數標準化。

此外,經常我們還會用到中心化,主要是在PCA降維的時候,此時我們求出特征x的平均值mean后,用x-mean代替原特征,也就是特征的均值變成了0, 但是方差并不改變。這個很好理解,因為PCA就是依賴方差來降維的。

雖然大部分機器學習模型都需要做標準化和歸一化,也有不少模型可以不做做標準化和歸一化,主要是基于概率分布的模型,比如決策樹大家族的CART,隨機森林等。當然此時使用標準化也是可以的,大多數情況下對模型的泛化能力也有改進。

2. 異常特征樣本清洗

我們在實際項目中拿到的數據往往有不少異常數據,有時候不篩選出這些異常數據很可能讓我們后面的數據分析模型有很大的偏差。那么如果我們沒有專業知識,如何篩選出這些異常特征樣本呢?常用的方法有兩種。

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

第二種是異常點檢測方法,主要是使用iForest或者one class SVM,使用異常點檢測的機器學習算法來過濾所有的異常點。

當然,某些篩選出來的異常樣本是否真的是不需要的異常特征樣本,最好找懂業務的再確認一下,防止我們將正常的樣本過濾掉了。

3. 處理不平衡數據

這個問題其實不算特征預處理的部分,不過其實它的實質還是訓練集中各個類別的樣本的特征分布不一致的問題,所以這里我們一起講。

我們做分類算法訓練時,如果訓練集里的各個類別的樣本數量不是大約相同的比例,就需要處理樣本不平衡問題。也許你會說,不處理會怎么樣呢?如果不處理,那么擬合出來的模型對于訓練集中少樣本的類別泛化能力會很差。舉個例子,我們是一個二分類問題,如果訓練集里A類別樣本占90%,B類別樣本占10%。 而測試集里A類別樣本占50%, B類別樣本占50%, 如果不考慮類別不平衡問題,訓練出來的模型對于類別B的預測準確率會很低,甚至低于50%。

如何解決這個問題呢?一般是兩種方法:權重法或者采樣法。

權重法是比較簡單的方法,我們可以對訓練集里的每個類別加一個權重class weight。如果該類別的樣本數多,那么它的權重就低,反之則權重就高。如果更細致點,我們還可以對每個樣本加權重sample weight,思路和類別權重也是一樣,即樣本數多的類別樣本權重低,反之樣本權重高。sklearn中,絕大多數分類算法都有class weight和 sample weight可以使用。

如果權重法做了以后發現預測效果還不好,可以考慮采樣法。

采樣法常用的也有兩種思路,一種是對類別樣本數多的樣本做子采樣, 比如訓練集里A類別樣本占90%,B類別樣本占10%。那么我們可以對A類的樣本子采樣,直到子采樣得到的A類樣本數和B類別現有樣本一致為止,這樣我們就只用子采樣得到的A類樣本數和B類現有樣本一起做訓練集擬合模型。第二種思路是對類別樣本數少的樣本做過采樣, 還是上面的例子,我們對B類別的樣本做過采樣,直到過采樣得到的B類別樣本數加上B類別原來樣本一起和A類樣本數一致,最后再去擬合模型。

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

4. 結語

特征工程系列終于寫完了,這個系列的知識比較零散,更偏向工程方法,所以不像算法那么緊湊,寫的也不是很好,希望大家批評指正。如果有其他好的特征工程方法需要補充的,歡迎留言評論。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8553

    瀏覽量

    136928
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    機器學習特征工程:分類變量的數值化處理方法

    編碼是機器學習流程里最容易被低估的環節之一,模型沒辦法直接處理文本形式的分類數據,尺寸(Small/Medium/Large)、顏色(Red/Blue/Green)、城市、支付方式等都是典型的分類
    的頭像 發表于 02-10 15:58 ?329次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b><b class='flag-5'>特征</b>工程:分類變量的數值化<b class='flag-5'>處理</b>方法

    數據預處理軟核加速模塊設計

    數據拼接操作,其預處理模塊結構框圖如下圖 模塊最后得到的信號為ddr_q、ddr_clk和ddr_wrreq。ddr_q是并行128bits圖像數據,ddr_clk是RAM的出口時鐘,同時引出作為下一模塊的數據時鐘,ddr_wrreq置高時代表有效數據。
    發表于 10-29 08:09

    飛凌嵌入式ElfBoard-Vim編輯器之GCC的基本使用

    /example/hello$ gcc hello.c1.GCC編譯過程GCC編譯器的編譯過程要經過預處理,編譯,匯編,鏈接等4步才能夠生成可執行文件。預處理:主要實現將頭文件展開,宏定義替換以及解析
    發表于 10-16 09:05

    機器視覺檢測PIN針

    : 結合形態學處理特征提?。ㄈ玳L寬比、面積)及深度學習(針對復雜缺陷),自動檢出彎曲、斷裂、變形、污染等。輸出與控制:實時顯示檢測結果(OK/NG)及具體參數數值。生成檢測報告,支持數據追溯。NG品自動剔除信號輸出,無縫對接產
    發表于 09-26 15:09

    量子機器學習入門:三種數據編碼方法對比與應用

    在傳統機器學習中數據編碼確實相對直觀:獨熱編碼處理類別變量,標準化調整數值范圍,然后直接輸入模型訓練。整個過程更像是數據清洗,而非核心算法組件。量子機器
    的頭像 發表于 09-15 10:27 ?770次閱讀
    量子<b class='flag-5'>機器</b><b class='flag-5'>學習</b>入門:三種數據編碼方法對比與應用

    如何在機器視覺中部署深度學習神經網絡

    圖 1:基于深度學習的目標檢測可定位已訓練的目標類別,并通過矩形框(邊界框)對其進行標識。 在討論人工智能(AI)或深度學習時,經常會出現“神經網絡”、“黑箱”、“標注”等術語。這些概念對非專業
    的頭像 發表于 09-10 17:38 ?900次閱讀
    如何在<b class='flag-5'>機器</b>視覺中部署深度<b class='flag-5'>學習</b>神經網絡

    友思特方案 | FPGA 加持,友思特圖像采集卡高速預處理助力視覺系統運行提速增效

    圖像預處理是圖像處理關鍵中間環節,通過優化傳感器到主機的數據傳輸處理為后續減負。其算法依托硬件執行,搭載?FPGA?的友思特圖像采集卡以高速運算和并行特性縮短處理時間、降低延遲并提升吞
    的頭像 發表于 08-20 09:18 ?976次閱讀
    友思特方案 | FPGA 加持,友思特圖像采集卡高速<b class='flag-5'>預處理</b>助力視覺系統運行提速增效

    FPGA 加持,友思特圖像采集卡高速預處理助力視覺系統運行提速增效

    圖像預處理是圖像處理關鍵環節,可優化數據傳輸、減輕主機負擔,其算法可在FPGA等硬件上執行。友思特FPGA圖像采集卡憑借FPGA特性,能縮短處理時間、降低延遲,適用于高速接口及實時、大數據量場景,可完成多種
    的頭像 發表于 08-13 17:41 ?1113次閱讀
    FPGA 加持,友思特圖像采集卡高速<b class='flag-5'>預處理</b>助力視覺系統運行提速增效

    鋰電池制造 | 電芯預處理工藝的步驟詳解

    電芯預處理是鋰電池包制造的首要工序,無論是新能源汽車的續航穩定性,還是儲能系統的循環壽命,其根基都可追溯至預處理工序對電芯一致性的把控,其核心在于通過系統檢測與篩選消除量產電芯的性能差異,為后續組裝
    的頭像 發表于 08-11 14:53 ?1505次閱讀
    鋰電池制造 | 電芯<b class='flag-5'>預處理</b>工藝的步驟詳解

    FPGA在機器學習中的具體應用

    隨著機器學習和人工智能技術的迅猛發展,傳統的中央處理單元(CPU)和圖形處理單元(GPU)已經無法滿足高效處理大規模數據和復雜模型的需求。F
    的頭像 發表于 07-16 15:34 ?2885次閱讀

    【「# ROS 2智能機器人開發實踐」閱讀體驗】+ROS2應用案例

    、深度學習視覺巡線、相機標定、OpenCV圖像處理等。這些內容雖然在本次閱讀體驗中沒有詳細展開,但它們同樣對于機器人的視覺感知和環境理解具有重要作用。
    發表于 04-27 11:42

    嵌入式AI技術之深度學習:數據樣本預處理過程中使用合適的特征變換對深度學習的意義

    ? 作者:蘇勇Andrew 使用神經網絡實現機器學習,網絡的每個層都將對輸入的數據做一次抽象,多層神經網絡構成深度學習的框架,可以深度理解數據中所要表示的規律。從原理上看,使用深度學習
    的頭像 發表于 04-02 18:21 ?1516次閱讀

    FPGA Verilog HDL語法之編譯預處理

    Verilog HDL語言和C語言一樣也提供了編譯預處理的功能?!熬幾g預處理”是Verilog HDL編譯系統的一個組成部分。Verilog HDL語言允許在程序中使用幾種特殊的命令(它們不是一般
    的頭像 發表于 03-27 13:30 ?1434次閱讀
    FPGA Verilog HDL語法之編譯<b class='flag-5'>預處理</b>

    樹莓派5 + Hailo AI加速器:工業級數值數據處理實戰,打通SQLite與機器學習全鏈路

    本文討論了在工業自動化背景下,開發者利用樹莓派5和HailoAI加速器進行工業級數值數據處理實戰,打通SQLite與機器學習全鏈路時遇到的問題及解決方案。關鍵要點包括:1.開發者需求:
    的頭像 發表于 03-25 09:22 ?1222次閱讀
    樹莓派5 + Hailo AI加速器:工業級數值數據<b class='flag-5'>處理</b>實戰,打通SQLite與<b class='flag-5'>機器</b><b class='flag-5'>學習</b>全鏈路

    如何確定在OpenVINO? Toolkit中預處理支持的輸入顏色格式?

    無法確定在 OpenVINO? Toolkit 中預處理支持的輸入顏色格式。
    發表于 03-06 07:28