T-GANでテーブルデータ拡張

関連記事: 深層学習 前回の記事は「KerasでのData Augmentationの解説」画像のデータ拡張について解説しました。今回の記事はテーブルデータ拡張するT-GANについて解説したいと思います。 目次 1. T-GANの概要 __1.1 TGANとは __1.2 モデルパのラメータ 2. 実験・コード __2.1 データロード __2.2 ライブラリの設定 __2.3. 前処理 __2.4. モデルを訓練 __2.5. 前処理 __2.6. サンプル作成 3. サンプルデータ確認 __3.1 モデルテストの関数 __3.2 モデル検証 1. T-GANの概要 1.1 TGANとは TGANまたは、table-GANは、Table Generative Adversarial Networkの略称です。敵対的生成ネットワークで数値などの連続変数だけではなく、カテゴリ変数にも対応しています。 ネットワークの構成は下記になります。 テーブルデータから生成モデルを学習して、生成者(Generator)と識別者(Discriminator)を競わせます。 1.2 モデルパのラメータ tgan = TGANModel(continuous_columns, output=’output’, max_epoch=5, steps_per_epoch=10000, save_checkpoints=True, restore_session=True, batch_size=200, z_dim=200, noise=0.2, l2norm=0.00001, learning_rate=0.001, num_gen_rnn=100, num_gen_feature=100, num_dis_layers=1, num_dis_hidden=100, optimizer=’AdamOptimizer’ ) max_epoch (int, default=100): エポックの数 steps_per_epoch (int, default=10000): 各エポックで実行するステップの数 save_checkpoints(bool, default=True): …

T-GANでテーブルデータ拡張 Read More »

OpenCVで顕著性検出(Saliency Detection)

関連記事: 画像解析 今回の記事はOpenCVに入っている顕著性(Saliency)について解説したいと思います。 目次 1. Saliency Detectionの概要 2. 実験・コード __2.1 データロード __2.2 サリエンシーディテクションの関数 __2.3. SpectralResidualの顕著性 __2.4. FineGrainedの顕著性 1. Saliency Detectionの概要 顕著性を検出するには多くの方法があります。 OpenCVでは、顕著性検出用に提供されているアルゴリズムは3つのカテゴリに分類されます。 Static saliency : 画像から検出するモジュールです。Motion saliency : 動画のフレームに依存するモジュールです。今回は static saliencyについて解説します。static saliencyのアルゴリズムは、画像の人が良く注目する部分を検出できるようにするさまざまな画像機能を使用します。 OpenCVには、スペクトル残差と細粒度の2つのアルゴリズムがすでに実装されています。 Spectral Residual このアルゴリズムは、入力画像の対数スペクトルを分析し、スペクトルドメイン内の画像のスペクトル残差を抽出し、プロトオブジェクトの位置を示唆する顕著性マップを構築する高速な方法が実装されています。 Fine Grained 人間の目の網膜は神経節細胞で構成されています。 神経節細胞には、オンセンターとオフセンターの2種類があります。 オンセンターは、暗い背景に囲まれた明るい領域に反応します。 オフセンターは、明るい背景に囲まれた暗い領域に反応します。 このアルゴリズムは、オンセンター(on-center )とオフセンター(off-center)の違いに基づいて顕著性を計算します。 opencv/opencv_contribのモジュール: cv2.saliency.StaticSaliencySpectralResidual_create() cv2.saliency.StaticSaliencyFineGrained_create() 2. 実験・コード 概要: 入力データ: ウィキペディアからの画像 環境:Google Colab GPU ライブラリ: OpenCV …

OpenCVで顕著性検出(Saliency Detection) 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 »

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 »