機械学習

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 »

NGBoostの解説

Stanford ML Groupは予測の不確かさを扱える新しい勾配ブースティング「NGBoost」を発表された。今回の記事はNGBoostを解説と実験したいです。 関連記事: 決定木分析、ランダムフォレスト、Xgboost、LightGBM 目次: 1.  NGBoostとは 2.  NGBoostの特徴 3. 実験・コード __3.1 データ読み込み __3.2 Xgboost、LightGBM、NGBoost __3.3 モデル評価 __3.4 可視化 4. まとめ 1.  NGBoostとは 勾配ブースティング(Gradient Boosting)は、いくつかの弱学習器(または基本学習器)が加法アンサンブルで結合されています。NGBoostアルゴリズムは、ブースティングを使用して条件付き確率分布のパラメーターを推定する、確率的予測のための教師あり学習方法です。 NGBoostの論文:  NGBoost: Natural Gradient Boosting for Probabilistic Prediction https://arxiv.org/abs/1910.03225 https://stanfordmlgroup.github.io/projects/ngboost/ アルゴリズムには3つの構成要素があります。 Base learner (f) Parametric probability distribution (Pθ) Proper scoring rule (S) Base Learner 決定木などのアルゴリズム Probability Distribution 出力する確率分布、正規分布、ラプラス分布などの分布設定 Scoring rule MLE, …

NGBoostの解説 Read More »

OpenCVのfindContours hierarchy(輪郭の階層情報)の解説

OpenCVのfindContours hierarchy(輪郭の階層情報)の解説 前回の記事はOpenCVでの直線検出と図形検出、図形数えるについて説明しました。今回はOpenCVのfindContours hierarchy(輪郭の階層情報)について解説したいと思います。 目次 1.  OpenCVのfindContours hierarchy(輪郭の階層情報) 2.  RETR_LIST 3.  RETR_TREE 4.  RETR_CCOMP 5.  RETR_EXTERNAL 1.  findContours hierarchy(輪郭の階層情報) OpenCVのPython版のfindcontours関数はオブジェクトの輪郭を検出する関数です。時には物体が難しい場所に位置,ある形状の中に別の形状が観測されることもあります。画像中に含まれるすべてのオブジェクトを検出して、それぞれのオブジェクトにラベル番号を振り分けています。輪郭線の情報およびオブジェクトの階層構造情報を返します。この関数表現方法を 階層情報 と呼びます。 第一引数に入力画像、第二引数に抽出モード、第三引数に近似手法を取ります。 image, contours, hierarchy = cv2.findContours(入力画像, 抽出モード, 近似手法) 実験 環境:Google Colab (CPU)でfindContours hierarchyの関数を実験します。 先ず、入力画像を表示します。 import cv2 import numpy as np from IPython.display import Image img_file = “box_a.png” Image(img_file) findContoursのhierarchy の関数を作成します。画像をロードして加工します。そして、輪郭の階層情報を出します。最後は輪郭を可視化します。 def findContours_summary(img, method, output): …

OpenCVのfindContours hierarchy(輪郭の階層情報)の解説 Read More »

エクストラツリー(ExtraTree)の解説

前回の記事はランダムフォレスト(Random Forest)について解説しました。今回はランダムフォレストに似ているExtraTreesについて解説します。 関連記事: 決定木分析、ランダムフォレスト、Xgboost、CatBoost、LightGBM 目次: 1.  エクストラツリー ExtraTreesとは 2.  エクストラツリー ExtraTreesの特徴 3.  SklearnのExtraTreesのパラメーター 4.  実験・コード __4.1 データ読み込み __4.2 決定木、ランダムフォレスト、ExtraTrees __4.3 モデル評価 1.  エクストラツリー ExtraTreesとは ExtraTrees とは Extremely Randomized Treesの略称です。ExtraTreesClassifierは、基本的に決定木に基づくアンサンブル学習方法です。RandomForestのようなExtraTreesClassifierは、特定の決定とデータのサブセットをランダム化して、データからの過剰学習をランダムフォレストよりも少なくすることを想定されています。 論文はこれになります。 Extremely randomized trees Pierre Geurts · Damien Ernst · Louis Wehenkel https://link.springer.com/content/pdf/10.1007/s10994-006-6226-1.pdf 2.  エクストラツリー ExtraTreesの特徴 決定木とランダムフォレストとExtraTreesを比較します。 決定木 通常、単一の決定木はめ、学習元のデータに対してオーバーフィッテングになりやすいです。通常、ランダムフォレストのほうが精度高い事が多いです。 ランダムフォレスト ランダムフォレストモデルは、複数ツリー(n_estimators)を作成し、過学習を減らす事が出来ます。 Extra Trees Extra Treesはランダムフォレストに似ています。複数のツリーを構築する所は、一緒ですが、木のノード(葉)を分割する所の特徴量(ジニ係数、エントロピー)のどちらかをランダムに選びます。 3.  SklearnのExtraTreesのパラメーター class …

エクストラツリー(ExtraTree)の解説 Read More »

kaggle1位の解析手法 「Cdiscountの画像分類チャレンジ」3 モデルの解説

前回記事の過去のkaggleコンペの「Cdiscountの画像分類チャレンジ」のデータ概要と環境準備を話しました。今回の記事はCdiscountの1位の解析モデル作成と解説します。 目次 1.  「Cdiscountの画像分類チャレンジ」のコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2.  1位の解説の環境準備とデータ処理 ___2.1 特徴量生成 ___2.2 解析方法のサマリー ___2.3 大きなデータセットの準備 3.  1位のモデルの解説 ___3.1 学習済みモデルの調整 ___3.2複数枚の画像データセットを利用 ___3.3 OCRデータの追加 ___3.4そのたの方法 ___3.5 restnetモデルのコード 3.1 学習済みモデルの調整 Resnet34で実験を開始しました。 実験の結果: 1.ほとんどすべての学習済みモデルのネットワーク構造は、1000ラベルのイメージネット用ですが、今回のコンペは5270ラベルがあります。それを直接使用すると、ネットワークのボトルネックが発生します。 2. SGD(Stochastic Gradient Descent)よりADAM Optimizerはエポックの学習が速いと変わりました。 restnet34に1×1カーネルコンボリューションレイヤーを追加しました。チャネルが512から5270になり、FC(完全接続)が5270 * 5270になります。 Adamを追加ました。エポックを増やしたから、Learning rateを小さいくなります。 lr = 0.0003 if epoch > 7: lr = 0.0001 if epoch …

kaggle1位の解析手法 「Cdiscountの画像分類チャレンジ」3 モデルの解説 Read More »

kaggle1位の解析手法 「Cdiscountの画像分類チャレンジ」2 解説の環境準備とデータ処理

前回記事の過去のkaggleコンペの「Cdiscountの画像分類チャレンジ」のデータ概要を話しました。今回の記事はCdiscountの1位のやり方について解説していきます。 目次 1.  「Cdiscountの画像分類チャレンジ」のコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2.  1位の解説の環境準備とデータ処理 ___2.1 特徴量生成 ___2.2 解析方法のサマリー ___2.3 大きなデータセットの準備 3.  1位のモデルの解説 ___3.1 学習済みモデルの調整 ___3.2複数枚の画像データセットを利用 ___3.3 OCRデータの追加 ___3.4そのたの方法 ___3.5 restnetモデルのコード public leaderboardの1位はbestfittingさんです。 2020/02時点でbestfittingはKaggle Rankingsに一位になっています。3年前初めて参加しましたが、26個の金メダルを獲得しています。 1位のコメントにより、特徴量設計をまとめます。 https://www.kaggle.com/c/cdiscount-image-classification-challenge/discussion/45863 問題点としては、以下になります。 1.1500万以上の画像と5000以上のカテゴリを持つ大規模なデータセット。 2.一部の製品と1-4枚の画像 3.CD/BOOKは分類が非常に困難 4.全体の精度も最高で0.8になると推定しました。多くの方法を選択でき、改善する余地が大きいため、勝つのは非常に困難 解析方法のサマリー 全体の解析方法は下記になります。 1.大きなデータセットの準備 2.学習済みモデルの微調整(0.759 / 0.757、inception-resnet-v2,0.757 / 0.756 resnet50) 3.。 複数枚の画像データセットを利用(0.772 / 0.771 inception-resnet-v2および0.769 / 0.768 …

kaggle1位の解析手法 「Cdiscountの画像分類チャレンジ」2 解説の環境準備とデータ処理 Read More »

kaggle1位の解析手法 「Cdiscountの画像分類チャレンジ」1コンペの概要

今回のkaggle1位の解析手法のシリーズはKaggleでよく行われる画像分類コンペについて話したいと思います。過去のコンペの「Cdiscountの画像分類チャレンジ」の解析方法を解説します。最初の記事はCdiscountのコンペ概要とデータ理解を紹介します。 目次 1.  「Cdiscountの画像分類チャレンジ」のコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2.  1位の解説の環境準備とデータ処理 ___2.1 特徴量生成 ___2.2 解析方法のサマリー ___2.3 大きなデータセットの準備 3.  1位のモデルの解説 ___3.1 学習済みモデルの調整 ___3.2複数枚の画像データセットを利用 ___3.3 OCRデータの追加 ___3.4そのたの方法 ___3.5 restnetモデルのコード 1.  「Cdiscountの画像分類チャレンジ」のコンペの概要 1.1 コンペの概要 Cdiscountは1999年に設立され、2011年にはフランスで最大のeコマースプラットフォームとなりました。Cdiscountは生鮮食品の販売だけでなく、電気製品、衣料、家庭用品などのすべてのカテゴリを取り揃えています。このコンペは製品の画像をカテゴリ分類するアルゴリズムを作成したいです。 データセットの特徴: ・一つの製品は複数画像がある ・ほぼ900万の製品:現在のカタログの半分 ・180×180の解像度で1500万枚以上の画像 ・5000以上のカテゴリ 目的: このコンペの目的は、画像に基づいて製品のカテゴリを予測することです。 製品には、1つまたは複数の画像があります。 テストセットのすべての製品IDを正しいカテゴリを予測することです。 メトリック Accuracy(正しい製品の割合)で評価されます。 賞金: 1位20,000米ドル、2位10,000米ドル、3位5,000米ドル 期間: 2018/09/14 ~ 2018/12/14 参加チーム数:626 1.2 データセットの概要 BSON拡張子ファイル BSON拡張子はBinary JSONで、主にMongoDBのデータストレージ及びネットワーク転送フォーマットとして利用されている、データ交換フォーマットである。 train.bson …

kaggle1位の解析手法 「Cdiscountの画像分類チャレンジ」1コンペの概要 Read More »

アンサンブル学習(Ensemble learning)解説と実験

前回はアンサンブル学習のアルゴリズムを開設しました。アンサンブル学習のアルゴリズムは、同じ学習アルゴリズムの多数のEstimatorからの予測結果を組み合わせた技術である。今回は様々なアンサンブル学習手法を解説と実験したいと思います。 目次 1.  アンサンブル学習の概要 ___1.1 アンサンブル学習(Ensemble learning)とは ___1.2 バイアス(Bias)とバリアンス(Variance) 2. 基本的なアンサンブル学習 ___2.1 Max Voting ___2.2 Weighted Average Voting 3. 高度なアンサンブル学習 ___3.1 Bagging ___3.2 Boosting ___3.3 Stacking 4. まとめ 1.  アンサンブル学習の概要 1.1 アンサンブル学習(Ensemble learning)とは アンサンブル学習とは、(英:ensemble learning)とは日本語で合奏を意味します。その名の通り、簡単に言えば多数決をとる方法です。個々に別々の学習器として学習させたものを、融合させる事によって、未学習のデータに対しての予測能力を向上させるための学習です。 ビジネス判断に考えると、アンサンブル学習は1人で問題を解くより、複数人で意見を出し合って知識を補い合いながら解く方が、正答率上がるということになっています。 Kaggleなどのデータ解析競技には、頻繁にこの「アンサンブル学習」の話題が上がります。事実、多くのコンペティションの上位にランクインする方々はアンサンブル学習を活用しています。 1.2 バイアス(Bias)とバリアンス(Variance) アンサンブル学習を理解する上で前提となる知識、「バイアス(Bias)」「バリアンス(Variance)」の2つを説明します。機械学習の精度を向上するということは「予測値」と「実際値」の誤差を最小化することですが、その誤差をより的確に理解するために「バイアス」「バリアンス」が用いられます。 下の図は青い点が機械学習モデルの予測した値、赤い点がデータの実際の値を図式化したものです。 バイアス(Bias)は、推定値と実際値の平均的な違い。高いバイアス エラーは、性能が悪いモデルで、データ中の重要なトレンドを見逃します。 バリアンス(Variance)同じ観測で推定値の異なり具合。バリアンスが高いモデルは訓練データに当てはまりすぎて、訓練外では性能が悪いです。 低バイアスの状態(予測値と実際値の誤差が少ない)になりますが、その一方でバリアンスは高まり過学習に陥るケースがあります。良いモデルはバイアスとバリアンスの最も適切なバランスを調整してモデルの精度を向上させていきます。 アンサンブル学習の種類 アンサンブル学習の大まかな分類は以下になります。基本的なアンサンブルと高度なアンサンブル学習手法の大分類があります。(以下図の以外の方法もあります) 2.   基本的なアンサンブル学習手法 2.1 Max Voting Max Votingは異なる機械学習分類器を組み合わせ、多数決や予測の平均投票を使用し、クラスラベルを予測することです。そのような分類器は個々の弱点を相殺するため、モデルの生成に有効である場合もあります。 複数のモデルを訓練して各モデルの予測を最終的に多数決して決めます。 …

アンサンブル学習(Ensemble learning)解説と実験 Read More »

DTW(Dynamic Time Warping)動的時間伸縮法

前回「時系列データの評価方法」について解説しました。 時系列データの向け、時系列同士の類似度を測る際にDTWという手法があります。今回の記事はDTW(Dynamic Time Warping)/動的時間伸縮法について解説したいと思います。 目次 1.  DTWの概要 ___1.1 DTW(Dynamic Time Warping)/動的時間伸縮法とは ___1.2 DTWの計算 2.   tslearn.clusteringの説明 ___2.1 tslearn.clusteringのクラス ___2.2 パラメタの説明 3. 実験 ___3.1 データ理解 ___3.2 EuclideanとDTWのk-meansクラスター ___3.3 可視化 4. まとめ 1. DTWの概要 1.1 DTW(Dynamic Time Warping)/動的時間伸縮法とは DTWとは時系列データ同士の距離・類似度を測る際に用いる手法です。波形の距離を求める手法としてはユークリッド距離(Euclidean Distance)や マンハッタン距離等(Manhattan distance)があるかと思います。 DTWは2つの時系列の各点の距離(誤差の絶対値)を総当たりで求め、全て求めた上で2つの時系列が最短となるパスを見つけます。時系列同士の長さや周期が違っても類似度を求めることができます。 1.2 DTWの計算 類似度を算出したい2つの時系列データ S=s1,s2,…,sm,T=t1,t2,…,tn, があるとき,各時系列データを横・縦に並べたグリッドを考えることができる. このグリッドの点 (i,j)は要素siとtj間のアライメントに相当します。 ワーピングパス W=w1,w2,⋯,wk は 時系列データSとTの各要素を”距離”が小さくなるようにアライメントします。つまり,Wはグリッドの点の系列となります。   Derivative DTW Derivative DTWは時系列データ S=s1,s2,⋯,smの各要素に対して,次のような変換を行った時系列データS′=s′1,s′2,…,s′mをりようします。 …

DTW(Dynamic Time Warping)動的時間伸縮法 Read More »

機械学習モデルを解釈するSHAP

機械学習モデルを学習させた時に、実際にモデルはどの特徴量を見て予測をしているのかが知りたい時があります。今回はモデルによる予測結果の解釈性を向上させる方法の1つであるSHAPを解説します。 目次 1. XAIとは 2. SHAPとは 3. 実験・コード 1:回帰モデル(Diabetes dataset) __3.1 データ読み込み __3.2 モデル作成 __3.3 SHAP値 __3.4 SHAP可視化 4. 実験・コード 2:画像データ(Imagenet) __4.1 データ読み込み __4.2 モデル作成 __4.3 SHAP可視化 1. XAI (Explainable AI)とは XAI はExplainable AI(説明可能なAI)の英略称です。言葉通り、予測結果や推定結果に至るプロセスが人間によって説明可能になっている機械学習のモデルに関する技術や研究分野のことを指します。 AI/機械学習(特にディープラーニングなどのニューラルネットワーク)によって作成されるモデルの中身は、仕組みの性質上、基本的に解釈が難しいです。そのため、中身はブラックボックス(=内部が不明になっている箱のことと言われます。 機械学習モデルを解釈する技術にはSHAP、LIME、DeepLIFT、AIX360 (IBM)、Activation Atlases (Googleと OpenAI)などの様々なツールが考案されています。 今回紹介するSHAPは、機械学習モデルがあるサンプルの予測についてどのような根拠でその予測を行ったかを解釈するツールです。 2. SHAPとは SHAP「シャプ」はSHapley Additive exPlanationsの略称で、モデルの予測結果に対する各変数(特徴量)の寄与を求めるための手法です。SHAPは日本語だと「シャプ」のような発音のようです。ある特徴変数の値の増減が与える影響を可視化することができます。 Shapley Value Estimation 3. 実験・コード 1:回帰モデル(Diabetes dataset) データセット:糖尿病患者の診療データ(Diabetes dataset) モデル:XGBoost …

機械学習モデルを解釈するSHAP Read More »