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 »

kaggle1位の解析手法 「Home Credit Default Risk 債務不履行の予測」③モデル作成

前回はkaggleコンペの「メルカリにおける値段推定」の1位の解析手法を話しました。内容が長いなので、3つの記事に分けました。今回は「Home Credit Default Risk 債務不履行の予測」のモデル作成について書きます。 目次 1.  Home Credit Default Riskのコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2.  1位の特徴量エンジニアリング ___2.1 特徴量生成 ___2.2 カテゴリカル特徴量の処理 ___2.3 特徴量選択 3.  1位のモデル作成 ___3.1 3.1 Base Models ___3.2 アンサンブル学習(Ensemble learning) ___3.3 その他 3.1位のモデル作成 3.1 Base Models モデル評価はStratifiedKFold, with 5-folds交差検証(Cross Validation)を利用しました。Stratified 普通のk-foldとも比較したが今回は大きな差はありません。 交差検証 (Cross Validation) 交差検定では、用意したデータをK個に分割して、1回目はそのうちの一つをテストデータ、それ以外を学習データとして、学習・評価します。2回目は1回目と異なる別のデータをテストデータとして使い、3回目は1,2回目と異なるデータで評価をします。そして、各回で測定した精度の平均を取ります。 交差検証の説明はこちらです。 ・LightGBM, XGBoost, FastRGF, FFM を使ったがCVは良くなかった。 …

kaggle1位の解析手法 「Home Credit Default Risk 債務不履行の予測」③モデル作成 Read More »

kaggle1位の解析手法 「Home Credit Default Risk 債務不履行の予測」②特徴量エンジニアリング

前回はkaggleコンペの「メルカリにおける値段推定」の1位の解析手法を話しました。内容が長いなので、3つの記事に分けました。今回は「Home Credit Default Risk 債務不履行の予測」の特徴量エンジニアリングについて書きます。 目次 1.  Home Credit Default Riskのコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2.  1位の特徴量エンジニアリング ___2.1 特徴量生成 ___2.2 カテゴリカル特徴量の処理 ___2.3 特徴量選択 3.  1位のモデル作成 ___3.1 3.1 Base Models ___3.2 アンサンブル学習(Ensemble learning) ___3.3 その他 2.  1位の特徴量エンジニアリング 1位のコメントにより、特徴量設計をまとめます。 https://www.kaggle.com/c/home-credit-default-risk/discussion/64821 この競争に適したモデルを構築するには、次の2つのことが重要です。 1. 賢くて正しい特徴量セット。 2.多様なアルゴリズムベース 2.1 特徴量生成 ・データが異質であり、異なる期間のデータや多くのデータソースなので、かなりの前処理が必要です。 ・様々な特徴量はManyToOneの結構で集計しての表を作成しました。約700の特徴量になりました。 ・複数の特徴量を試しまして、EXT_SOURCE_3でapplicationを割ったのは効果がありました。 ・Previous_application.csvの最後の 3, 5番目の特徴量と最初の2, 4番目の特徴量のapplicationsについてそれぞれ集計は一番良いスコアになりました。 ・Installment_payments.csvの集計は、最後の2,3,5のpayments、NUM_INSTALMENT_NUMBER が …

kaggle1位の解析手法 「Home Credit Default Risk 債務不履行の予測」②特徴量エンジニアリング Read More »

kaggle1位の解析手法 「Home Credit Default Risk 債務不履行の予測」①データ理解

前回はkaggleコンペの「メルカリにおける値段推定」の1位の解析手法を話しました。内容が長いなので、3つの記事に分けました。今回は「Home Credit Default Risk 債務不履行の予測」のデータ理解について書きます。 目次 1.  Home Credit Default Riskのコンペの概要 ___1.1 コンペの概要 ___1.2 データセットの概要 ___1.3 データの理解 2.  1位の特徴量エンジニアリング ___2.1 特徴量生成 ___2.2 カテゴリカル特徴量の処理 ___2.3 特徴量選択 3.  1位のモデル作成 ___3.1 3.1 Base Models ___3.2 アンサンブル学習(Ensemble learning) ___3.3 その他 1. Home Credit Default Riskのコンペの概要 1.1 コンペの概要 http://www.homecredit.net/ Home CreditがKaggleでHome Credit Default Risk(債務不履行の予測)コンペを主催しました。 Home Credit社は、アジアの9か国で信用の積み重ねが足りずに融資を受けることができない顧客にも融資を行う会社です。 目的:個人のクレジットの情報や以前の応募情報などから、各データが債務不履行になるかどうかを予測する問題です。 賞金: 1位35,000米ドル、2位25,000米ドル、3位10,000米ドル 期間: 2018/05/18 ~ …

kaggle1位の解析手法 「Home Credit Default Risk 債務不履行の予測」①データ理解 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 »

Keras AutoEncoder で異常検知「詐欺検知」

前回はkaggleコンペでメルカリについて解説しました。今回の記事はAutoEncoderを使ってKaggle のクレジットカードの詐欺検知を解説します。 目次 1. Keras Encoder 2. Kaggleクレジットカード不正利用データ(Credit Card Fraud Detection) 3. 実験・コード __3.1 データ読み込み __3.2 データ可視化 __3.3 データ加工 __3.4 Encoderモデル __3.5 モデル評価   1. Keras Autoencoder 自己符号化器 (autoencoder; AE) は入力を出力にコピーするように学習させたNNです。データが低次元多様体や多様体の小さい集合の周りに集中しているという考えに基づいている。AutoEncoder は特徴量の次元圧縮や異常検知など、幅広い用途に用いられています。 基本的には下図のように、入力と出力が同じになるようにニューラルネットワークを学習させるものです。入力をラベルとして扱っていて、教師あり学習と教師なし学習の中間に位置するような存在です。普通のニューラルネットワークと同様に勾配降下法(gradient descent)などを使って学習させることができます。   2. Kaggleクレジットカード不正利用データ https://www.kaggle.com/mlg-ulb/creditcardfraud#creditcard.csv 2013年9月の2日間の欧州の人が持つカードで、取引を記録したデータセットです。 284,807件の取引があり、その中に492件詐欺行為が含まれて、極めて不均衡なデータセットとなっています。各レコードには不正利用か否かを表す値(1ならば不正利用)を持っていますが、当然ながらほとんどが0となっています。また、個人情報に関わるため、タイムスタンプと金額以外の項目が主成分分析(および標準化)済みとなっていることも特徴です。   3. 実験・コード 3.1 データ読み込み 環境:Google Colab GPU ライブラリのインポート import pandas as pd import seaborn …

Keras AutoEncoder で異常検知「詐欺検知」 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 »