予測分析

Kaggle新型コロナウイルスの感染人数を予測するコンペ(COVID19 Global Forecasting)

関連記事: kaggleの記事   昨年末から始まった新型コロナウイルス感染症(COVID-19)感染者拡大の影響は、いまや世界中に広がっています。世界中のさまざまな業界の組織はCOVID-19の対策を支援しています。やはりデータサイエンティストや機械学習エンジニアもCOVID-19)の感染対策や治療方針の策定を支援しています。今回の記事は世界中のデータサイエンティストの競い合うプラットフォームKaggleからの「COVID19 Global Forecasting」について紹介したいと思います。 目次 1.  COVID19 Global Forecastingの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 2. モデル作成 ___2.1 データの理解 ___2.2 モデル 1. ASHRAE 消費エネルギー予測のコンペの概要 1.1 コンペの概要 概要 Kaggleでは今回の一連のコンペを通じて、感染者数の推移の予測によって世界保健機関(WHO)と全米科学・工学・医学アカデミー(NASEM)が抱える新型コロナウイルスに関連する疑問にも答えることです。 今回のKaggleのコンペでは、米ホワイトハウスらを通じて集められた感染者数などの各種関連データを使って、1ヶ月後の感染者数を予測するモデルを構築することになります。 賞金: - 期間: 2020/3/19 ~ 第1週目のの評価:RMSLE nは観測の総数です piは予測値です aiは実測値です log(x)はxの自然対数です 最終スコアは、すべての列のRMSLEの平均です 詳細:RMSLE を用いた評価指標 第5週目の評価:Weighted Scaled Pinball Loss (WSPL) y は実測値です。 y^ は予測値です。 τ は分位予測です。 例 [0.05, 0.50, 0.95] Nf …

Kaggle新型コロナウイルスの感染人数を予測するコンペ(COVID19 Global Forecasting) Read More »

kaggle1位の解析手法 「ASHRAE 消費エネルギー予測」2. 1位の解析手法

目次 1.  ASHRAE 消費エネルギー予測のコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2. 1位の解析手法 ___2.1 前処理 ___2.2 フィギュア・エンジニアリング ___2.3 モデル 2. 1位の解析手法 Isamu & Mattのチームのコメントを解説します。 https://www.kaggle.com/c/ashrae-energy-prediction/discussion/124709 2.1 前処理 2.1.1 異常値削除(Remove anomalies) このコンペでは、データのクリーンアップが非常に重要でした。 想定されているのは、データに予測不可能な、したがって学習不可能な異常があり、トレーニングされた場合、予測の品質が低下するということです。 3種類の異常を特定して除外しました。 1.長い定数値 2.大きな正/負のスパイク 3.目視検査によって決定された追加の異常 これらの異常のいくつかは、サイトの複数の建物にわたって一貫していることがわかりました。 サイト内のすべての建物を使用して潜在的な異常を検証しました。複数の建物で同時に異常が発生した場合、これが実際に真の異常であると合理的に確信できます。 これにより、必ずしも一定値の長いストリークや大きなスパイクの一部ではない異常を取り除くことができました。 2.1.2 温度のデータを欠損値代入法Impute Missing Temperature Values 温度メタデータに多くの欠損値がありました。 線形補間を使用して欠落データを補完することがわかりました。 2.1.3 タイムゾーンの加工(Local Time Zone Correlation) トレイン/テストデータのタイムゾーンは、気象メタデータのタイムゾーンとは異なりましたので、タイムゾーンのデータを加工しました。 2.1.4 ラベルの加工(Target Transformations) 最初はlog1p(meter_reading)を予測しました。site 0のkBTUをkWhに変換します。最後はlog1p(meter_reading/square_feet)の標準化にしました。(スコアが0.002上がった) …

kaggle1位の解析手法 「ASHRAE 消費エネルギー予測」2. 1位の解析手法 Read More »

kaggle1位の解析手法 「ASHRAE 消費エネルギー予測」1.コンペの概要

前回はkaggleコンペの「Home Credit Default Risk 債務不履行の予測」の1位の解析手法を話しました。今回は「ASHRAE 消費エネルギー予測」の1位の解析手法をまとめたいと思います。内容が長いなので、2つの記事に分けました。 関連記事:「メルカリにおける値段推定」「Cdiscount 画像分類」「Home Credit Default Risk 債務不履行の予測」 目次 1.  ASHRAE 消費エネルギー予測のコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2. 1位の解析手法 ___2.1 前処理 ___2.2 フィギュア・エンジニアリング ___2.3 モデル 1. ASHRAE 消費エネルギー予測のコンペの概要 1.1 コンペの概要 ビルでの省エネの施策を実施した場合の効果を見積もるために、冷水、電気、温水、蒸気などのセンサーデータに基づいて、エネルギー使用量を予測するコンペでした。 賞金: 1位 10,000米ドル、2位7,000米ドル、3位5,000米ドル、4位2,000米ドル、5位1,000米ドル 期間: 2019/10/16 ~ 2019/12/20 参加チーム数:7,190 評価:評価指標はRMSLE(Root Mean Squared Logarithmic Error) RMSEとか平均平方二乗誤差といいます。すべての誤差の平方根の平均です。連続値の値でどれぐらい離れているかを平均を取り、平方根で評価します。 詳細: RMSLE を用いた評価指標 1.2 データセットの概要 train.csv 学習データで、各センサーの時間、量数のデータ(ビルのデータに紐付ける) building_meta.csv 各ビル、活動の分類、建物の面積、築年、建物の階数のデータ(天気のデータとセンサーのデータに紐付ける) …

kaggle1位の解析手法 「ASHRAE 消費エネルギー予測」1.コンペの概要 Read More »

kaggle1位の解析手法 「メルカリにおける値段推定」(3) 1位の手法

< kaggle1位の解析手法 「メルカリにおける値段推定」2.可視化 前回は過去kaggleコンペでメルカリが「メルカリにおける値段推定」(Mercari Price Suggestion Challenge)のデータ可視化を解説します。今回は1位の手法を解説したいと思います。   (3) 1位の解法 ___3.1 1位の解法の概要 ___3.2 1位の解法の特徴 ___3.3 1位の解法のコード (3) 1位の解法 Paweł and Konstantinのチームが終了後解法を公開しました。1位解法は非常にシンプルなNNで構成されており、多様性の出し方やモデリング方法など必見です。 いろいろ試行錯誤した結果から、最終的な解法は12個のMLPのアンサンブルになりました。最終的なモデルは同じデータで異なるモデルを学習させるよりも、異なるデータを同じモデルに学習させたほうが多様性を表現できることに気づき、モデルはMLPと決めたそうです。計算時間制約を考えてもMLPは都合が良かったとのこと。 1位解法の特徴 ・MLPは2種類に大別できます。一つは損失をHuber lossとした回帰モデルで、もう一つが分類モデルを経由した回帰モデルです。分類モデルは、過剰適合が少ないため、それ自体でより良いスコアができました。 ・学習/推論の直前で特徴量を全て2値化(非ゼロか否か)する処理を加えてると、スコア改善は見られなかったようです。 ・1層目にL2正則化を加えることは効果的だったようです。RELUよりもPRELUが効果的だったそうです。 ・最終的に選択した2つのsubmitはtensorflowとMXNetそれぞれで実装したモデルにしたそうです。MXNetモデルは高速でしたが、より多くのメモリを使用し、信頼性が低くになります。 1位解法のコード import os; os.environ[‘OMP_NUM_THREADS’] = ‘1’ from contextlib import contextmanager from functools import partial from operator import itemgetter from multiprocessing.pool import ThreadPool import time from typing import List, …

kaggle1位の解析手法 「メルカリにおける値段推定」(3) 1位の手法 Read More »

kaggle1位の解析手法 「メルカリにおける値段推定」2.可視化

< kaggle1位の解析手法 「メルカリにおける値段推定」1.データ概要 > kaggle1位の解析手法 「メルカリにおける値段推定」3. 1位の手法 前回は過去kaggleコンペでメルカリが「メルカリにおける値段推定」(Mercari Price Suggestion Challenge)のデータ概要を解説します。今回はデータ可視化を解説したいと思います。 2. Kaggleメルカリのデータ ___2.1 データの概要 ___2.2 データ可視化 ___2.3 データの前処理 2. Kaggleメルカリのデータ データは2stageになります。2stageコンペでは、配布されたテストデータの全量がpublic LB用の評価データ(stage 1)、競技者には非公開のテストデータがprivate LB用の評価データ(stage 2)となります。 では、データを確認しましょう。 train = pd.read_csv(f'{PATH}train.tsv’, sep=’\t’) test = pd.read_csv(f'{PATH}test.tsv’, sep=’\t’) print(train.shape) print(test.shape) (1482535, 8) (693359, 7) train.head() 目的変数: Price train.price.describe() count 1.482535e+06 mean 2.673752e+01 std 3.858607e+01 min 0.000000e+00 25% 1.000000e+01 50% 1.700000e+01 75% 2.900000e+01 …

kaggle1位の解析手法 「メルカリにおける値段推定」2.可視化 Read More »

kaggle1位の解析手法 「メルカリにおける値段推定」1.データ概要

過去kaggleコンペでメルカリが「メルカリにおける値段推定」(Mercari Price Suggestion Challenge)を開催されました。今回の記事はkaggle1位の解析手法をまとめたいと思います。データ概要、可視化、1位の手法の3つの記事を分けています。今回はデータ概要を解説します。 目次 1. Kaggleメルカリコンペの概要 ___1.1 コンペの概要 ___1.2 コンペの目的 ___1.3 コンペのルール   1. Kaggleメルカリコンペの概要 1.1 コンペの概要 Kaggleでメルカリコンペは株式会社メルカリが主催した、商品の適正な販売価格予測コンペです。訓練データとして、ユーザーが投稿した商品情報、商品の状態、ブランド名などデータによって、販売価格を予測するモデル作成が課題です。テーブルデータですが文章データも含まれているためNLPの知識が必要になります。kernel only コンペなので実験環境と実行時間に制限があります。   1.2 コンペの目的 目的:フリマアプリ「メルカリ」は、誰でも簡単に売買ができるフリマアプリで、出品時に売り手が商品の価格設定をする必要があります。価格を相場以上にすると売れませんし、相場以下にすると損をしてしまいます。適正な販売価格と設定のために、相場を調べておけば解決できますが、手間がかかります。そのため、販売者が投稿した情報を基に「適正な販売価格」を予測するシステムを目的とします。   1.3 コンペのルール 賞金: 1位60,000米ドル、2位30,000米ドル、3位10,000米ドル 期間: 2017/11/22 ~ 2018/02/22 参加チーム数:2,382 環境:kernel only kernelの環境は 4cores / 16GB RAM / 1GB disk / GPUなし で計算時間を60分未満です。 評価:RMLSE Root Mean Squared Logarithmic Error 定義は RMLSEスコアが低ければ低いほど、小さい誤差で値段を推定できます。 詳細:https://www.kaggle.com/c/mercari-price-suggestion-challenge/overview > kaggle1位の解析手法 「メルカリにおける値段推定」2.可視化

PythonでCatBoostの解説

関連記事: 決定木分析、ランダムフォレスト、Xgboost Kaggleなどのデータ分析競技といえば、XGBoost, Light GBM, CatBoost の決定木アルゴリズムをよく使われています。分類分析系と予測分析系の競技のKaggleの上位にランクされています。今回の記事はCatBoostの新しい決定木アルゴリズムを解説します。 目次 1. CatBoostとは 2. 実験・コード __2.1 データロード __2.2 10,000件くらいサンプルデータを作成 __2.3. XGBoost グリッドサーチで 81モデルから最適なパラメータを探索 __2.4 XGBoost 最適なパラメータのモデルを作成 __2.5. Light GBM グリッドサーチで 81モデルから最適なパラメータを探索 __2.6 Light GBM最適なパラメータのモデルを作成(Categorial Feature除く) __2.7 Light GBM最適なパラメータのモデルを作成(Categorial Feature含む) __2.8. CatBoost グリッドサーチで 81モデルから最適なパラメータを探索 __2.9 CatBoost 最適なパラメータのモデルを作成(Categorial Feature除く) __2.10 CatBoost 最適なパラメータのモデルを作成(Categorial Feature含む 3. モデル評価評価:学習時間 AUC 1. CatBoostとは CatBoostはCategory Boostingの略で、決定木ベースの勾配ブースティングに基づく機械学習ライブラリ。2017にYandex社からCatBoostが発表されました。 特徴: 1)回帰予測、分類の教師あり学習に対応 2)過学習を減らして、高い精度、学習速度を誇る 3)GPU、マルチGPUに対応 決定木ベースのアルゴリズムの歴史 CatBoostは、オーバーフィットを減らし、データセット全体をトレーニングに使用できるようにする、より効率的な戦略を使用します。 …

PythonでCatBoostの解説 Read More »

Statsmodelsでの回帰分析

前回の記事は線形回帰を解説しました。 回帰分析の説明はこの記事を参考してください。 線形回帰 回帰分析を行うとき、 Scikit-learn と Statsmodelsのライブラリをよく使います。前回はScikit-learnで回帰分析を行いました。今回はScikit-learnとStatsmodelsのライブラリを比較して、回帰分析を解説・実験します。 目次: 1. ライブラリ 1.1 Scikit-learnの回帰分析 1.2 Statsmodelsの回帰分析 2. コード・実験 2.1 データ準備 2.2 Sklearnの回帰分析 2.3 Statsmodelsの回帰分析 2.4 結果の説明 3. Partial Regression Plots 4.まとめ 1.ライブラリ 1.1 Scikit-learnの回帰分析 sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) パラメータ設定: fit_intercept : boolean, optional, default True: False に設定すると切片を求める計算を含めません。 normalize : boolean, optional, default False: True に設定すると、説明変数を事前に正規化します。 copy_X : …

Statsmodelsでの回帰分析 Read More »

Group Lassoの正則化

前回、【正則化のLasso回帰とRidge回帰】について説明しました。 今回の記事はLasso進化形のGroup Lassoの正則化について解説します。   Group Lassoとは Group Lassoは、説明変数の属性に基づいていくつかのグループに分けられるとき、変数選択においてグループ単位で選択したいときに利用する方法です。 Lassoというのは、正則化項にL1normを使ったいわゆるL1正則化のことで、大部分の重みが0に潰れて疎な解が得られます。   この進化形として、Group Lassoという手法があります。Group Lassoでは、重みベクトルの次元をグループ分けして、各グループごとのL2normを正則化項として使います。 使うメリットは以下になります。 カテゴリー変数の効果をモデルに反映 例えば、都道府県を説明変数に入れる場合があります。この場合は、各都道府県をフラグ化して、変数にします。しかしこの方法では「都道府県じたい」が効果のある変数かどうかを判定したい場合にはわかりません。そのためカテゴリー変数じたいの効果の有無を調べる場合にGroup Lassoを使うとわかります。   大規模な線形分類、回帰のライブラのsklearn-contrib-lightningをインストールします。 pip install scikit-learnpip install sklearn-contrib-lightning   ライブラリのインポート from sklearn.datasets import fetch_20newsgroups_vectorizedfrom lightning.classification import CDClassifier   20 newsgroupsはこのブログでも過去何回か取り上げまたしが、ベクトル化済みのデータです。 (130,107のカラム) bunch = fetch_20newsgroups_vectorized(subset=”all”)X = bunch.datay = bunch.targetprint(X.shape)print(y.shape) (18846, 130107)(18846,)   分類の設定と学習 clf = CDClassifier(penalty=”l1/l2″,                   loss=”squared_hinge”,                   multiclass=True,                   max_iter=20,                   alpha=1e-4,                   …

Group Lassoの正則化 Read More »