Closed shinmura0 closed 3 years ago
今回のコンペは、学習データとテスト環境で地理情報があるため、 鳥の出現確率を見積ることが可能。そして、出現確率が低い種類は学習の 対象から外すことにより、学習すべき鳥の種類が絞れる。
テストデータの場所(4ヶ所)は以下のとおり
今回はテスト環境周辺(半径約20km圏内)で鳴いた鳥をカウントし、 出現確率により閾値を設け、閾値未満のものは棄却することを考える。
結論としては、学習データを40%削減(397→243)しつつ、テスト環境で予想される 鳥の損失率は11%に抑えた。削減後の種類は以下のoutputからダウンロード可能。 https://www.kaggle.com/shinmurashinmura/focus-on-bird-with-location/output
例えば、テスト環境周辺で鳥の鳴き声が200回聞こえたとして
train_shortとtrain_soundscapeを使って、SSW周辺の鳥の出現確率をグラフにすると
青はtrain_shortによる出現確率、赤はtrain_soundscapeの出現確率。 分布が似ていることが分かる。このことから、テスト環境では、恣意的に 珍しい鳥を選ぶことはせず、音源はほとんど編集されずに提供されているもの と予想される。(逆に、分布が似ていないと恣意的にテスト音源が選ばれて いると予想できる。)
従って、青(train_short)のグラフで閾値を設け、閾値未満の種類は 棄却することにより、テスト環境で鳴かないと予想される種類は棄却できる。 上記の図でいうと、閾値(紫の線)右側の種類は棄却する。 (データが減って嬉しい)
ただし、棄却した鳥がどれくらい影響を持っているのか定量的に評価したい ため、棄却した領域で赤のグラフ(train_soundscape)の合計値を計算し、 それをtrain_soundscapeの損失率とした。損失率が大きい場合、鳥の種類は 絞らない方がいいと言える。
閾値を0.005にすることで、学習データを40%分削減しつつ、train_soundscape の損失率を11%ほどに抑えることができる。11%は大きいように聞こえるが、 ここに書いたように、出現頻度の少ない鳥はnocallにした方がスコアが上がり やすいと予想されるため、むしろ種類を絞った方が良いと思われる。
ちなみに、CORの出現確率は以下のとおり ↑rucwarの影響が大きすぎる!
絞った鳥(397→243)の生息地域は以下のとおり
狙い通り、テスト環境で特に密度が高くなっており、頻繁に飛来して いることが分かる。
一部、欧州やニュージーランドの鳥がいるが、これらも緯度で除外する ことで、さらにデータを削減できる。しかし、鳥の種類までは減らせない。
ここに絞った鳥の種類をアップした。 https://www.kaggle.com/shinmurashinmura/focus-on-bird-with-location
今回のコンペは、学習データとテスト環境で地理情報があるため、 鳥の出現確率を見積ることが可能。そして、出現確率が低い種類は学習の 対象から外すことにより、学習すべき鳥の種類が絞れる。
テストデータの場所(4ヶ所)は以下のとおり
今回はテスト環境周辺(半径約20km圏内)で鳴いた鳥をカウントし、 出現確率により閾値を設け、閾値未満のものは棄却することを考える。
結論としては、学習データを40%削減(397→243)しつつ、テスト環境で予想される 鳥の損失率は11%に抑えた。削減後の種類は以下のoutputからダウンロード可能。 https://www.kaggle.com/shinmurashinmura/focus-on-bird-with-location/output
例えば、テスト環境周辺で鳥の鳴き声が200回聞こえたとして
train_shortとtrain_soundscapeを使って、SSW周辺の鳥の出現確率をグラフにすると
青はtrain_shortによる出現確率、赤はtrain_soundscapeの出現確率。 分布が似ていることが分かる。このことから、テスト環境では、恣意的に 珍しい鳥を選ぶことはせず、音源はほとんど編集されずに提供されているもの と予想される。(逆に、分布が似ていないと恣意的にテスト音源が選ばれて いると予想できる。)
従って、青(train_short)のグラフで閾値を設け、閾値未満の種類は 棄却することにより、テスト環境で鳴かないと予想される種類は棄却できる。 上記の図でいうと、閾値(紫の線)右側の種類は棄却する。 (データが減って嬉しい)
ただし、棄却した鳥がどれくらい影響を持っているのか定量的に評価したい ため、棄却した領域で赤のグラフ(train_soundscape)の合計値を計算し、 それをtrain_soundscapeの損失率とした。損失率が大きい場合、鳥の種類は 絞らない方がいいと言える。
閾値を0.005にすることで、学習データを40%分削減しつつ、train_soundscape の損失率を11%ほどに抑えることができる。11%は大きいように聞こえるが、 ここに書いたように、出現頻度の少ない鳥はnocallにした方がスコアが上がり やすいと予想されるため、むしろ種類を絞った方が良いと思われる。
ちなみに、CORの出現確率は以下のとおり ↑rucwarの影響が大きすぎる!
絞った鳥(397→243)の生息地域は以下のとおり
狙い通り、テスト環境で特に密度が高くなっており、頻繁に飛来して いることが分かる。
一部、欧州やニュージーランドの鳥がいるが、これらも緯度で除外する ことで、さらにデータを削減できる。しかし、鳥の種類までは減らせない。