分類分析

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 »

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 »

LightGBMの解説

関連記事: 決定木分析、ランダムフォレスト、Xgboost、CatBoost 「勾配ブースティング」の開発は順調に進んでいます。 勾配ブースティングは、Kaggleで上位ランキングを取った半数以上もの勝者が勾配ブースティングを利用しました。 この記事では、Microsoft開発の「勾配ブースティング」のlightGBMを解説します。 目次 1. LightGBMとは 2. LightGBMの特徴 3. LightGBMのパラメーター 4. 実験・コード __4.1 データ読み込み __4.2 xgb __4.3 lightgb __4.4 モデル評価 1. LightGBMとは LightGBM(読み:ライト・ジービーエム)決定木アルゴリズムに基づいた勾配ブースティング(Gradient Boosting)の機械学習フレームワークです。LightGBMは米マイクロソフト社2016年にリリースされました。前述した通り勾配ブースティングは複数の弱学習器(LightGBMの場合は決定木)を一つにまとめるアンサンブル学習の「ブースティング」を用いた手法です。 LightGBMは大規模なデータセットに対して計算コストを極力抑える工夫が施されています。この工夫により、多くのケースで他の機械学習手法と比較しても短時間でモデル訓練が行えます。 LightGBMはこの「Leaf-wise」という手法を採用しています。従来の「Level-wise」に比べてLightGBMが採用している「Leaf-wise」は訓練時間が短くなる傾向にあります。 2. LightGBMの特徴 モデル訓練に掛かる時間が短い メモリ効率が高い Leaf-Wiseのため推測精度が高い。 LightGBMは大規模データに適している手法 3. LightGBMのパラメーター ・booster [default=gbtree] モデルのタイプを選択: gbtree: ツリーベースのモデル gblinear: 線形モデル ・silent [default=0]: メッセージのモード:1=メッセージを表示しない  0 = メッセージを表示する ・nthread [デフォルトで利用可能なスレッドの最大数] スレッド数の設定 ・eta [default=0.3 GBMのlearning rate 各ステップの重みを縮小することにより、モデルをより堅牢にする …

LightGBMの解説 Read More »

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 »

Azure ML Studioで顧客データ分析の実験(CRM analysis)

前回の記事は「Azure ML Studioでの機械学習の設定」を解説しました。 今回の記事はAzure ML Studioで顧客データ分析の実験を紹介します。 今回のデータセットはThe KDD Cup 2009 のデータです。 230特徴量の顧客属性とアップセル、新製品販売、解約の顧客行動履歴のフランスの通信会社Orangeデータです。50,000件のデータから3つの分類分析モデルを作成します。   解決課題 1)アップセルデータでアップセルしやすい人を見つけます。 2)新製品販売のデータで新製品を買う可能性高い人を見つけます。 3)解約データで解約したい人を見つけます   全体のExperimentの図は下記になります。特徴量の顧客属性と3つの過去行動のターゲットを結合して、モデルを作成します。   Var1からVar230は特徴量の5万件のデータセットです。 特徴データは欠損値がありますので、欠損値を0に置き換えます。   「Add Columns」 のモジュールで特徴量のと各ターゲットを結合します。 次に、vol1の層別化でテストとトレーニングを半分に分割します。   次に、予測モデルを構築するために、既定のパラメーターを持つ2クラスブーストデシジョンツリーバイナリ分類器を使用します。 ブースト デシジョン ツリーとは第2の木が第1の木の誤差を補正し、第3の木が第1および第2の木の誤差を補正するというように、集団学習法である。 ツリー全体の集合に基づいて予測あします。   Evaluate Model:アップセルタ テストセットに対するモデルのパフォーマンスは、Evaluate Modelモジュールの出力を視覚化することで確認できます。 「アップセルタ」では、ROC曲線は、モデルがランダムモデルよりも優れていること、および曲線下面積(AUC)が0.857であることを示しています。 しきい値が0.5の場合、精度は0.663、再現率は0.463、F1スコアは0.545です。   Evaluate Model:新製品販売 「新製品販売」のROC曲線では、AUCが0.727であることを示しています。   Evaluate Model:解約 「解約」のROC曲線では、AUCが0.711であります。     モデルの確認 [Train Model]のモジュールの Visualization 決定木図が表します。 モデルの判断を確認することができます。 決定木は、葉が分類を表し、枝がその分類に至るまでの特徴の集まりを表すような木構造を示します。データの持つ素性の中で集められたデータを一番よく分割する素性と閾値の組を選びます.その素性と閾値で分割後、またそれぞれのノードで分割を繰り返し行っていきます。分割が実行不可能となった場合、または、部分集合の個々の要素が各々1つずつの分類となってしまう段階で終了します。 …

Azure ML Studioで顧客データ分析の実験(CRM analysis) Read More »

グリッドサーチ(ハイパーパラメータ最適化)のまとめと例

(2019年7月27日の更新) 前回の記事は「モデル評価」を話しました。 今回の記事はグリッドサーチでのハイパーパラメータ最適化を解説します。 1)グリッドサーチ とは グリッドサーチとは、モデルの精度を向上させるために用いられる手法です。全てのパラメータの組み合わせを試してみる方法のことです。機械学習モデルのハイパーパラメータを自動的に最適化してくれるというありがたい機能。例えば、SVMならCや、kernelやgammaとか 2)GridSearchCV関数の説明 Pythonの機械学習ライブラリscikit-learnにはモデルのハイパーパラメータを調整する方法としてGridSearchCVが用意されています。 class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, n_jobs=None, iid=’warn’, refit=True, cv=’warn’, verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise-deprecating’, return_train_score=False) パラメータ名 説明 estimator : estimator object チューニングを行うモデル param_grid : dict or list of dictionaries パラメタ候補値を「パラメタ名, 候補値リスト」の辞書で与える scoring : string, callable, list/tuple, dict or None, default: None 複数のメトリックを評価するには、文字例のリストか、の辞書で与える n_jobs : int or None, optional (default=None) 同時実行数(-1にするとコア数で同時実行) pre_dispatch …

グリッドサーチ(ハイパーパラメータ最適化)のまとめと例 Read More »

決定木分析のパラメータ解説

前回の記事は決定木の特徴とアルゴリズムを説明しました。今回の記事は決定木のパラメータ設定を説明します。決定木の紹介はこちらです。 Scikit-learnのライブラリのパラメータを説明していきます。 class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)[source]   from sklearn.datasets import load_iris from sklearn import tree   clf = tree.DecisionTreeClassifier(criterion=’gini’,                                   splitter=’best’,                                   max_depth=4,                                   min_samples_split=3,                                   min_samples_leaf=1,                                   min_weight_fraction_leaf=0.0,                                   max_features=4,                                   random_state=None,                                   max_leaf_nodes=8,                                   min_impurity_split=1e-07,                                   class_weight=’balanced’,                                   presort=False)   iris = load_iris() …

決定木分析のパラメータ解説 Read More »