Kaggle Competition: M5 Forecasting – AccuracyI tried it.
Kaggleコンペ:M5 Forecasting – Accuracy やってみました。
M5 Forecasting – Accuracyは2020年3月から6月に開催され約101ヵ国5558のチームが参加。
米国 (17%)、日本 (17%)、インド (10%)、中国 (10%)、ロシア (6%)、残りの 40% はその他の 96 か国からの参加があったらしいです。
Walmartの2011年〜2016年の売上個数データを使って販売数量を予測コンペで超多変量時系列予測になります。
既にコンペは終了していて最終評価で結果を提出できたチームは5582チームでした。
提供されるデータは米国3州(カリフォルニア州、テキサス州、ウィスコンシン州)にあるウォルマートの合計10店舗、商材は食材(FOODS)、おもちゃ(HOBBIES)、日用品(HOUSEHOLD)の3つのカテゴリで3049種類の商品の販売数量等のデータでデータの最終日以降の商材別の販売数量の4週間(28日間)を予測を行うという形です。
提供されるcsvファイルは
calendar.csv -各店舗・各商品における過去5年間の日別販売数量.
宗教行事やスポーツ等のイベント開催日とSNAP(連邦栄養補助プログラム)が利用できる日
※SNAP:最大の連邦栄養補助プログラムでElectronic Benefits Transferカードを介して、適格な低所得の個人や家族にメリットを提供します。
sell_prices.csv - 店舗ごと・商品ごとの日単位の販売価格
sales_train_validation.csv - 製品および店舗ごとの過去の日次販売単位データ
sales_train_evaluation.csv - 製品および店舗ごとの過去の日次販売単位データ
sample_submission.csv – 提出用のテンプレート
コンペは締め切りとなっているためsales_train_validation.csvは使わない事にしました。
答(sales_train_evaluation.csv)が既に開示されてしまっているためです。
コンペの評価は2段階でpublic(Validation Phase), private(Evaluation Phase)に分けたコンペ終了1ヶ月前にpublicの正解が公開されてさらに4週間(28日間)を予測するprivate(Evaluation Phase)という形式なので最終提出になるEvaluation Phaseをやってみました。
public(Validation Phase)
2011年1月29日から2016年4月24日までの約5年分の売上データから後の4週間(2016年4月25日から5月22日)の売上(販売数量)を予測します。
private(Evaluation Phase)
2020年6月1日からEvaluation Phaseとなり、2016年4月25日から5月22日の販売数量が公開され、後の4週間(2016年5月23日から6月19日)の販売数量を予測します。
まずはM5-Competitors-Guide(https://mofc.unic.ac.cy/m5-competition/)を軽く読んでデータ構成等の知識を入手。
モデルはxgboostを使いました。KaggleではLightGBM一択みたない風潮はありますし、トップ集団にいるメンバーの多くがLightGBMを使っているので間違いないとは思いますが一番使い慣れているxgboostであえて挑戦しました。
投入csvデータの合計サイズは12ギガバイトを超えました。ノートPCで3日間計算しました。
GPUを使えばかなり高速に計算できるのは知っていましたが家のPCでそれをやるをPCがハングしてしまい仕方なくCPUで計算させました。
本来は可視化したりしてデータの特徴を観察して方針を決めたりするのですがとりあえず特徴量は提供されたデータだけをつかって計算しました。
多くの挑戦者はスコアが5以上で、sample_submission.csv – 提出用のテンプレートをそのまま提出してもScore: 5.39065になります。約2000人くらいは何もしないで提出した疑惑があります。
つまり、
この山を越えないと「頑張ってない」とも言えます。
recursive featureを使いたくなかったのであくまで直感的ですが以下の特徴量だけ追加しました。
・過去28日の販売個数(month1=dplyr::lag(Unit_Sales, n = 28))
過去28日間の販売個数平均(month1_roll_mean=roll_meanr(month1,28))
過去28日間の販売個数標準偏差(month1_roll_sd=roll_sdr(month1,28))
・過去60日の販売個数(month2=dplyr::lag(Unit_Sales, n = 60))
過去60日間の販売個数平均(month2_roll_mean=roll_meanr(month2, 60))
過去60日間の販売個数標準偏差(month2_roll_sd=roll_sdr(month2, 60))
結果は以下のようになりました。
スコアが1.0以下に絞ると。
この辺でした。
もっと攻められるかと思いハイパラを弄りまくりましたこれが限界でした。
特徴量選択の重要性を改めて認識した。
子供のボキャブラリは凄いと思う
先日、こんな会話があって爆笑というか笑いが止まらなかった。
「今日のお昼はラーメン買ってあるからそれを食べよう」
で、子供が(沢山食べたい)
「何人分あるの?」と聞くので「大丈夫、2食分あるから!」というと
「えっ!?、それはどんなラーメンなの?」と聞くのので
「味噌ラーメンが2食」あるから「お父さんとで1食づづたべられるよ」
※大抵は1食分を2人分に分けていたので物足りなかったんだろう。
すると子供が「意味が分からない、だからどんなラーメン!!」と。
だから「味噌ラーメンっていってるじゃない!」
ほぼ発狂するような声で「答えになってない!、2食あるっていってたじゃん」
、、、
平行線です。
しばらくして(落ち着いてから)「もう一回、なにが知りたいのかちゃんと言って」と尋ねると、、、
「何色のラーメンか知りたい、2色とか1色とかさぁ、どんなラーメン?」
このボキャブラリ!、もう爆笑、涙物です。
思い返すともっと小さかった頃、小川を見て子供が一言
「ねぇお父さん、綺麗だね」
「水が楽しそうに泳いでるね」
このフレーズは頭に焼き付いて忘れない。大人では絶対に出てこないフレーズです。
地球のなん%が海?
子供が学校で習ってきたことを出題してくる。
まぁお父さんへの挑戦で、よく仕掛けてくる。
「地球のなん%が海?」
で私の答えは「数パーセントくらい」と回答したら「ブッブー、間違い!。70%!」
「やったーお父さんに勝った!」
という展開だが、、、
「それ、間違ってるよ!」というと「先生から教えてもらった」といって泣いていた。
これ、出題がそもそも間違っている。
「地球の表面積のなん%が海?」なら70%で正解だ。
しかしだ、、実際に地球に占める水の量は数%に満たないの現実。
引用)https://tabi-labo.com/243869/waer-stress
TVドラマ(シーズン1,2,、とか)
もう、何年も前だがあるTVドラマにハマった時があった。
来週の続きを見るのは楽しみで仕事を早めに終わって、、、
まぁこういうのを「ハマった」というのだろう。
そして最終話、謎がすべてわかる!、、もうワクワクが止まらない。
「おー、そうだったのか!」とすっきり。
そしてエンディング、、、奇妙な場面が一瞬映る。
「えっ!?何?」
続きはシーズン2へ。
うんざりだ。
冷静になって考えるとこのTVドラマに否応なく縛られていた感じがまた続くのは嫌だ。
どうせ「to be continued」で次週でその次週もま「to be continued」だ。
あれからシーズン物とわかるやつは絶対に見ない。
絶対の終わらないように作られているドラマだ。
おもしろそうなタイトル?良く見るとシーズン1とか書いてるやつね。
麻薬だ。
新型コロナ・・制御不能、責任は誰?
新型コロナ・・制御不能だと。。。
責任は誰になるのか?
国、政治なのか・・・
個人的な見解だが極端な民主主義、国民が大事という(極端な)国民に寄り添う(と掲げている?)国、政治だと思う。
海外ではロックダウンとか罰則がある国もある。
概ね日本では「国民が反発する」政治だ。
つまり、国民相手に強要、強制が出来ない弱腰な国、政治か。しかし、このような国、政治にしてきたのは国民、我々にある。
東日本大震災の前日に地震があって津波警報が出ていたがたいした事も無かったという。しかし、これが問題でこの時点で緊張感は薄れていなかったという事は無いと思う。
新型コロナも同じだ、何度も緊急事態宣言が出たが今は多くの人たちが、どうせ大したことないと思って居た可能性がある。
実際、街中の人出は待った減っていないようだし、会社も普通に人が居たりする。
東日本大震災もそうだが多くの専門家は危機感を警告し続けていたがSNSその他メディアを通じて私たちの所に届かないのは何故だろうか?
このままでは死者は増え続ける。
昔、「日本沈没」というドラマがあった。詳細は忘れたが石油コンビナートなどを大規模に爆破していく事があった。国民、我々の生活のエネルギー基本を破壊する。
強硬する姿勢に反発が起こり主人公もそれを阻止しようとするが、、、
しかし、強硬する理由を聞いて黙って爆破を見守る。。。
国民がまだ知らない日本沈没という未曽有の大震災の時、大規模な火災から
国民の命を少しでも救うための事だと分かって。。。
いつ、国、政治は本気になるのだろうか?
いつ、私たちを本気にさせるのだろうか?
コロナワクチン接種は危険なのか?
色んなデマがあるようです。
むしろこういったデマが最も危険だという事を心に留めておくべきかと。
専門家の意見にこそ耳を傾けたほうが良い。
少なくとも現時点では
「日本国内では現時点でワクチン接種が原因とされる死亡事例はない。」
としている(厚労省)
「接種後の死亡と、接種を原因とする死亡は全く意味が異なります。接種後の死亡にはワクチンとは無関係に発生するものを含むにもかかわらず、誤って、接種を原因とする死亡として、SNSやビラなどに記載されている例があります」(厚労省)
デマで悪質なのは如何にも学術的根拠があるかのようなモノと緊急性を醸し出したモノでしょう。「米ファイザー社の公式文書にそういった記述がある」とか、、、あるわけがない。
こういったデマを加速するのはやはり「接種後の死亡例」だ。
厚生労働省によると6月18日までに接種後に亡くなったのは計356人。
どいうわけかこの数字を見て「えっ!?、ヤバイんじゃないか?」と思ってたところに飛び込んでくるデマ情報。そして全国の医師ら450人は6月下旬、接種中止を求める嘆願書を厚生労働省に提出するという事態。
背景には国内の過去の薬に関する事故が多くの人の記憶にあるのではないかと思います。
サリドマイド事件
1957年に発売され妊婦が服用した場合には先天異常の子が生まれる等の世界規模の薬害。日本では1962年9月に該当商品は販売停止された。
結果的には2010年に半田宏(東京工業大学)と小椋利彦(東北大学)らによって解明された。皮肉なことにサリドマイドはエイズ、糖尿病性網膜症、がんなどへの効果が期待されている。サリドマイドにはR体とS体の鏡像異性体が存在している。平たく言えば右手と左手のようなもの。そして一方だけが問題を引き起こしている。
現在は技術のおかげで完全に分離した薬が生成可能になっている。
ちなみにミント(メントール)も同じように右手と左手があって一方はやはり毒だが市販されているものは当然毒ではない方。
話はずれたが「亡くなったのは計356人」
7/5までにワクチン接種率は総人口1億2700万人)に対して25%なので3200万人が接種してる計算になる。つまり、ワクチン接種後死亡確率は0.001%程度になる。
ここで統計を見てみよう(データは厚生省の公開データ)
H21年の統計(10万人あたり)https://www.mhlw.go.jp/toukei/saikin/hw/jinkou/geppo/nengai10/kekka03.html
30歳以上のデータで計算してみると1日あたり3100人が何らかの事でお亡くなりになっている。※年代ごとに異なるので正確ではないが平均的に。
今日死んでしまう確率は0.003%(30歳以上の人口は概ね9000万人(総務省))
日本の1日によれば1日3280人が亡くなっているので200人程度は30未満の若者ということになる。65歳以上のデータで計算してみると1日あたり2600人が何らかの事でお亡くなりになっている。65歳以上にすると0.009%(65歳以上の人口は概ね2900万人(総務省))
並べてみてみよう
・ワクチン接種後死亡確率は0.001%程度
・30歳以上でたまたま今日亡くなってしまう確率は0.003%程度
・65歳以上でたまたま今日亡くなってしまう確率は0.009%程度
※ワクチン接種の今日までの日数は本格的に始まった4月を起点にすると95日ある。
どうだろうか?
この数字の比較で何かを判断してはいけません。色んな仮定をしているし、この差に有意差があるか?とか年齢別(層別)どうか?とか・・・色々と統計量(検定)をちゃんと分析する必要はある。当然だがそんなことは専門家がちゃんとやっているはずです。
言いたかったのは専門家がちゃんと評価しているはずなので
「専門家の意見にこそ耳を傾けたほうが良い。」という事に尽きる。
ワクチン接種しないといけないのか?
予約が取れないとかいろんな問題があるようです。
なんでそんなに急ぐのか。。。。
目的がなんなのかを冷静に考えるべきだと思います。
以前、インフルエンザの問題があったとき出張で出かけたのだが周囲は全員マスクをしていた。つまり、自分はマスクをしなくても飛沫感染は防げるわけだ。
ワクチン接種も集団免疫の獲得にある。
感染者が居なくなればワクチン接種していなくても感染しない、感染する機会が無くなる。
わたしはワクチン接種の競争には巻き込まれないし、圧力も考えない。
つまるところ周囲が一人でも多くワクチン接種したら良いだけです。
少なくとも順番を争う必要性はなく「お先にどうそ」です。
順番がきたら私も集団免疫の獲得に協力したい。
つまり、その時はワクチン接種します。