<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>

          我做第一個(gè)競(jìng)賽時(shí)使用的特征篩選策略。

          共 3958字,需瀏覽 8分鐘

           ·

          2021-05-13 07:34

          簡(jiǎn) 介

          Pearson卡方檢驗(yàn),有時(shí)也簡(jiǎn)稱簡(jiǎn)稱卡方檢驗(yàn),是以卡爾·皮爾遜的名字命名的,也是我做第一個(gè)數(shù)據(jù)競(jìng)賽時(shí)嘗試的第一個(gè)特征篩選方法??ǚ綑z驗(yàn)是一種統(tǒng)計(jì)假設(shè)檢驗(yàn),它假設(shè)(Null假設(shè)):

          • 一個(gè)分類變量的觀測(cè)頻率與該分類變量的期望頻率相匹配

          當(dāng)我們樣本的觀測(cè)頻率與期望頻率相差較大時(shí),Pearson’s Chi-Squared計(jì)算得到的值較大;而當(dāng)兩者接近時(shí),這個(gè)值很小。的值較大意味著觀測(cè)到的頻率和預(yù)期的頻率相差很遠(yuǎn)。的值較小意味著相反的結(jié)果:被觀察者接近預(yù)期。所以給出了觀測(cè)頻率和期望頻率之間的距離。

          • 如果我們計(jì)算得到的結(jié)果 < Critical Value:我們認(rèn)為這是在拒絕null假設(shè)時(shí)失敗了,兩個(gè)變量是獨(dú)立的,可以考慮刪除該變量。

          本文,我們介紹一種特征選擇的技術(shù)-Pearson卡方檢驗(yàn),現(xiàn)在在非常多的問題中,該策略也會(huì)經(jīng)常作為特征篩選的重要Baseline進(jìn)行比較。

          Pearson’s Chi-Squared Test

          1. 單變量的ChiSquare計(jì)算

          單個(gè)特征變量的ChiSquare計(jì)算公式如下:


          • 為某列特征,為第個(gè)樣本對(duì)應(yīng)的特征值;

          2.雙變量的ChiSquare計(jì)算



          • 為觀測(cè)值,為樣本數(shù)
          代碼

          1. 手動(dòng)計(jì)算Pearson’s Chi-Squared的值

          手動(dòng)計(jì)算的步驟如下;

          • 需要先構(gòu)建交叉頻率表;
          • 計(jì)算期望;
          • 按照上面的數(shù)學(xué)式計(jì)算Chi-Squared的值。
          import pandas as pd
          from functools import reduce 
          import numpy as np 
          from   scipy import stats
          from   sklearn.feature_selection import SelectKBest, chi2
          # 構(gòu)建數(shù)據(jù)集
          df = pd.DataFrame()
          df['f1'] = [0,0,0,0,0] * 10
          df['f2'] = [1,1,0,0,0] * 10
          df['y']  = [1,1,0,0,0] * 10

          df_f1_y_crosstab = pd.crosstab(df['f1'], df['y'], margins=True)
          df_f2_y_crosstab = pd.crosstab(df['f2'], df['y'], margins=True
          def margins(a): 
              margsums = []
              ranged = list(range(a.ndim)) 
              for k in ranged:
                  marg = np.apply_over_axes(np.sum, a, [j for j in ranged if j != k])
                  margsums.append(marg)
              return margsums

          observed = df_f2_y_crosstab.values  
          d = observed.ndim
          margsums = margins(observed)
          expected = reduce(np.multiply, margsums) / observed.sum() ** (d - 1)
          terms = (observed - expected)**2 / (expected)
          stat = terms.sum()
          stat
          [0, 1]
          50.0

          2. stats.chi2_contingency

          因?yàn)镻earson’s Chi-Squared是非常流行的一種策略,所以在stats中也已經(jīng)集成了,可以直接調(diào)用進(jìn)行特征篩選。

          def check_dependency(df_crosstab_table, confidence_interval):
              chi2, p, dof, expected = stats.chi2_contingency(df_crosstab_table)
              print ("Chi2 value = {}".format(chi2))
              print ("PValue = {}".format(p))
              alpha = 1.0 - confidence_interval
              if p <= alpha:
                  print('Dependent (reject H0)')
              else:
                  print('Independent (fail to reject H0)')
              return expected
          _ = check_dependency(df_f1_y_crosstab, 0.95)
          Chi2 value = 0.0
          PValue = 1.0
          Independent (fail to reject H0)
          _ = check_dependency(df_f2_y_crosstab, 0.95)
          Chi2 value = 50.0
          PValue = 3.610865404890647e-10
          Dependent (reject H0)

          我們發(fā)現(xiàn)我們最終使用工具包計(jì)算得到的Chi2的值和我們自己算的是一樣的,此外我們將置信度設(shè)置為0.95,最終得到的結(jié)果基本符合我們的預(yù)期。

          適用問題

          一般Pearson_Chi-Squared使用在分類問題中,判斷類別變量與標(biāo)簽之間的關(guān)系,然后基于計(jì)算得到的值進(jìn)行特征的篩選,自定義置信度的值進(jìn)行特征的篩選。

          參考文獻(xiàn)
          1. Chi-Squared For Feature Selection using SelectKBest
          2. Statistical Thinking - Chi Square Test - Feature Selection
          3. https://github.com/scipy/scipy/blob/v0.14.0/scipy/stats/stats.py
          4. https://github.com/scipy/scipy/blob/v0.14.0/scipy/stats/contingency.py#L64
          5. Wiki.皮爾遜卡方檢驗(yàn)
          6. https://nbviewer.jupyter.org/github/bhattbhavesh91/chi-squared-feature-selection-selectkbest/blob/master/chi-squared-selectkbest-notebook.ipynb
          7. A Gentle Introduction to the Chi-Squared Test for Machine Learning

          ?------------------------------------------------


          雙一流高校研究生團(tuán)隊(duì)創(chuàng)建 ↓

          專注于計(jì)算機(jī)視覺原創(chuàng)并分享相關(guān)知識(shí) ?


          整理不易,點(diǎn)贊三連!

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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  日韩少妇视频 | 欧美老妇XX | 一区二区三区精品 | 亚洲第一香蕉视频在线观看 | 天堂中文在线8 |