データ分析における特徴量エンジニアリング / feature engineering recipes

データ分析における特徴量エンジニアリング / feature engineering recipes

D12a80cab206033a820ccff8319f957b?s=128

Uryu Shinya

July 10, 2019
Tweet

Transcript

  1. σʔλ෼ੳʹ͓͚Δ ಛ௃ྔΤϯδχΞϦϯά ೥݄೔ ӝੜਅ໵ !V@SJCP

  2. ຊ೔ͷ಺༰ ಛ௃ྔΤϯδχΞϦϯά ʹ͍ͭͯͷ֤࿦ ଟ༷ͳσʔλͷ ಛ௃ྔΤϯδχΞϦϯά σʔλ෼ੳϓϩδΣΫτͷ ϫʔΫϑϩʔʢಋೖʣ ಛ௃ྔΤϯδχΞϦϯά Ҏ֎Ͱॏཁͳ͜ͱ

  3. σʔλ෼ੳͷϫʔΫϑϩʔɻ(BSSFUUBOE)BEMFZ  ΑΓ࡞੒ փ৭ͷྖҬ͕ࠓճѻ͏ൣғ σʔλ෼ੳͷϫʔΫϑϩʔ

  4. ൓෮తͳ࡞ۀͰϞσϧΛຏ্͖͍͛ͯ͘ Ϟσϧߏஙͷయܕతͳ࿮૊Έɻ.BYBOE,KFMM  ΑΓ࡞੒

  5. ͍͟ɺϞσϦϯάͷ࣮ߦʂͱ͸͍͔ͳ͍ a)データの特徴、データ間の関係を知り、初期モデルに利⽤す る「出発点」を⾒つけるための視覚化。 b)統計量の集計や⽬的変数と強い相関のある変数を特定、モデ ルに対する仮説を⽴てる。データを⼗分に理解できたと⾔え るまで、関係を可視化し、さらなる定量分析を繰り返す。 c)データを初期モデルに適⽤するための準備。

  6. ಛ௃ྔΤϯδχΞϦϯά タスク、モデルに適した特徴量(数値)へと変換する過程 データをモデル上でどのように表現するかという課題に対し モデル、アルゴリズムの多くは ⼊⼒に仮定を置いたり、制約を設けている

  7. ͳͥಛ௃ྔΤϯδχΞϦϯά͕ඞཁ͔ ・数値データに対しても変換や結合の処理を⾏うことがある モデルに数値以外のデータ(画像や⽂字列)を 当てはめ、アルゴリズムによる計算を実⾏するには数値化が必要 データ、モデルの各視点において特徴量エンジニアリングが重要 ・データの持つ特徴を強調することもできる ・「知識」をデータに反映させる →より良い特徴量を⽤意するため

  8. લॲཧͱͷҧ͍ (数値的な変換により) データをモデルに適⽤させる、 モデルを改善していくため 障害や異常となり得る要素を 処理 減算のプロセス と捉えられる 基本的には 加算のプロセス

    合成、縮約も含まれる ⽋損値や異常値への対処 前処理 特徴量エンジニアリング
  9. ྫϏʔϧ΁ͷࢧग़ֹۚΛߟ͑Δ データ: 年⽉、ビールへの⽀出⾦額、気象要因 タスク: ビールへの⽀出⾦額を予測する回帰問題 モデル: 線形回帰、サポートベクターマシン、ランダムフォレスト -年はそれほど重要ではない。 -夏の気温が⾼い時期(6⽉から9⽉ご ろ)が重要そう。

    -湿度との関係は? -⽇にちは関係するだろうか? - 夏... 150~⽇め?? - 平⽇よりも休⽇
  10. d)初期モデルの実⾏。初期モデルに利⽤したデータで、いくつ かのモデルも適⽤、⽐較。ハイパーパラメータの探索もここ で⾏われる。 e)複数回⾏われたパラメータ調整の結果を分析 f)モデルの結果を可視化 ෳ਺ͷϞσϧͰͷੑೳΛൺֱ͢Δ

  11. ϞσϧͷੑೳධՁ タスクに応じた評価指標を利⽤する 回帰問題 分類問題 決定係数 (R2, RSQ: coefficient of determination)

    ⼆乗平均平⽅根誤差 (RMSE: Root Mean Square Error) 平均絶対誤差 (MAE: Mean absolute error) 混同⾏列 正解率 適合率と再現率 ROC曲線とAUC
  12. g)初期モデルを改良する特徴量エンジニアリング h)最終的な候補モデルに対する調整 i)テストセットを利⽤した汎化性能の評価 j)運⽤ ϞσϧΛվળ͢Δಛ௃ྔΛ୳͢

  13. ຊ೔ͷ಺༰ ಛ௃ྔΤϯδχΞϦϯά ʹ͍ͭͯͷ֤࿦ ଟ༷ͳσʔλͷ ಛ௃ྔΤϯδχΞϦϯά σʔλ෼ੳϓϩδΣΫτͷ ϫʔΫϑϩʔʢಋೖʣ ಛ௃ྔΤϯδχΞϦϯά Ҏ֎Ͱॏཁͳ͜ͱ

  14. ͲͷΑ͏ͳछྨͷσʔλΛѻ͏͔ 表 数値 カテゴリ 論理値 名義尺度 順序尺度 間隔尺度 ⽐例尺度 形式

    …csv, エクセル RDB データ型 尺度
  15. ԋश༻σʔλͱ՝୊ઃܭ タスク: 地価価格(標準地の地 価)を予測する回帰問題、地価価 格に影響する変数を知りたい
 特徴: 地理空間、距離、⽴地条件 1. 地価公⽰データ (land

    price: lp) 出典: 国⼟交通省 国⼟数値情報 地価公⽰データ 第2.4版 L01 平成30年度 http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L01-v2_5.html 平成27年度 国勢調査 従業地・通学地による⼈⼝・就業状態等集計
  16. 2. ビールへの⽀出データ (beer) ԋश༻σʔλͱ՝୊ઃܭ タスク: ビールへの⽀出を 予測する回帰問題
 特徴: 時系列、気象要因 出典:

    国⼟交通省 国⼟数値情報 ⼟砂災害・雪崩メッシュデータ 第1.1版 A30a5 平成23年度 http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A30a5.html 標⾼・傾斜度3次メッシュデータ 第2.2版 G04a 平成21(2009)年度 http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-G04-a.html 特殊⼟壌地帯データ 第3.0版 平成28年 http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A23-v3_0.html 気象データ 気象庁ホームページ 過去の気象データ・ダウンロード http://www.data.jma.go.jp/gmd/risk/obsdl/index.php
  17. 3. ⼟砂災害・雪崩メッシュデータ (hazard) ԋश༻σʔλͱ՝୊ઃܭ タスク: 災害発⽣の有無を 分類する問題
 特徴: 空間、クラス不均衡、 ⽋損、気象要因、地形要因

    出典: 総務省 家計調査 家計収⽀編 ⼆⼈以上の世帯 「1世帯当たり1か⽉間の⽇別⽀出 (表6-16)」 気象データ 気象庁ホームページ 過去の気象データ・ダウンロード http://www.data.jma.go.jp/gmd/risk/obsdl/index.php
  18. ͲͷΑ͏ͳछྨͷσʔλΛѻ͏͔ ද ը૾ จॻ ೔෇ɾ࣌ؒ ஍ཧۭؒ ɾ࠲ඪ 形式 データ型 尺度

    数値 カテゴリ 論理値 名義尺度 順序尺度 間隔尺度 ⽐例尺度 ςΩετ
  19. ಛ௃ྔΤϯδχΞϦϯά Ҏ֎Ͱॏཁͳ͜ͱ ຊ೔ͷ಺༰ ಛ௃ྔΤϯδχΞϦϯά ʹ͍ͭͯͷ֤࿦ ଟ༷ͳσʔλͷ ಛ௃ྔΤϯδχΞϦϯά σʔλ෼ੳϓϩδΣΫτͷ ϫʔΫϑϩʔʢಋೖʣ

  20. ΑΓྑ͍ϞσϧΛ໨ࢦͯ͠ -構築したモデルに含まれるどの変数が重要か -各特徴量が予測にどう影響するか -ブラックボックスなモデルの中⾝を説明する -運⽤するモデルがデータ漏洩、過学習を起こ さないために -コスト vs パフォーマンス -最適なモデルでなくても優良なモデルを⽬指す

    データ分割、交差検証 モデルの解釈 ハイパーパラメータ探索
  21. εϥΠυͷݟํ ࢀߟॻͰͷϖʔδ ίʔυ 8BSOJOH %BOHFS *OGP Q TDMFBSOEFDPNQPTJUJPO1$" TUBUTQSDPNQ

  22. ఆྔ෼ੳͱ୳ࡧతσʔλ෼ੳ データの集計、要約 探索的なデータ分析 (Exploratory Data Analysis: EDA) データへの理解を深め、分析の出発点を⾒つけよう

  23. σʔλΛ஌Γɺద੾ʹॲཧ͢Δ 地価公⽰データの基礎情報 σʔλ݅਺ σʔλܕ dim(df_lp_kanto) df_landprice.shape df_landprice.dtypes str(df_lp_kanto) ྻ਺ ߦ਺

    ncol(df_lp_kanto) nrow(df_lp_kanto) pandas len(df_landprice.columns) len(df_landprice)
  24. σʔλΛோΊΔ ઌ಄ߦ ຤ඌߦ head(df_lp_kanto) df_landprice.head() df_landprice.tail() tail(df_lp_kanto) σʔλܕͱͷ ૊Έ߹Θͤ glimpse(df_lp_kanto)

    pandas df_landprice.describe() ཁ໿౷ܭྔ summary(df_lp_kanto)
  25. σʔλܕ͝ͱʹ֬ೝ skimr::skim(df_lp_kanto) ⽂字列、整数、論理値、数値 ⽋損、完全、件数、最⼩・最⼤、ユニーク 平均値、標準偏差、四分位数 カウント ヒストグラム

  26. ώετάϥϜ ggplot2 matplotlob df_lp_kanto %>% ggplot(aes(distance_from_station)) + geom_histogram(bins = 30))

    データのばらつき、スパイクを検出 df_landprice. distance_from_station.hist(bins = 30)
  27. ૬ؔߦྻͷώʔτϚοϓ visdat seaborn (sns) 変数間の関係を⼀望する sns.heatmap(df, vmax=1, vmin=-1, center=0) df_lp_kanto

    %>% vis_cor()
  28. ܽଛ஋ͷूܭɾՄࢹԽ WBSJBCMF O@NJTT QDU@NJTT QBSLT@MBX   GPSFTU@MBX  

    QSPYJNJUZ@XJUI@USBOTQPSUBUJPO@GB DJMJUZ   VTBHF@EFTDSJQUJPO   DPOpHVSBUJPO   pSF@BSFB   VTF@EJTUSJDU   CVJMEJOH@TUSVDUVSF   df_lp_kanto %>% select(-starts_with(".")) %>% miss_var_summary() %>% filter(n_miss > 0) naniar
  29. ܽଛ஋ͷूܭɾՄࢹԽ df_lp_kanto %>% select(-starts_with(".")) %>% vis_miss() naniar gg_miss_fct(x = df_lp_kanto,

    fct = .prefecture)
  30. ܽଛ஋ͷूܭɾՄࢹԽ naniar gg_miss_fct(x = df_lp_kanto, fct = .prefecture)

  31. લॲཧʢσʔλͷΫϨϯδϯάʣ いくつかの作業は モデルの性能を⼤きく左右する データをモデルに流し込む前段階 ⽋損値や外れ値への対処も必要

  32. લॲཧͷඞཁੑͱͦͷൣғ 適⽤するモデルのタイプによって異なる 変数のスケールの影響を受けない ⽊ベースのモデル(決定⽊、ランダムフォレスト) 線形回帰、k-means、主成分分析など多くのモデル ⼊⼒のスケールに敏感 変数間のスケールを揃える必要がある ⽋損値や外れ値の影響 ライブラリによる⽋損処理への対応の違い

  33. લॲཧͷඞཁੑॏճؼϞσϧ - 変数間の係数の直接的な⽐較が困難 - 標準化回帰係数を利⽤する⽅法もある UFSN FTUJNBUF TUEFSSPS TUBUJTUJD QWBMVF

    *OUFSDFQU     & EJTUBODF@GSPN@TUBUJPO    & BDSFBHF    F OJHIU@QPQVMBUJPO    F
  34. લॲཧͷඞཁੑओ੒෼෼ੳ - 主成分分析はスケール不変性を持たない - 異なる単位の変数を⼊⼒に与えると⼤きな値の⼊った変 数の影響が強くなる sklearn.decomposition PCA prcomp(~ distance_from_station

    + acreage + night_population, data = df_lp_kanto, center = FALSE, scale. = FALSE)
  35. લॲཧͷඞཁੑओ੒෼෼ੳ Standard deviations (1, .., p=3): [1] 326371.254 7270.361 2279.386

    Rotation (n x k) = (3 x 3): PC1 PC2 PC3 distance_from_station 0.003184224 0.027579010 -0.99961456 acreage 0.001558732 0.999618272 0.02758408 night_population 0.999993716 -0.001645965 0.00314002 summary(pca_res) Importance of components: PC1 PC2 PC3 Standard deviation 326371.2544 7270.3613 2279.38581 Proportion of Variance 0.9995 0.0005 0.00005 Cumulative Proportion 0.9995 1.0000 1.00000
  36. લॲཧͷඞཁੑL// スケールの影響を受けて結果が変わる

  37. εέʔϦϯάॲཧ - データが取り得る値の規模 (scale)をデータ間で 揃える処理 - 分布には影響しない - 異なる単位をもつデータを扱う場合に役⽴つ -->

    連続変数からなる多くのデータに該当する - 体重 (kg)と⾝⻑ (cm)... 同じ値120で あってもそれぞれ意味合いが異なるため⽐較できない
  38. .JO.BYεέʔϦϯά 値の範囲を0から1に収まるように調整 - e.g. 画像処理におけるRGBの強さ(0~255) 外れ値の影響を受けやすい 最⼩値、最⼤値に範囲がある場合に有効 ˜ x =

    x min(x) max(x) min(x) <latexit sha1_base64="y7z5r5SDGAlXnwjpoz5bV2dI6+M=">AAACk3ichVG7SgNBFD2u7/iKiiDYLAZFC8NEBUURRC1sBF9RwUjY3Ux0cF/sTkJ0yQ9YCxZWCiLiH9hq4Q9Y+AliqWBj4c1mQVTUu+zcM2fuuXNmRndN4UvGHmuU2rr6hsam5lhLa1t7R7yza8N3Cp7B04ZjOt6WrvncFDZPSyFNvuV6XLN0k2/q+/OV9c0i93zh2OvywOU7lrZri7wwNElUNp7MSGHmeFAqqzNqJu9pRlBSR1RL2EOl4XJgaSXKn0Q2nmBJFob6E6QikEAUy078Ehnk4MBAARY4bEjCJjT49G0jBQaXuB0ExHmERLjOUUaMtAWq4lShEbtP4y7NtiPWpnmlpx+qDdrFpN8jpYoB9sCu2Au7Z9fsib3/2isIe1S8HFDWq1ruZjuOetfe/lVZlCX2PlV/epbIYzL0Ksi7GzKVUxhVffHw5GVtanUgGGTn7Jn8n7FHdksnsIuvxsUKXz1FjB4g9f26f4KN0WRqLDm6Mp6YnYueogl96McQ3fcEZrGIZaRp32Pc4BZ3So8yrcwpC9VSpSbSdONLKEsf9E6aNg==</latexit> sklearn.preprocessing MinMaxScaler
  39. த৺Խ ˜ x = x mean(x) <latexit sha1_base64="VABxFAjfxU1LJQzBwNN9hltVrAo=">AAACfHichVHLLgRBFD3T3uM1WJDYdAwyIiY1CCKRCBtLr0FiJpPuVqjoV7prJsPED/gBCytERPAVNn7AwieIJYmNiDs9nQgT3EpVnTp1z61TVbprCl8y9hhRamrr6hsam6LNLa1t7bGOzjXfyXsGTxuO6XgbuuZzU9g8LYU0+Ybrcc3STb6u782X99cL3POFY6/KfZdnLW3HFtvC0CRRuVh3Rgpzi5eKh+qMWlRHVItrdqI4lIvFWZIFoVaDVAjiCGPRiV0igy04MJCHBQ4bkrAJDT61TaTA4BKXRYk4j5AI9jkOESVtnrI4ZWjE7tG4Q6vNkLVpXa7pB2qDTjGpe6RUMcAe2BV7Yffsmj2x919rlYIaZS/7NOsVLXdz7Uc9K2//qiyaJXa/VH96ltjGVOBVkHc3YMq3MCr6wsHxy8r08kBpkJ2xZ/J/yh7ZHd3ALrwaF0t8+QRR+oDUz+euBmujydRYcnRpPD47F35FI3rRhwS99yRmsYBFpINzz3GD28iH0q8MKyOVVCUSarrwLZSJT3d2kjs=</latexit> 平均を0にする scale(),

    recipes::step_center() sklearn.preprocessing StandardScaler
  40. εέʔϦϯά 特徴量を分散で割ることにより、分散1を得る s2 = x var(x) <latexit sha1_base64="wFdbYo8gsJL9vVeiomT7SN7yhKM=">AAACe3ichVHLSsNAFD2Nr1ofrQoiuCkWRUXKtCqKIBTduNTWqtBqSeK0hqZJSNKixv6AP+DClQURqX/hxh9w0U8QlxXcKHibBkRFvcPMnDlzz50zM5KhKpbNWMMndHR2dff4ewN9/QODwdDQ8I6ll02Zp2Vd1c09SbS4qmg8bSu2yvcMk4slSeW7UnG9tb9b4aal6Nq2fWLw/ZJY0JS8Ios2UbnQqHUQD6+Gs3lTlJ3jqlMRzenjmWouFGFR5kb4J4h5IAIvNvXQDbI4hA4ZZZTAocEmrEKERS2DGBgM4vbhEGcSUtx9jioCpC1TFqcMkdgijQVaZTxWo3WrpuWqZTpFpW6SMoxJ9shuWZM9sDp7Ym+/1nLcGi0vJzRLbS03csHzsdTrv6oSzTaOPlV/eraRx7LrVSHvhsu0biG39ZXTi2ZqJTnpTLEaeyb/V6zB7ukGWuVFvt7iyUsE6ANi35/7J9iJR2Pz0fjWQiSx5n2FH+OYwDS99xIS2MAm0nTuGWqo4873LkSEWWGunSr4PM0IvoSw+AHVc5J5</latexit> scale(), recipes::step_scale()

    sklearn.preprocessing StandardScaler
  41. 特徴量の値を平均0、分散1に変換 →元のデータが正規分布に従うことを仮定 ඪ४Խ 中⼼化 + スケーリング ˜ x = x

    mean(x) sqrt(var(x)) <latexit sha1_base64="FhqCyxOyclqoubSuWgWs4bVcJLk=">AAACkHichVHLShxBFD22eeiYZEbdCNk0GQwjIUONERRBfG1CVr5GBUeG6p4aLeyX1TXDaDM/4M6VC1cRRMQPyDbixh9w4SeISwPZZJHbPQ0hkSS36apzT91z61SVFTgy1IzddhndT54+e97Tm+l78fJVNtc/sBr6DWWLsu07vlq3eCgc6YmyltoR64ES3LUcsWbtzMfra02hQul7K3ovEJsu3/JkXdpcE1XNvato6dRE1GqbU2alrrgdtd6bruBeoTXSjsJdpQtNrigZaVdzeVZkSZiPQSkFeaSx4OfOUEENPmw04ELAgybsgCOkbwMlMATEbSIiThGSybpAGxnSNqhKUAUndofGLco2UtajPO4ZJmqbdnHoV6Q0Mcxu2Dl7YNfsgt2xH3/tFSU9Yi97NFsdrQiq2YOh5e//Vbk0a2z/Uv3Ts0YdE4lXSd6DhIlPYXf0zf2jh+XJpeHoLTth9+T/M7tlV3QCr/nNPl0US8fI0AOU/rzux2B1tFj6UBxdHMvPzKVP0YPXeIMC3fc4ZvARCyjTvof4gq+4NAaMCWPamO2UGl2pZhC/hfHpJyJamfk=</latexit> scale() sklearn.preprocessing StandardScaler
  42. 特徴量選択の「フィルタ法」に相当する作業 σʔλড়Խ データから不要な列を除去する 情報を含まない… 分散0 相関係数の⾼い変数の⽚⽅を落とす 共通の項、組み合わせを持つ変数 次元削減も有効な⽅法

  43. ਺஋σʔλͷऔΓѻ͍ 数値にも⾊々 数値データであっても特徴量エンジニアリングが必要 数値データの特徴量エンジニアリングは、各種の 特徴量エンジニアリングの基礎となる

  44. ਺஋σʔλ๊͕͑Δ໰୊ - スケールが⼤きく異なる - 歪んだ分布をもつ - ⼤⼩の外れ値を含む - 変数間で、線形では表現できないような複雑な関係を持っている -

    冗⻑な情報 課題設定、適⽤するモデルの種類によって顕在化 適切なモデルを選択することで問題のいくつかを軽減できる
  45. ਺஋σʔλ๊͕͑Δ໰୊ 外れ値の影響を受けやすい 順位化されたデータを利⽤する⽊ベースのモデルを ⽤いることで外れ値の影響を軽減 強い相関がある変数を組み込むと、係数が不安定 部分最⼩⼆乗法を⽤いることで説明変数の相関を無相関化 Lۙ๣๏΍αϙʔτϕΫλʔϚγϯ ॏճؼϞσϧ → →

  46. ର਺ม׵ 変換後の分布を変化させる 偏りのあるデータで有効 -規模が⼤きい時はその範囲を縮⼩ -⼩さい時に拡⼤ 裾の⻑いデータを⼭に近づける p.16 numpy.log log(), step_log()

  47. #PY$PYม׵ 正規分布に従わないデータを 正規分布に近づける⼿法 ポアソン分布のデータに 対して有効 p.24 scipy.stats.boxcox step_BoxCox() ˜ x

    = ( x 1 , 6= 0 ln(x) = 0 <latexit sha1_base64="3OHoUdMQ8a1Yip0TFW0swJl474s=">AAAC3nichVHPaxQxFH4zWm1H7W71UvAyuLRU0OVNLShCoejFY39tW2jqmpnNbkOzmTGTXXYd5upBEI8KnhRExD/DS/8BDz15Fo8VvHjw7eygaFFfSPLly/teviRhomRqEY8c99TpiTNnJ6e8c+cvTFeqMxe30rhnItGIYhWbnZCnQkktGlZaJXYSI3g3VGI7PLg72t/uC5PKWG/aYSL2uryjZVtG3BLVrA6ZlaolskG+zJRoW5Z5LBQdqTNuDB/mmVK5x9qGR9ngPlNUuMWvB3lWwmt+Pl9Cn2nx0EfGPKb0wuDqT37ZR48J3SoreszIzr6tN6s1rGMR/kkQlKAGZazG1bfAoAUxRNCDLgjQYAkr4JBS24UAEBLi9iAjzhCSxb6AHDzS9ihLUAYn9oDGDq12S1bTelQzLdQRnaKoG1L6MIcf8R0e4yG+x8/4/a+1sqLGyMuQ5nCsFUmz8mR249t/VV2aLez/Uv3Ts4U23Cq8SvKeFMzoFtFY33/0/Hjj9vpcNo+v8Qv5f4VH+IFuoPtfozdrYv0lePQBwZ/PfRJsLdaDG/XFtaXayp3yKybhMlyBBXrvm7AC92AVGnTuJ2fCmXYq7gP3sfvUfTZOdZ1Scwl+C/fFDywxtko=</latexit>
  48. ਖ਼نੑͷݕఆ シャピロ-ウィルクの正規性検定や正規確率グラフを作成して確認 正規分布に近づいているが P < 0.05 (シャピロ-ウィルクの正規性検定)

  49. ϩδοτม׵ step_logit() logit(⇡) = log( ⇡ 1 ⇡ ) <latexit

    sha1_base64="pTt7hRBEdnPQ52OMka7gvcfvXQE=">AAACiXichVHLSsNAFD3GV62PVt0IbopVqQvLRAVFEIrduPRVFayUJE7rYJqEZFqowR/wB1y4UhARN25168YfcOEniEsFNy68SQOiot5h5t575p47Z2Z0xxSeZOyxRWlta+/ojHXFu3t6+xLJ/oENz665Bi8Ytmm7W7rmcVNYvCCFNPmW43Ktqpt8U9/PB/ubde56wrbWZcPhO1WtYomyMDRJUCk5atoVITNFR0ykFlJFyjLFsqsZPiGHvjoZuIlSMs2yLLTUz0CNgjQiW7aTFyhiFzYM1FAFhwVJsQkNHo1tqGBwCNuBT5hLkQj3OQ4RJ26NqjhVaITu01qhbDtCLcqDnl7INugUk6ZLzBTG2AO7ZC/snl2xJ/b+ay8/7BFoaZDXm1zulBJHQ2tv/7Kq5CX2Pll/apYoYy7UKki7EyLBLYwmv35w/LI2vzrmj7Mz9kz6T9kju6MbWPVX43yFr54gTh+gfn/un8HGVFadzk6tzKRzi9FXxDCMEWTovWeRwxKWUaBzj3CNG9wq3YqqzCnzzVKlJeIM4osp+Q/ra5bV</latexit> ⽐率や確率のデータ(0~1) を 1 1 <latexit sha1_base64="orExfmjGICTc8XYq0+fh6DStN0I=">AAACd3ichVHLSgMxFD0d3/XRqhvBhcXS4qYlo4LiSnTjsj5aBS1lZkw1dDozzKTFWvwBf8CFIChIFT/DjT/gwk8QlxVEcOHtdEC0qDckOTm55+Yk0R1TeJKxp5DS1d3T29c/EB4cGh6JREfHcp5dcQ2eNWzTdnd0zeOmsHhWCmnyHcflWlk3+bZeWm3tb1e56wnb2pI1h+fL2oElisLQJFGF6FhqT1hFWYulUrEAFaJxlmZ+xDqBGoA4gsjY0Qb2sA8bBioog8OCJGxCg0dtFyoYHOLyqBPnEhL+PscJwqStUBanDI3YEo0HtNoNWIvWrZqerzboFJO6S8oYEuyR3bIme2B37Jl9/Fqr7tdoeanRrLe13ClETic23/5VlWmWOPxS/elZoohF36sg747PtG5htPXV47Pm5tJGop5kV+yF/F+yJ3ZPN7Cqr8b1Ot84R5g+QP353J0gN5tW59Kz6/Px5ZXgK/oxiWnM0HsvYBlryCBL5x7hAg3chN6VKSWpzLRTlVCgGce3UNRPJFeQUg==</latexit> に 正規分布に近づく →
  50. ඇઢܗಛ௃ྔ 直線回帰? が⼀般的 ଟ߲ࣜճؼ εϓϥΠϯճؼ ⾮線形の関係を捉えるため (ただし解釈が困難)

  51. ଟ߲ࣜಛ௃ྔ 3次の多項式 f(x) = 3 X i=1 ifi(x) = 1x

    + 2x2 + 3x3 <latexit sha1_base64="CTvqP/0QVd39S0knB9h3UlRKNPI=">AAACt3ichVFNS9xAGH5M60e3Vrf1UvASXCwWYZnsCv2ABakXj7q6KrgakjhZB/NlMrvsNuQP+Ad68KQgIv6B3nvpH/DgpddaerTQSw99k02RVqpvyMz7PPM+7zwzYwaOiCRjlwPKg4eDQ8MjjwqPR5+MjRefPluL/HZo8YblO364YRoRd4THG1JIh28EITdc0+Hr5t5Cur7e4WEkfG9V9gK+5RotT9jCMiRRerFuz3RfqjW1GbVdPRY1LdmOq0nT5NIgmNjpkFf0OS3pqrN/QCXpblduYJVgVdWLJVZmWai3Ey1PSshjyS+eookd+LDQhgsOD5JyBwYi+jahgSEgbgsxcSFlIlvnSFAgbZuqOFUYxO7R2CK0mbMe4bRnlKkt2sWhPySliml2wc7YNfvMztk39uu/veKsR+qlR7PZ1/JAHz94vvLzXpVLs8TujepOzxI2XmdeBXkPMiY9hdXXd95/uF55W5+OX7Bj9p38H7FL9olO4HV+WCfLvH6IAj2A9u91307WKmWtWq4sz5Xm3+VPMYJJTGGG7vsV5rGIJTRo34/4gq+4Ut4oumIru/1SZSDXTOCvUPZ/A1VgqBo=</latexit> 多項式回帰により得られる説明変数xの2乗項や3乗項を特徴量として加える ⾮線形回帰を⽤いずとも、サポートベクターマシン(カーネル関数)で 対応できることもある
  52. ଟ߲ࣜಛ௃ྔ 次数を増やすことで 曲線への当てはまりは 良くなるが 過剰学習になりやすい step_poly()

  53. εϓϥΠϯճؼ ノット (knots) を利⽤した固定領域の補間 係数の解釈はさらに困難 多項式曲線の次数と ノット数は視覚化 あるいは交差検証により 決定 step_ns()

  54. Ϗϯ٧Ί 離散化 - 結果の解釈が簡単になる - スケールによる影響を緩和する - データの変動を抑える 連続値を離散化することで期待されること p.11

  55. ަޓ࡞༻ಛ௃ྔ 複数の特徴量を組み合わせる 特徴量間の積によって求まる p.35 x1x2 … 数値の場合は掛け算 ⼆値特徴量の場合は論理積 データのすべての変数を対象に交互作⽤特徴量を計算すると 計算コストが⾼くなるので特徴量選択などにより変数を減らすなどの⼯夫が

    必要
  56. ΧςΰϦͷऔΓѻ͍ - ⽊ベース以外のモデルでは、カテゴリを数値化する必要が ある - 単純な⽅法ものはカテゴリに含まれる値を独⽴した変数と して扱うこと(ダミー変数化) - カテゴリ内の順序を考慮するには別な⽅法を検討 -

    サイズの⼤きなカテゴリには対策が必要
  57. μϛʔม਺Խ カテゴリに含まれる⽔準の値を特徴量として扱う -ダミーコーディング -One-Hotエンコーディング -Effectコーディング 基準となるカテゴリ(参照カテゴリ)の扱いが異なる

  58. μϛʔม਺ 各ダミー変数で該当する場合は1, 該当しないは0 参照カテゴリはすべて0の⾏で表される recipes::step_dummy() pandas.get_dummies p.81

  59. μϛʔม਺ 回帰モデルの係数では参照カテゴリの平均値は切⽚ 各係数は参照カテゴリの平均との差を⽰す UFSN FTUJNBUF TUEFSSPS TUBUJTUJD QWBMVF *OUFSDFQU 

      & VSCBO@QMBOOJOH@BSFB@ௐ۠    & VSCBO@QMBOOJOH@BSFB@౎ܭ֎    & VSCBO@QMBOOJOH@BSFB@ඇઢҾ    &
  60. 0OF)PUΤϯίʔσΟϯά 参照カテゴリを含めてダミー変数化 該当すれば1(Hot)、それ以外は0 (Cool) recipes::step_dummy() pandas.get_dummies p.80

  61. &⒎FDUΤϯίʔσΟϯά 参照カテゴリは-1で表現される(⾏単位で-1になる) p.83

  62. &⒎FDUΤϯίʔσΟϯά 切⽚はターゲット変数の全体平均 回帰係数はカテゴリと全体平均との差を⽰す ダミー変数を主効果として捉える →カテゴリによる差を⽐較しやすい UFSN FTUJNBUF TUEFSSPS TUBUJTUJD QWBMVF

    *OUFSDFQU      VSCBO@QMBOOJOH@BSFB@ௐ۠     VSCBO@QMBOOJOH@BSFB@౎ܭ֎     VSCBO@QMBOOJOH@BSFB@ඇઢҾ    
  63. μϛʔม਺Խͷൺֱ 参照カテゴリの扱い 特徴 ダミーコーディング ダミー変数の要素がすべて0 k-1のダミー変数 回帰モデルの係数は 参照カテゴリ平均との平均の差 One-Hotエンコーディング ダミー変数化

    kのダミー変数 Effectコーディング -1,-1の要素 回帰モデルにおける係数を、直 接ダミー変数の効果として捉え られる
  64. ΑΓଟ͘ͷϥϕϧʹରԠ ダミー変数化の問題 - 膨⼤なサイズのカテゴリを扱うとスパースデータになる - リサンプリング時に分散0のデータを選んでしまう恐れ - 新しいカテゴリへの対応ができない - 計算コストが⾼い

    対策 - (特徴量ハッシング) - ビンカウンティング、ターゲットエンコーディング
  65. Χ΢ϯτΤϯίʔσΟϯά カテゴリ変数に含まれる⽔準の頻度を特徴量に利⽤ 出現頻度による偏りが発⽣ 同順位の⽔準に対して同じ値が与えられる

  66. λʔήοτΤϯίʔσΟϯά カテゴリ変数と⽬的変数を利⽤ カテゴリの値を⽬的変数の平均値に置き換える データ漏洩しやすい

  67. -FBWFPOFPVUΤϯίʔσΟϯά 各⾏の値は、グループ内での ⾃信を除いた値で計算される ターゲットエンコーディング よりは安全だが、データ漏洩 に注意(同じ値がある)

  68. ςΩετσʔλͷऔΓѻ͍ -カテゴリ… 有限の集団 -テキスト… 基本的にカテゴリより⻑く、ユニークな値 -⽂字の⻑さや区切り位置の有無、そして⾔語を意識 -⾃然⾔語処理での前処理タスクを利⽤する

  69. ςΩετͷલॲཧ

  70. τʔΫϯԽ ⽂書を意味のある⻑さに区切る 単語ベース ⼀⽂ベース ⼀⼩節ベース ⽂書中の単語に境界のない⽇本語では分かち書きを ⾏う必要もある textrecipes::step_tokenize() tokenizers::tokenize_words() p.52

  71. #BHPG8PSET ⽂書を単語の出現回数のベクトルで表現。 p.41 低層別荘が建ち並ぶ環境の良い別荘地域 RMeCab::docNgram() tokenizers::tokenize_ngrams()

  72. #BHPG8PSET 単語の並び、階層の概念を表現しない →テキストの意味を正しく理解したい場合に役⽴たない →Bag-of-n-Grams (バイグラム、ユニグラム) p.41 低層別荘が建ち並ぶ環境の良い別荘地域 n=2 n=3 低層別荘が,

    別荘が建ち, が建ち並ぶ… 低層別荘, 別荘が, が建ち… 情報量は増えるが計算コストも増える
  73. #BHPG8PSET p.41 スパースデータ(疎⾏列)になりやすい データ分割時に 分散0の変数とならないように 注意

  74. ୯ޠͷআڈετοϓϫʔυ 単語数が多いことで特徴量が増える あらかじめ重要でない単語を除外する e.g. 句読点、「です」「ます」「はがにを」etc. 何をストップワードとするかはデータ次第 p.48 textrecipes::step_stopwords()

  75. ୯ޠͷআڈग़ݱස౓ データセットにおける単語の出現頻度でフィルタリング 出現頻度の少ない(稀な)単語を取り除く textrecipes::step_tokenfilter() p.49

  76. 5'*%' TF (索引語頻度 Term Frequency)と IDF (逆⽂書頻度 Inverse Document Frequency)

    の積 ⽂章量の異なりによる単語の個数、出現頻度を是正する tf idf = tf(w, d) ⇥ idf(w) <latexit sha1_base64="WMSKPmKCB20JFf6qVQ+3bZ2586E=">AAACg3ichVHLLgRBFD3ae7wGG4lEOiZkBJOaISESibCx9BokyKS7p3pU9CvdNSNM7Kz8gIUViQiW/IGNH7DwCWJJYmPhTk8nguBWqurUqXtunarSPUsEkrHHGqW2rr6hsak51tLa1t4R7+xaDdyib/Cs4Vquv65rAbeEw7NSSIuvez7XbN3ia/rOXGV/rcT9QLjOitzz+JatFRxhCkOTROXifdIcFXlTnValmdwdyQ+pm1LYPFCJTO4O5eIJlmJhqD9BOgIJRLHgxi+wiTxcGCjCBocDSdiChoDaBtJg8IjbQpk4n5AI9zkOECNtkbI4ZWjE7tBYoNVGxDq0rtQMQrVBp1jUfVKqGGAP7JK9sHt2zZ7Y+6+1ymGNipc9mvWqlnu5jqOe5bd/VTbNEtufqj89S5iYDL0K8u6FTOUWRlVf2j9+WZ5aGigPsjP2TP5P2SO7oxs4pVfjfJEvnSBGH5D+/tw/wWomlR5LZRbHEzOz0Vc0oRf9SNJ7T2AG81hAls49xBVucKvUK8NKRhmvpio1kaYbX0KZ/gB5OJN6</latexit> textrecipes::step_tfidf() ⽂書d内の単語数 ⽂書d内の単語wの出現回数 単語wが含まれる⽂書数
  77. ޠװॲཧ εςϛϯά 意味の等しい、異なる表記の単語を統⼀した表記にする p.52 変化形の修正 正規化の⼀種

  78. ೔෇ɾ࣌ؒσʔλͷऔΓѻ͍ - 時系列データでは⽇付・時間の要素⾃体が特徴量 - 平⽇・休⽇の区分、イベントからの発⽣時刻など⼈間活動が 関与する要素もある - データの背景の要因に対して、より考察が求められる - 変動要因(トレンド、ノイズ、季節性等)を考慮

    - 周期、季節性のある情報は三⾓関数で変換可能
  79. ೔෇ɾ࣌ؒσʔλͷಛ௃ - ⽇付・時間データの特徴量… ⽇付・時間⾃⾝を特徴量 - ラグ特徴量... 特定の時間からの経過時間 - 窓枠特徴量... 固定された期間に含まれる値を要約

    ⽇付・時間データに対する特徴量エンジニアリングの基本⽅針
  80. ೔෇ɾ࣌ؒཁૉͷ෼ղ 2019年7⽉10⽇ (⽔曜⽇) 2019 7 10 数値化、カテゴリ化が可能 令和元年 recipes::step_date() 7⽉

    10⽇ 2019⽉7⽉ 3 ⽔曜⽇
  81. ॕ೔൑ఆ カレンダーの情報が必要 2019年4~5⽉の 連休のような特殊な年に注意 recipes::step_holiday() 曜⽇の判定(週末にフラグ) + 祝⽇

  82. ϥάಛ௃ྔ 過去の値を現時点の値として利⽤する recipes::step_lag() e.g. 前年同⽉の値、先週の状況 周期性のあるデータであれば 周期に合わせたラグを⽤意するのが妥当 dplyr::lag()

  83. ΢Οϯυ΢Λ༻͍ͨฏ׈Խ 現在時刻の値を含めて、 過去n点における 平均値・中央値等を使⽤する recipes::step_window() ウィンドウ(n… 窓)のサイズ ⼤きいとより滑らかに ノイズを軽減するのに適する

  84. قઅ੒෼ recipes::step_hyperbolic() 季節成分を三⾓関数に当てはめる →周期性を表現可能

  85. ஍ཧۭؒσʔλͷऔΓѻ͍ - 地球上の地物(実在しないものを含む) - 地理座標と地物の属性を相互に変換可能 - 地物間の関係(隣接、距離)を元にした特徴量の⽣成が可能 - 地理空間データの特性、特に空間的影響を考慮した  

    分析が求められる
  86. ۭؒσʔλͷಛ௃ϕΫλͱϥελ 現実世界に存在する地物をデータ上に⽰したもの - 特に点、線、⾯を扱う - 地物は座標と属性情報をもち、地図上で表現できる ϕΫλσʔλ ϥελσʔλ ⼀定領域を格⼦状のグリッドで囲んだデータ -

    ラスタを構成する各グリッドに値が記録される - ラスタは時系列で重ねることができる
  87. ۭؒσʔλͷಛ௃࠲ඪࢀরܥ 地球上の地物の位置を⽰すために必要 ⼆次元の座標を地球上に投影するため、位置関係と紐づける XY座標または、緯度経度で表現 地図投影法により定義された値を座標とする ஍ཧ࠲ඪܥ ౤Ө࠲ඪܥ

  88. ۭؒσʔλͷಛ௃࠲ඪࢀরܥ SRID: 4326(WGS84) 世界測地系 SRID: 6668(JDG2011) ⽇本測地系2011 SRID: 6669-6687(JDG2011) 平⾯直⾓座標系

    ஍ཧ࠲ඪܥ ౤Ө࠲ඪܥ 距離や⾯積の計算などの地理空間的な処理を適⽤する際は 地理座標系から投影座標系への変換を⾏う
  89. ۭؒσʔλͷಛ௃ۭؒతӨڹ ۭؒతࣗݾ૬ؔ 互いに近い距離にあるものはより強く影響し合う 空間データの空間的な分散を仮定 ۭؒతҟ࣭ੑ 回帰モデルにおける誤差項の仮定 (分散均⼀)と対⽴ 地域性を考慮した解析、分析の設計が必要

  90. ॅॴͷ෼ղɺؙΊࠐΈ 東京都千代⽥区⼤⼿町1-1 東京都 千代⽥区⼤⼿町1-1 東京都 千代⽥区 ⼤⼿町1-1 東京都 千代⽥区 ⼤⼿町

    1-1 東京都千代⽥区⼤⼿町1-1 東京都千代⽥区⼤⼿町1-1 出典: 国⼟交通省 国⼟数値情報 ⾏政区域データ 第2.3版 N03 平成30年 http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v2_3.html 求めるスケールは?
  91. δΦίʔσΟϯάɺٯδΦίʔσΟϯά δΦίʔσΟϯά 各種の情報から座標を付与する、特定する作業 特定の座標から位置情報を含む情報を判別させる ٯδΦίʔσΟϯά e.g. 住所、郵便番号から座標 e.g. 緯度経度をメッシュコードに、 座標が含まれる市区町村を判定

  92. ϝογϡίʔυ ϝογϡԽ (標準地域コード、標準地域メッシュ) 国勢調査などの、国内全域を調査するために⽤いられる区画区分 ஍Ҭ۠ը ඪ४஍Ҭϝογϡ ن໛ ϝογϡίʔυͷྫ ୈ࣍஍Ҭ۠ը LN

     ୈ࣍஍Ҭ۠ը ഒ஍Ҭϝογϡ LN  ഒ஍Ҭϝογϡ LN  ഒ஍Ҭϝογϡ LN  ୈ࣍஍Ҭ۠ը ج४஍Ҭϝογϡ LN  ஍Ҭϝογϡ N  ஍Ҭϝογϡ N  ஍Ҭϝογϡ N  jpmesh::coords_to_mesh() jismesh.utils::to_meshcode()
  93. ྡ઀ؔ܎ 地物間の隣接関係の表現形式 空間隣接⾏列 集中、不均⼀を数値化… ジニ係数 sf::st_relate()

  94. ྡ઀ؔ܎ sf::st_intersects() sf::st_disjoint() sf::st_touches() sf::st_crosses() … 関⼼のある地物間の関係を 論理値として扱う

  95. ڑ཭ͷܭࢉ 座標参照系に注意 対象とする地物、地物間の距離 距離に応じてカテゴリ化することも検討 e.g. 近距離、中距離、遠距離 recipes::step_geodist() sf::st_distance()