$30 off During Our Annual Pro Sale. View Details »

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

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

Uryu Shinya

July 10, 2019
Tweet

More Decks by Uryu Shinya

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. લॲཧͱͷҧ͍
    (数値的な変換により)
    データをモデルに適⽤させる、
    モデルを改善していくため
    障害や異常となり得る要素を
    処理
    減算のプロセス
    と捉えられる 基本的には
    加算のプロセス
    合成、縮約も含まれる
    ⽋損値や異常値への対処
    前処理 特徴量エンジニアリング

    View Slide

  9. ྫϏʔϧ΁ͷࢧग़ֹۚΛߟ͑Δ
    データ: 年⽉、ビールへの⽀出⾦額、気象要因
    タスク: ビールへの⽀出⾦額を予測する回帰問題
    モデル: 線形回帰、サポートベクターマシン、ランダムフォレスト
    -年はそれほど重要ではない。
    -夏の気温が⾼い時期(6⽉から9⽉ご
    ろ)が重要そう。
    -湿度との関係は?
    -⽇にちは関係するだろうか?
    - 夏... 150~⽇め??
    - 平⽇よりも休⽇

    View Slide

  10. d)初期モデルの実⾏。初期モデルに利⽤したデータで、いくつ
    かのモデルも適⽤、⽐較。ハイパーパラメータの探索もここ
    で⾏われる。
    e)複数回⾏われたパラメータ調整の結果を分析
    f)モデルの結果を可視化
    ෳ਺ͷϞσϧͰͷੑೳΛൺֱ͢Δ

    View Slide

  11. ϞσϧͷੑೳධՁ
    タスクに応じた評価指標を利⽤する
    回帰問題
    分類問題
    決定係数 (R2, RSQ: coefficient of
    determination)
    ⼆乗平均平⽅根誤差
    (RMSE: Root Mean Square Error)
    平均絶対誤差 (MAE: Mean absolute error)
    混同⾏列
    正解率
    適合率と再現率 ROC曲線とAUC

    View Slide

  12. g)初期モデルを改良する特徴量エンジニアリング
    h)最終的な候補モデルに対する調整
    i)テストセットを利⽤した汎化性能の評価
    j)運⽤
    ϞσϧΛվળ͢Δಛ௃ྔΛ୳͢

    View Slide

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

    View Slide

  14. ͲͷΑ͏ͳछྨͷσʔλΛѻ͏͔
    表 数値
    カテゴリ
    論理値
    名義尺度
    順序尺度
    間隔尺度
    ⽐例尺度
    形式
    …csv,
    エクセル
    RDB
    データ型 尺度

    View Slide

  15. ԋश༻σʔλͱ՝୊ઃܭ
    タスク: 地価価格(標準地の地
    価)を予測する回帰問題、地価価
    格に影響する変数を知りたい

    特徴: 地理空間、距離、⽴地条件
    1. 地価公⽰データ (land price: lp)
    出典: 国⼟交通省 国⼟数値情報
    地価公⽰データ 第2.4版 L01 平成30年度
    http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L01-v2_5.html
    平成27年度 国勢調査 従業地・通学地による⼈⼝・就業状態等集計

    View Slide

  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

    View Slide

  17. 3. ⼟砂災害・雪崩メッシュデータ (hazard)
    ԋश༻σʔλͱ՝୊ઃܭ
    タスク: 災害発⽣の有無を
    分類する問題

    特徴: 空間、クラス不均衡、
    ⽋損、気象要因、地形要因
    出典: 総務省 家計調査 家計収⽀編 ⼆⼈以上の世帯
    「1世帯当たり1か⽉間の⽇別⽀出 (表6-16)」
    気象データ 気象庁ホームページ 過去の気象データ・ダウンロード
    http://www.data.jma.go.jp/gmd/risk/obsdl/index.php

    View Slide

  18. ͲͷΑ͏ͳछྨͷσʔλΛѻ͏͔

    ը૾
    จॻ
    ೔෇ɾ࣌ؒ
    ஍ཧۭؒ
    ɾ࠲ඪ
    形式 データ型 尺度
    数値
    カテゴリ
    論理値
    名義尺度
    順序尺度
    間隔尺度
    ⽐例尺度
    ςΩετ

    View Slide

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

    View Slide

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

    View Slide

  21. εϥΠυͷݟํ
    ࢀߟॻͰͷϖʔδ ίʔυ
    8BSOJOH %BOHFS
    *OGP
    Q TDMFBSOEFDPNQPTJUJPO1$"
    TUBUTQSDPNQ

    View Slide

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

    View Slide

  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)

    View Slide

  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)

    View Slide

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

    View Slide

  26. ώετάϥϜ
    ggplot2
    matplotlob
    df_lp_kanto %>%
    ggplot(aes(distance_from_station)) +
    geom_histogram(bins = 30))
    データのばらつき、スパイクを検出
    df_landprice.
    distance_from_station.hist(bins = 30)

    View Slide

  27. ૬ؔߦྻͷώʔτϚοϓ
    visdat
    seaborn (sns)
    変数間の関係を⼀望する
    sns.heatmap(df,
    vmax=1, vmin=-1, center=0)
    df_lp_kanto %>% vis_cor()

    View Slide

  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

    View Slide

  29. ܽଛ஋ͷूܭɾՄࢹԽ
    df_lp_kanto %>%
    select(-starts_with(".")) %>%
    vis_miss()
    naniar
    gg_miss_fct(x = df_lp_kanto, fct = .prefecture)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  34. લॲཧͷඞཁੑओ੒෼෼ੳ
    - 主成分分析はスケール不変性を持たない
    - 異なる単位の変数を⼊⼒に与えると⼤きな値の⼊った変
    数の影響が強くなる
    sklearn.decomposition PCA
    prcomp(~ distance_from_station + acreage + night_population,
    data = df_lp_kanto,
    center = FALSE,
    scale. = FALSE)

    View Slide

  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

    View Slide

  36. લॲཧͷඞཁੑL//
    スケールの影響を受けて結果が変わる

    View Slide

  37. εέʔϦϯάॲཧ
    - データが取り得る値の規模 (scale)をデータ間で
    揃える処理
    - 分布には影響しない
    - 異なる単位をもつデータを扱う場合に役⽴つ -->
    連続変数からなる多くのデータに該当する
    - 体重 (kg)と⾝⻑ (cm)... 同じ値120で
    あってもそれぞれ意味合いが異なるため⽐較できない

    View Slide

  38. .JO.BYεέʔϦϯά
    値の範囲を0から1に収まるように調整
    - e.g. 画像処理におけるRGBの強さ(0~255)
    外れ値の影響を受けやすい
    最⼩値、最⼤値に範囲がある場合に有効
    ˜
    x =
    x min(x)
    max(x) min(x)
    AAACk3ichVG7SgNBFD2u7/iKiiDYLAZFC8NEBUURRC1sBF9RwUjY3Ux0cF/sTkJ0yQ9YCxZWCiLiH9hq4Q9Y+AliqWBj4c1mQVTUu+zcM2fuuXNmRndN4UvGHmuU2rr6hsam5lhLa1t7R7yza8N3Cp7B04ZjOt6WrvncFDZPSyFNvuV6XLN0k2/q+/OV9c0i93zh2OvywOU7lrZri7wwNElUNp7MSGHmeFAqqzNqJu9pRlBSR1RL2EOl4XJgaSXKn0Q2nmBJFob6E6QikEAUy078Ehnk4MBAARY4bEjCJjT49G0jBQaXuB0ExHmERLjOUUaMtAWq4lShEbtP4y7NtiPWpnmlpx+qDdrFpN8jpYoB9sCu2Au7Z9fsib3/2isIe1S8HFDWq1ruZjuOetfe/lVZlCX2PlV/epbIYzL0Ksi7GzKVUxhVffHw5GVtanUgGGTn7Jn8n7FHdksnsIuvxsUKXz1FjB4g9f26f4KN0WRqLDm6Mp6YnYueogl96McQ3fcEZrGIZaRp32Pc4BZ3So8yrcwpC9VSpSbSdONLKEsf9E6aNg==
    sklearn.preprocessing MinMaxScaler

    View Slide

  39. த৺Խ
    ˜
    x = x mean(x)
    AAACfHichVHLLgRBFD3T3uM1WJDYdAwyIiY1CCKRCBtLr0FiJpPuVqjoV7prJsPED/gBCytERPAVNn7AwieIJYmNiDs9nQgT3EpVnTp1z61TVbprCl8y9hhRamrr6hsam6LNLa1t7bGOzjXfyXsGTxuO6XgbuuZzU9g8LYU0+Ybrcc3STb6u782X99cL3POFY6/KfZdnLW3HFtvC0CRRuVh3Rgpzi5eKh+qMWlRHVItrdqI4lIvFWZIFoVaDVAjiCGPRiV0igy04MJCHBQ4bkrAJDT61TaTA4BKXRYk4j5AI9jkOESVtnrI4ZWjE7tG4Q6vNkLVpXa7pB2qDTjGpe6RUMcAe2BV7Yffsmj2x919rlYIaZS/7NOsVLXdz7Uc9K2//qiyaJXa/VH96ltjGVOBVkHc3YMq3MCr6wsHxy8r08kBpkJ2xZ/J/yh7ZHd3ALrwaF0t8+QRR+oDUz+euBmujydRYcnRpPD47F35FI3rRhwS99yRmsYBFpINzz3GD28iH0q8MKyOVVCUSarrwLZSJT3d2kjs=
    平均を0にする
    scale(), recipes::step_center()
    sklearn.preprocessing StandardScaler

    View Slide

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

    View Slide

  41. 特徴量の値を平均0、分散1に変換
    →元のデータが正規分布に従うことを仮定
    ඪ४Խ
    中⼼化 + スケーリング
    ˜
    x =
    x mean(x)
    sqrt(var(x))
    AAACkHichVHLShxBFD22eeiYZEbdCNk0GQwjIUONERRBfG1CVr5GBUeG6p4aLeyX1TXDaDM/4M6VC1cRRMQPyDbixh9w4SeISwPZZJHbPQ0hkSS36apzT91z61SVFTgy1IzddhndT54+e97Tm+l78fJVNtc/sBr6DWWLsu07vlq3eCgc6YmyltoR64ES3LUcsWbtzMfra02hQul7K3ovEJsu3/JkXdpcE1XNvato6dRE1GqbU2alrrgdtd6bruBeoTXSjsJdpQtNrigZaVdzeVZkSZiPQSkFeaSx4OfOUEENPmw04ELAgybsgCOkbwMlMATEbSIiThGSybpAGxnSNqhKUAUndofGLco2UtajPO4ZJmqbdnHoV6Q0Mcxu2Dl7YNfsgt2xH3/tFSU9Yi97NFsdrQiq2YOh5e//Vbk0a2z/Uv3Ts0YdE4lXSd6DhIlPYXf0zf2jh+XJpeHoLTth9+T/M7tlV3QCr/nNPl0US8fI0AOU/rzux2B1tFj6UBxdHMvPzKVP0YPXeIMC3fc4ZvARCyjTvof4gq+4NAaMCWPamO2UGl2pZhC/hfHpJyJamfk=
    scale()
    sklearn.preprocessing StandardScaler

    View Slide

  42. 特徴量選択の「フィルタ法」に相当する作業
    σʔλড়Խ
    データから不要な列を除去する
    情報を含まない… 分散0
    相関係数の⾼い変数の⽚⽅を落とす
    共通の項、組み合わせを持つ変数
    次元削減も有効な⽅法

    View Slide

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

    View Slide

  44. ਺஋σʔλ๊͕͑Δ໰୊
    - スケールが⼤きく異なる
    - 歪んだ分布をもつ
    - ⼤⼩の外れ値を含む
    - 変数間で、線形では表現できないような複雑な関係を持っている
    - 冗⻑な情報
    課題設定、適⽤するモデルの種類によって顕在化
    適切なモデルを選択することで問題のいくつかを軽減できる

    View Slide

  45. ਺஋σʔλ๊͕͑Δ໰୊
    外れ値の影響を受けやすい
    順位化されたデータを利⽤する⽊ベースのモデルを
    ⽤いることで外れ値の影響を軽減
    強い相関がある変数を組み込むと、係数が不安定
    部分最⼩⼆乗法を⽤いることで説明変数の相関を無相関化
    Lۙ๣๏΍αϙʔτϕΫλʔϚγϯ
    ॏճؼϞσϧ


    View Slide

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

    View Slide

  47. #PY$PYม׵
    正規分布に従わないデータを
    正規分布に近づける⼿法
    ポアソン分布のデータに
    対して有効
    p.24
    scipy.stats.boxcox
    step_BoxCox()
    ˜
    x =
    (
    x 1
    ,
    6= 0
    ln(x) = 0
    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=

    View Slide

  48. ਖ਼نੑͷݕఆ
    シャピロ-ウィルクの正規性検定や正規確率グラフを作成して確認
    正規分布に近づいているが
    P < 0.05 (シャピロ-ウィルクの正規性検定)

    View Slide

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

    1 ⇡
    )
    AAACiXichVHLSsNAFD3GV62PVt0IbopVqQvLRAVFEIrduPRVFayUJE7rYJqEZFqowR/wB1y4UhARN25168YfcOEniEsFNy68SQOiot5h5t575p47Z2Z0xxSeZOyxRWlta+/ojHXFu3t6+xLJ/oENz665Bi8Ytmm7W7rmcVNYvCCFNPmW43Ktqpt8U9/PB/ubde56wrbWZcPhO1WtYomyMDRJUCk5atoVITNFR0ykFlJFyjLFsqsZPiGHvjoZuIlSMs2yLLTUz0CNgjQiW7aTFyhiFzYM1FAFhwVJsQkNHo1tqGBwCNuBT5hLkQj3OQ4RJ26NqjhVaITu01qhbDtCLcqDnl7INugUk6ZLzBTG2AO7ZC/snl2xJ/b+ay8/7BFoaZDXm1zulBJHQ2tv/7Kq5CX2Pll/apYoYy7UKki7EyLBLYwmv35w/LI2vzrmj7Mz9kz6T9kju6MbWPVX43yFr54gTh+gfn/un8HGVFadzk6tzKRzi9FXxDCMEWTovWeRwxKWUaBzj3CNG9wq3YqqzCnzzVKlJeIM4osp+Q/ra5bV
    ⽐率や確率のデータ(0~1) を
    1 1
    AAACd3ichVHLSgMxFD0d3/XRqhvBhcXS4qYlo4LiSnTjsj5aBS1lZkw1dDozzKTFWvwBf8CFIChIFT/DjT/gwk8QlxVEcOHtdEC0qDckOTm55+Yk0R1TeJKxp5DS1d3T29c/EB4cGh6JREfHcp5dcQ2eNWzTdnd0zeOmsHhWCmnyHcflWlk3+bZeWm3tb1e56wnb2pI1h+fL2oElisLQJFGF6FhqT1hFWYulUrEAFaJxlmZ+xDqBGoA4gsjY0Qb2sA8bBioog8OCJGxCg0dtFyoYHOLyqBPnEhL+PscJwqStUBanDI3YEo0HtNoNWIvWrZqerzboFJO6S8oYEuyR3bIme2B37Jl9/Fqr7tdoeanRrLe13ClETic23/5VlWmWOPxS/elZoohF36sg747PtG5htPXV47Pm5tJGop5kV+yF/F+yJ3ZPN7Cqr8b1Ot84R5g+QP353J0gN5tW59Kz6/Px5ZXgK/oxiWnM0HsvYBlryCBL5x7hAg3chN6VKSWpzLRTlVCgGce3UNRPJFeQUg==

    正規分布に近づく

    View Slide

  50. ඇઢܗಛ௃ྔ
    直線回帰?
    が⼀般的
    ଟ߲ࣜճؼ
    εϓϥΠϯճؼ
    ⾮線形の関係を捉えるため
    (ただし解釈が困難)

    View Slide

  51. ଟ߲ࣜಛ௃ྔ
    3次の多項式 f(x) =
    3
    X
    i=1
    ifi(x) = 1x + 2x2 + 3x3
    AAACt3ichVFNS9xAGH5M60e3Vrf1UvASXCwWYZnsCv2ABakXj7q6KrgakjhZB/NlMrvsNuQP+Ad68KQgIv6B3nvpH/DgpddaerTQSw99k02RVqpvyMz7PPM+7zwzYwaOiCRjlwPKg4eDQ8MjjwqPR5+MjRefPluL/HZo8YblO364YRoRd4THG1JIh28EITdc0+Hr5t5Cur7e4WEkfG9V9gK+5RotT9jCMiRRerFuz3RfqjW1GbVdPRY1LdmOq0nT5NIgmNjpkFf0OS3pqrN/QCXpblduYJVgVdWLJVZmWai3Ey1PSshjyS+eookd+LDQhgsOD5JyBwYi+jahgSEgbgsxcSFlIlvnSFAgbZuqOFUYxO7R2CK0mbMe4bRnlKkt2sWhPySliml2wc7YNfvMztk39uu/veKsR+qlR7PZ1/JAHz94vvLzXpVLs8TujepOzxI2XmdeBXkPMiY9hdXXd95/uF55W5+OX7Bj9p38H7FL9olO4HV+WCfLvH6IAj2A9u91307WKmWtWq4sz5Xm3+VPMYJJTGGG7vsV5rGIJTRo34/4gq+4Ut4oumIru/1SZSDXTOCvUPZ/A1VgqBo=
    多項式回帰により得られる説明変数xの2乗項や3乗項を特徴量として加える
    ⾮線形回帰を⽤いずとも、サポートベクターマシン(カーネル関数)で
    対応できることもある

    View Slide

  52. ଟ߲ࣜಛ௃ྔ
    次数を増やすことで
    曲線への当てはまりは
    良くなるが
    過剰学習になりやすい
    step_poly()

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  59. μϛʔม਺
    回帰モデルの係数では参照カテゴリの平均値は切⽚
    各係数は参照カテゴリの平均との差を⽰す
    UFSN FTUJNBUF TUEFSSPS TUBUJTUJD QWBMVF
    *OUFSDFQU &
    VSCBO@QMBOOJOH@BSFB@ௐ۠ &
    VSCBO@QMBOOJOH@BSFB@౎ܭ֎
    &
    VSCBO@QMBOOJOH@BSFB@ඇઢҾ &

    View Slide

  60. 0OF)PUΤϯίʔσΟϯά
    参照カテゴリを含めてダミー変数化
    該当すれば1(Hot)、それ以外は0 (Cool)
    recipes::step_dummy()
    pandas.get_dummies
    p.80

    View Slide

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

    View Slide

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

    VSCBO@QMBOOJOH@BSFB@ௐ۠
    VSCBO@QMBOOJOH@BSFB@౎ܭ֎
    VSCBO@QMBOOJOH@BSFB@ඇઢҾ

    View Slide

  63. μϛʔม਺Խͷൺֱ
    参照カテゴリの扱い 特徴
    ダミーコーディング ダミー変数の要素がすべて0
    k-1のダミー変数
    回帰モデルの係数は
    参照カテゴリ平均との平均の差
    One-Hotエンコーディング ダミー変数化 kのダミー変数
    Effectコーディング -1,-1の要素
    回帰モデルにおける係数を、直
    接ダミー変数の効果として捉え
    られる

    View Slide

  64. ΑΓଟ͘ͷϥϕϧʹରԠ
    ダミー変数化の問題
    - 膨⼤なサイズのカテゴリを扱うとスパースデータになる
    - リサンプリング時に分散0のデータを選んでしまう恐れ
    - 新しいカテゴリへの対応ができない
    - 計算コストが⾼い
    対策
    - (特徴量ハッシング)
    - ビンカウンティング、ターゲットエンコーディング

    View Slide

  65. Χ΢ϯτΤϯίʔσΟϯά
    カテゴリ変数に含まれる⽔準の頻度を特徴量に利⽤
    出現頻度による偏りが発⽣
    同順位の⽔準に対して同じ値が与えられる

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  69. ςΩετͷલॲཧ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  73. #BHPG8PSET
    p.41
    スパースデータ(疎⾏列)になりやすい
    データ分割時に
    分散0の変数とならないように
    注意

    View Slide

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

    View Slide

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

    View Slide

  76. 5'*%'
    TF (索引語頻度 Term Frequency)と
    IDF (逆⽂書頻度 Inverse Document Frequency)
    の積
    ⽂章量の異なりによる単語の個数、出現頻度を是正する
    tf idf = tf(w, d) ⇥ idf(w)
    AAACg3ichVHLLgRBFD3ae7wGG4lEOiZkBJOaISESibCx9BokyKS7p3pU9CvdNSNM7Kz8gIUViQiW/IGNH7DwCWJJYmPhTk8nguBWqurUqXtunarSPUsEkrHHGqW2rr6hsak51tLa1t4R7+xaDdyib/Cs4Vquv65rAbeEw7NSSIuvez7XbN3ia/rOXGV/rcT9QLjOitzz+JatFRxhCkOTROXifdIcFXlTnValmdwdyQ+pm1LYPFCJTO4O5eIJlmJhqD9BOgIJRLHgxi+wiTxcGCjCBocDSdiChoDaBtJg8IjbQpk4n5AI9zkOECNtkbI4ZWjE7tBYoNVGxDq0rtQMQrVBp1jUfVKqGGAP7JK9sHt2zZ7Y+6+1ymGNipc9mvWqlnu5jqOe5bd/VTbNEtufqj89S5iYDL0K8u6FTOUWRlVf2j9+WZ5aGigPsjP2TP5P2SO7oxs4pVfjfJEvnSBGH5D+/tw/wWomlR5LZRbHEzOz0Vc0oRf9SNJ7T2AG81hAls49xBVucKvUK8NKRhmvpio1kaYbX0KZ/gB5OJN6
    textrecipes::step_tfidf()
    ⽂書d内の単語数
    ⽂書d内の単語wの出現回数
    単語wが含まれる⽂書数

    View Slide

  77. ޠװॲཧ εςϛϯά

    意味の等しい、異なる表記の単語を統⼀した表記にする p.52
    変化形の修正
    正規化の⼀種

    View Slide

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

    View Slide

  79. ೔෇ɾ࣌ؒσʔλͷಛ௃
    - ⽇付・時間データの特徴量… ⽇付・時間⾃⾝を特徴量
    - ラグ特徴量... 特定の時間からの経過時間
    - 窓枠特徴量... 固定された期間に含まれる値を要約
    ⽇付・時間データに対する特徴量エンジニアリングの基本⽅針

    View Slide

  80. ೔෇ɾ࣌ؒཁૉͷ෼ղ
    2019年7⽉10⽇ (⽔曜⽇)
    2019 7 10
    数値化、カテゴリ化が可能
    令和元年
    recipes::step_date()
    7⽉ 10⽇
    2019⽉7⽉
    3
    ⽔曜⽇

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  86. ۭؒσʔλͷಛ௃ϕΫλͱϥελ
    現実世界に存在する地物をデータ上に⽰したもの
    - 特に点、線、⾯を扱う
    - 地物は座標と属性情報をもち、地図上で表現できる
    ϕΫλσʔλ
    ϥελσʔλ
    ⼀定領域を格⼦状のグリッドで囲んだデータ
    - ラスタを構成する各グリッドに値が記録される
    - ラスタは時系列で重ねることができる

    View Slide

  87. ۭؒσʔλͷಛ௃࠲ඪࢀরܥ
    地球上の地物の位置を⽰すために必要
    ⼆次元の座標を地球上に投影するため、位置関係と紐づける
    XY座標または、緯度経度で表現
    地図投影法により定義された値を座標とする
    ஍ཧ࠲ඪܥ
    ౤Ө࠲ඪܥ

    View Slide

  88. ۭؒσʔλͷಛ௃࠲ඪࢀরܥ
    SRID: 4326(WGS84)
    世界測地系
    SRID: 6668(JDG2011)
    ⽇本測地系2011
    SRID: 6669-6687(JDG2011)
    平⾯直⾓座標系
    ஍ཧ࠲ඪܥ ౤Ө࠲ඪܥ
    距離や⾯積の計算などの地理空間的な処理を適⽤する際は
    地理座標系から投影座標系への変換を⾏う

    View Slide

  89. ۭؒσʔλͷಛ௃ۭؒతӨڹ
    ۭؒతࣗݾ૬ؔ
    互いに近い距離にあるものはより強く影響し合う
    空間データの空間的な分散を仮定
    ۭؒతҟ࣭ੑ
    回帰モデルにおける誤差項の仮定 (分散均⼀)と対⽴
    地域性を考慮した解析、分析の設計が必要

    View Slide

  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
    求めるスケールは?

    View Slide

  91. δΦίʔσΟϯάɺٯδΦίʔσΟϯά
    δΦίʔσΟϯά
    各種の情報から座標を付与する、特定する作業
    特定の座標から位置情報を含む情報を判別させる
    ٯδΦίʔσΟϯά
    e.g. 住所、郵便番号から座標
    e.g. 緯度経度をメッシュコードに、
    座標が含まれる市区町村を判定

    View Slide

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

    View Slide

  93. ྡ઀ؔ܎
    地物間の隣接関係の表現形式
    空間隣接⾏列
    集中、不均⼀を数値化… ジニ係数
    sf::st_relate()

    View Slide

  94. ྡ઀ؔ܎
    sf::st_intersects()
    sf::st_disjoint()
    sf::st_touches()
    sf::st_crosses()

    関⼼のある地物間の関係を
    論理値として扱う

    View Slide

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

    View Slide