Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
SIGNATEコンペ 飯⽥産業 ⼟地の販売価格の推定 1st place solution
あきやま twitter:@ak_iyama
⾃⼰紹介
コンペについて
取り組み内容
まとめ
⾃⼰紹介
コンペについて
取り組み内容
まとめ
4⾃⼰紹介秋⼭卓也
⼤⼿通信キャリア ショップ→NW保守(レイヤ0)→研究所→新規事業開発
DeNA オートモーティブ向け機械学習モデル開発→育休 →レコメンドシステム開発
5⾃⼰紹介秋⼭卓也 Kaggle
SIGNATE
⾃⼰紹介
コンペについて
取り組み内容
まとめ
7コンペについて
タスク:号棟ごとの⼟地の販売価格の推定
8コンペについて• データ:
飯⽥産業の埼⽟県の過去の販売実績データ– 現場データ:train 2781件、test 1855件
• 現場レベルの概要情報• 丸められた住所や最寄り駅、駅距離、地域情報など
– 号棟データ:train 6461件、test 4273件• 号棟の情報• ⼟地⾯積や建物⾯積、接道、⽇当たりなど• trainには⽬的変数も含まれる
9コンペについて• データの中⾝(⼀例)
現場データ号棟データ
10コンペについて
• 評価指標:MAPE(Mean Absolute Percentage Error)
⾃⼰紹介
SIGNATEとコンペについて
取り組み内容
まとめと余談
12スコア推移あきやまスコア
13スコア推移あきやまスコア
まずここの話
14最序盤の取り組み
• LightGBM(5fold CVの各モデルのアンサンブル) • Group K Fold(現場単位。同⼀現場内の価格は似るため) • simpleな特徴量作成
– 特徴量数174個 – そのうち107個が”与えられたそのまま”の値
• 評価指標MAPEへの対応 – ⽬的変数の対数変換 – ⽬的関数へのFair Lossの採⽤
15評価指標MAPEへの対応percentage errorは真値が⼩さい時の誤差を増幅するため、MSE等を学習の⽬的関数とするとうまくMAPEを最適化することが出来ない
1e7 ~ 6e7までのtrue valueに対して1e6の誤差を与えた時の評価値absolute error (AE) square error (SE) absolute percentage error(APE)
16評価指標MAPEへの対応モデルに⼊れる前に⽬的変数を対数変換することで、MAEやMSEによる最適化処理実⾏時に⼩さい値での誤差を相対的に増幅させることができる
1e7 ~ 6e7までのtrue valueの対数変換値とtrue valueに対して1e6の誤差を与えた値の対数変換値との評価値と、APEとの対応
APEと対数変換したAEがほぼ⼀致
17評価指標MAPEへの対応
• 評価関数としてのMAEを最適化したいときに、⽬的関数としてMAEを選ぶことが最善でないケースもある– MAEの勾配は符号情報しか残らず、予測値と⽬的変数との乖離幅の情報
が消えてしまうため
「じゃあ対数変換して⽬的関数をMAEにすれば良いね」
18評価指標MAPEへの対応
• 対策:Fair Lossを使う– Kaggleコンペ「 Allstate Claims Severity」の中で考案?
https://www.kaggle.com/c/allstate-claims-severity/discussion/24520
– MAEの0付近をsmoothingした評価関数
Fair =
19スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
あきやまスコア
最終100位ライン
20スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
ここの話
あきやまスコア
最終100位ライン
21序盤の取り組み
• 特徴量作成
22特徴量作成• 最序盤のプロトタイプモデルの特徴量importance
から、重要そうなデータを把握する
⾯積地価⽴地ガス
組み合わせで特徴量作成合計227個
23スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
あきやまスコア
最終10位ライン
24スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
?
あきやまスコア
25スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
家探し(プライベート)
あきやまスコア
26スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
あきやまスコア伸びていく暫定1位のスコア
家探し(プライベート)
27スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
ここの話
あきやまスコア伸びていく暫定1位のスコア
28中盤の取り組み
• 住所の緯度経度を利⽤した特徴量作成
29住所の緯度経度を利⽤した特徴量作成
• 「正直、このスコア差やばいかも」と思ってルールを⾒返したら
なんか書いてあった
30住所の緯度経度を利⽤した特徴量作成
• GeocodingというサービスのAPIを使って住所の緯度経度をスクレイピング – 「10秒に1回まで」と書いてあったので⼀晩かけてじっくり
• 組み合わせで数⼗個の特徴作成
31スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
あきやまスコア暫定1位のスコア推移
住所の緯度経度特徴
ここの話
32終盤の取り組み
• 建物ありモデルと⼟地のみモデルの分離
33建物ありモデルと⼟地のみモデルの分離
• まだまだ暫定1位に追いつかないので、さらにしっかりサイトを読んだら
FAQに情報が追記されていた
34建物ありモデルと⼟地のみモデルの分離
• 建物⾯積==0となっているものを「⼟地のみのサンプル」とみなして、現状を確認
OOFのMAPE• 建物あり:8.76• ⼟地のみ:15.19
モデルを分離することに
35建物ありモデルと⼟地のみモデルの分離
• しかし、⼟地のみだとサンプルが少なすぎる問題– trainの件数:
• 建物あり:6101件• ⼟地のみ:360件
• ⼟地のみデータのaugmentationが必要
36建物ありモデルと⼟地のみモデルの分離
• しかし、⼟地のみだとサンプルが少なすぎる問題– trainの件数:
• 建物あり:6101件• ⼟地のみ:360件
• ⼟地のみデータのaugmentationが必要
「家探し≒ドメイン知識収集」の知⾒を活⽤
37建物ありモデルと⼟地のみモデルの分離
• 仮説:建物⾯積*単価でおおよその建物価格がわかる?
• 単価を探索パラメータとして、建物ありサンプルの販売価格から建物⾯積*単価の⾦額を引き、⼟地のみモデルの学習に⽤いる
• 探索の結果、⼟地のみデータのMAPEをおよそ2.0(15.0から13.0に)良化させることが出来た– ⼟地のみデータは全体のおよそ1/20の件数のため、全体に対して
はおよそ0.1の良化の⾒込み
38スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
あきやまスコア暫定1位のスコア推移
住所の緯度経度特徴
ここの話
土地のみモデル
39最後の悪あがき
• 特徴量の増量 特に緯度経度情報まわり +400くらい
• Seed Averaging (*10) • Post Process
40Post Process
• 対数変換したからといって、MAPEを完全に最適化しているわけではない
• Out Of Foldで⾊々試したところ、 「建物ありモデル予測値から 200,000円引く」ことで わずかな改善がみられた
対数変換の図(再掲)
41スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
あきやまスコア暫定1位のスコア推移
住所の緯度経度特徴
土地のみモデル
特徴量の増量 Seed Averaging (*10) Post Process
42スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
あきやまスコア暫定1位のスコア推移
住所の緯度経度特徴
土地のみモデル
特徴量の増量 Seed Averaging (*10) Post Process
まだ負けてるじゃん?
43スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
あきやまスコア暫定1位のスコア推移
住所の緯度経度特徴
土地のみモデル
特徴量の増量 Seed Averaging (*10) Post Process
Shake Down
44スコア推移
LightGBMGroup K Foldsimpleな特徴量作成⽬的変数の対数変換⽬的関数へのFair Lossの採⽤
特徴量作成
あきやまスコア暫定1位のスコア推移
住所の緯度経度特徴
土地のみモデル
特徴量の増量 Seed Averaging (*10) Post Process
Shake Down
⾃⼰紹介
SIGNATEとコンペについて
取り組み内容
まとめ
46ソリューションまとめ• 特徴量
– 緯度経度情報のスクレイピング – 網羅的な特徴量作成
• モデリング – 建物ありと⼟地のみの分離 – LightGBM(2model*5fold CV*5 seedの合計50model) – Group K Fold(同⼀現場の契約価格は似るため) – MAPE対応(対数変換, Fair Loss) – 温もりのある⼿動ハイパラチューニング
• Post Process
47⼤事だったことまとめ
• 評価指標の最適化に取り組む• コンペの情報をよく読んで特徴に落とし込む• 多⾯的にモデル性能を評価する• その他、Pipelineのすべての⼯程で改善箇所がない
かを深く考える
Appendix
49特徴量の話• 基本的な特徴量作成戦略
– Aggregation系特徴量 – ⽬的変数への寄与度が⾼い地価等の集約対象データに対して、
最寄駅や居住市町村など特定のキーで集約して統計量(平均、最⼤、最⼩等)を算出し、特徴量とする
例: • 物件AのあるX市の路線価の平均 • X駅を最寄駅とする物件の公⽰地価の平均
– サンプルごとのノイズを軽減したり、カテゴリデータに情報を付加したりという効果がある
50特徴量の話• 緯度経度情報を利⽤した特徴量作成
– 緯度経度情報をAggregation系特徴量作成のキーとして使う
✖︎✖︎
✖︎✖︎
✖︎
✖︎
✖︎特徴を作りたい物件から、• その物件を中⼼とした特定距離の
同⼼円の内部にある物件の情報を集約する
• その物件からの距離が近い順に○番⽬までの物件の情報を集約する
51Feature Importance (gain上位20個)
建物ありモデル ⼟地のみモデル