データとモデル構築における次元削減の重要性

Rによる次元削減

Matt Pickard

Owner, Pickard Predictives, LLC

次元の呪い

  • 次元が少し増えるだけでデータ量は指数関数的に増加
    • データのスパース性 → バイアスと過学習

性別と退役軍人の表

Rによる次元削減

次元の呪い

  • 高次元データに伴う問題
  • 次元が少し増えるだけでデータ量は指数関数的に増加
    • データのスパース性 → バイアスと過学習

性別と退役軍人の表

Rによる次元削減

次元の呪い

血液型変数を追加した表

Rによる次元削減

次元の呪い

血液型変数を追加した表

Rによる次元削減

スパース性

変数値の全組み合わせ

Rによる次元削減

スパース性

変数値の全組み合わせと実データ収集の比較

Rによる次元削減

スパース性

現実のサンプルでは全組み合わせが収集されない

Rによる次元削減

スパース性:訓練・テスト集合

訓練・テストの両集合が少なくとも16観測を代表する必要がある

Rによる次元削減

スパース性:訓練・テスト集合

訓練・テストの両集合が少なくとも16観測を代表する必要がある

Rによる次元削減

スパース性:訓練・テスト集合

訓練・テストの両集合が16観測すべてを4回ずつ代表する必要がある

Rによる次元削減

スパース性:訓練・テスト集合

訓練・テストの両集合が16観測すべてを4回ずつ代表する必要がある

Rによる次元削減

最小観測数を計算する

blood_type_df <- 
  expand_grid(
    gender = c("Female", "Male"),
    veteran = c("Yes", "No"),
    bloodtype = c("A", "B", "AB", "O")
)
# A tibble: 16 × 3
   gender veteran bloodtype
   <chr>  <chr>   <chr>    
 1 Female Yes     A        
 2 Female Yes     B        
 3 Female Yes     AB       
 4 Female Yes     O        
 5 Female No      A        
 6 Female No      B        
 7 Female No      AB       
 8 Female No      O        
 9 Male   Yes     A              
   ...    ...     ...
Rによる次元削減

最小観測数を計算する

blood_type_df %>% 
  summarize(across(everything(), ~ length(unique(.)))) %>%

prod()
16

注: これは各組み合わせを1回ずつ表すための数です。

Rによる次元削減

各組み合わせを複数回表す

blood_type_df %>% 
  summarize(across(everything(), ~ length(unique(.))) %>% 
  prod() * 4  
128
Rによる次元削減

Passons à la pratique !

Rによる次元削減

Preparing Video For Download...