Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Uryu Shinya

July 10, 2019
Tweet

More Decks by Uryu Shinya

Other Decks in Programming

Transcript

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

    ⼆乗平均平⽅根誤差 (RMSE: Root Mean Square Error) 平均絶対誤差 (MAE: Mean absolute error) 混同⾏列 正解率 適合率と再現率 ROC曲線とAUC
  2. ԋश༻σʔλͱ՝୊ઃܭ タスク: 地価価格(標準地の地 価)を予測する回帰問題、地価価 格に影響する変数を知りたい
 特徴: 地理空間、距離、⽴地条件 1. 地価公⽰データ (land

    price: lp) 出典: 国⼟交通省 国⼟数値情報 地価公⽰データ 第2.4版 L01 平成30年度 http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L01-v2_5.html 平成27年度 国勢調査 従業地・通学地による⼈⼝・就業状態等集計
  3. 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
  4. 3. ⼟砂災害・雪崩メッシュデータ (hazard) ԋश༻σʔλͱ՝୊ઃܭ タスク: 災害発⽣の有無を 分類する問題
 特徴: 空間、クラス不均衡、 ⽋損、気象要因、地形要因

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

    数値 カテゴリ 論理値 名義尺度 順序尺度 間隔尺度 ⽐例尺度 ςΩετ
  6. ώετάϥϜ ggplot2 matplotlob df_lp_kanto %>% ggplot(aes(distance_from_station)) + geom_histogram(bins = 30))

    データのばらつき、スパイクを検出 df_landprice. distance_from_station.hist(bins = 30)
  7. ܽଛ஋ͷूܭɾՄࢹԽ 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
  8. લॲཧͷඞཁੑॏճؼϞσϧ - 変数間の係数の直接的な⽐較が困難 - 標準化回帰係数を利⽤する⽅法もある UFSN FTUJNBUF TUEFSSPS TUBUJTUJD QWBMVF

    *OUFSDFQU     & EJTUBODF@GSPN@TUBUJPO    & BDSFBHF    F OJHIU@QPQVMBUJPO    F
  9. લॲཧͷඞཁੑओ੒෼෼ੳ 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
  10. εέʔϦϯάॲཧ - データが取り得る値の規模 (scale)をデータ間で 揃える処理 - 分布には影響しない - 異なる単位をもつデータを扱う場合に役⽴つ -->

    連続変数からなる多くのデータに該当する - 体重 (kg)と⾝⻑ (cm)... 同じ値120で あってもそれぞれ意味合いが異なるため⽐較できない
  11. .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
  12. 特徴量の値を平均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
  13. ਺஋σʔλ๊͕͑Δ໰୊ - スケールが⼤きく異なる - 歪んだ分布をもつ - ⼤⼩の外れ値を含む - 変数間で、線形では表現できないような複雑な関係を持っている -

    冗⻑な情報 課題設定、適⽤するモデルの種類によって顕在化 適切なモデルを選択することで問題のいくつかを軽減できる
  14. #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>
  15. ϩδοτม׵ 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> に 正規分布に近づく →
  16. ଟ߲ࣜಛ௃ྔ 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乗項を特徴量として加える ⾮線形回帰を⽤いずとも、サポートベクターマシン(カーネル関数)で 対応できることもある
  17. μϛʔม਺ 回帰モデルの係数では参照カテゴリの平均値は切⽚ 各係数は参照カテゴリの平均との差を⽰す UFSN FTUJNBUF TUEFSSPS TUBUJTUJD QWBMVF *OUFSDFQU 

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

    *OUFSDFQU      VSCBO@QMBOOJOH@BSFB@ௐ۠     VSCBO@QMBOOJOH@BSFB@౎ܭ֎     VSCBO@QMBOOJOH@BSFB@ඇઢҾ    
  19. 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が含まれる⽂書数
  20. ۭؒσʔλͷಛ௃࠲ඪࢀরܥ SRID: 4326(WGS84) 世界測地系 SRID: 6668(JDG2011) ⽇本測地系2011 SRID: 6669-6687(JDG2011) 平⾯直⾓座標系

    ஍ཧ࠲ඪܥ ౤Ө࠲ඪܥ 距離や⾯積の計算などの地理空間的な処理を適⽤する際は 地理座標系から投影座標系への変換を⾏う
  21. ॅॴͷ෼ղɺؙΊࠐΈ 東京都千代⽥区⼤⼿町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 求めるスケールは?
  22. ϝογϡίʔυ ϝογϡԽ (標準地域コード、標準地域メッシュ) 国勢調査などの、国内全域を調査するために⽤いられる区画区分 ஍Ҭ۠ը ඪ४஍Ҭϝογϡ ن໛ ϝογϡίʔυͷྫ ୈ࣍஍Ҭ۠ը LN

     ୈ࣍஍Ҭ۠ը ഒ஍Ҭϝογϡ LN  ഒ஍Ҭϝογϡ LN  ഒ஍Ҭϝογϡ LN  ୈ࣍஍Ҭ۠ը ج४஍Ҭϝογϡ LN  ஍Ҭϝογϡ N  ஍Ҭϝογϡ N  ஍Ҭϝογϡ N  jpmesh::coords_to_mesh() jismesh.utils::to_meshcode()