<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一鍵數(shù)據(jù)分析&自動化特征工程!

          共 2436字,需瀏覽 5分鐘

           ·

          2021-02-21 22:04

          創(chuàng)造新的特征是一件十分困難的事情,需要豐富的專業(yè)知識和大量的時間。機器學習應(yīng)用的本質(zhì)基本上就是特征工程。——Andrew Ng

          業(yè)內(nèi)常說數(shù)據(jù)決定了模型效果上限,而機器學習算法是通過數(shù)據(jù)特征做出預測的,好的特征可以顯著地提升模型效果。這意味著通過特征生成(即從數(shù)據(jù)設(shè)計加工出模型可用特征),是特征工程相當關(guān)鍵的一步。

          本文從特征生成作用、特征生成的方法(人工設(shè)計、自動化特征生成)展開闡述并附上代碼。

          1 特征生成的作用

          特征生成是特征提取中的重要一步,作用在于:

          • 增加特征的表達能力,提升模型效果;(如體重除以身高就是表達健康情況的重要特征,而單純看身高或體重,對健康情況表達就有限。)
          • 可以融入業(yè)務(wù)上的理解設(shè)計特征,增加模型的可解釋性;

          2 數(shù)據(jù)情況分析

          本文示例的數(shù)據(jù)集是客戶的資金變動情況,如下數(shù)據(jù)字典:

          cust_no:客戶編號;I1 :性別;I2:年齡?;E1:開戶日期;??
          B6 :近期轉(zhuǎn)賬日期;C1 (后綴_fir表示上個月):存款;C2:存款產(chǎn)品數(shù);?
          X1:理財存款;X2:結(jié)構(gòu)性存款;? label:資金情況上升下降情況。

          這里安利一個超實用Python庫,可以一鍵數(shù)據(jù)分析(數(shù)據(jù)概況、缺失、相關(guān)性、異常值等等),方便結(jié)合數(shù)據(jù)分析報告做特征生成。

          #?一鍵數(shù)據(jù)分析
          import?pandas_profiling

          pandas_profiling.ProfileReport(df)

          3 ?自動化特征生成

          傳統(tǒng)的特征工程方法通過人工構(gòu)建特征,這是一個繁瑣、耗時且容易出錯的過程。自動化特征工程是通過Fearturetools等工具,從一組相關(guān)數(shù)據(jù)表中自動生成有用的特征的過程。對比人工生成特征會更為高效,可重復性更高,能夠更快地構(gòu)建模型。

          3.1 FeatureTools上手

          Featuretools是一個用于執(zhí)行自動化特征工程的開源庫,它有基本的3個概念:1)Feature Primitives(特征基元):生成特征的常用方法,分為聚合(agg_primitives)、轉(zhuǎn)換(trans_primitives)的方式。可通過如下代碼列出featuretools的特征加工方法及簡介。

          import?featuretools?as?ft

          ft.list_primitives()

          2)Entity(實體)??可以被看作類似Pandas DataFrame, ?多個實體的集合稱為Entityset。實體間可以根據(jù)關(guān)聯(lián)鍵添加關(guān)聯(lián)關(guān)系Relationship

          #?df1為原始的特征數(shù)據(jù)
          df1?=?df.drop('label',axis=1)

          #?df2為客戶清單(cust_no唯一值)
          df2?=?df[['cust_no']].drop_duplicates()
          df2.head()

          #?定義數(shù)據(jù)集
          es?=?ft.EntitySet(id='dfs')

          #?增加一個df1數(shù)據(jù)框?qū)嶓w
          es.entity_from_dataframe(entity_id='df1',?????????
          ?????????????dataframe=df1,
          ?????????????index='id',
          ?????????????make_index=True)

          #?增加一個df2數(shù)據(jù)實體
          es.entity_from_dataframe(entity_id='df2',?????????
          ?????????????dataframe=df2,
          ?????????????index='cust_no')


          #?添加實體間關(guān)系:通過 cust_no鍵關(guān)聯(lián) df_1 和 df 2實體
          relation1?=?ft.Relationship(es['df2']['cust_no'],?es['df1']['cust_no'])
          es?=?es.add_relationship(relation1)

          3)dfs(深度特征合成)?:?是從多個數(shù)據(jù)集創(chuàng)建新特征的過程,可以通過設(shè)置搜索的最大深度(max_depth)來控制所特征生成的復雜性

          ##?運行DFS特征衍生
          features_matrix,feature_names?=?ft.dfs(entityset=es,
          ???????????????????????????????????????target_entity='df2',
          ???????????????????????????????????????relationships?=?[relation1],
          ???????????????????????????????????????trans_primitives=['divide_numeric','multiply_numeric','subtract_numeric'],
          ???????????????????????????????????????agg_primitives=['sum'],
          ???????????????????????????????????????max_depth=2,n_jobs=1,verbose=-1)

          3.2 FeatureTools問題點

          4.2.1 內(nèi)存溢出問題 Fearturetools是通過工程層面暴力生成所有特征的過程,當數(shù)據(jù)量大的時候,容易造成內(nèi)存溢出。解決這個問題除了升級服務(wù)器內(nèi)存,減少njobs,還有一個常用的是通過只選擇重要的特征進行暴力衍生特征。

          4.2.2 特征維度爆炸 當原始特征數(shù)量多,或max_depth、特征基元的種類設(shè)定較大,F(xiàn)earturetools生成的特征數(shù)量巨大,容易維度爆炸。這是就需要考慮到特征選擇、特征降維。


          “整理不易,三連
          瀏覽 82
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线无码人妻 | 天天射天天日天天干 | 五月婷婷在线观看 | 青草福利在线视频 | 国内精品久久久久 |