カテゴリ変数のエンコーディングのまとめ

目次 1.数字変数のエンコーディング 1.1 OrdinalEncoder 1.2 CountEncoder 2. ダミー値エンコーディング 2.1 OneHotEncoder 2.2 SumEncoder 2.3 BinaryEncoder 2.4 BaseNEncoder 2.5 HashingEncoder 3. 別のレベルの比較エンコーディング 3.1 HelmertEncoder 3.2 BackwardDifferenceEncoder 3.3 PolynomialEncoder 4. ターゲットありエンコーダー 4.1 TargetEncoder 4.2 LeaveOneOutEncoder 4.3 MEstimateEncoder 4.4 CatBoostEncoder 4.5 GLMMEncoder 4.6 JamesSteinEncoder 4.7 WOEEncoder   ライブラリのインストール !pip install category_encoders   ライブラリのインポート import category_encoders as ce   1.数字変数のエンコーディング 1.1 OrdinalEncoder サンプルデータ作成 import pandas as pd   …

カテゴリ変数のエンコーディングのまとめ Read More »

eli5でモデルの解釈

目次 1. eli5の概要 2. 実験 2.1 回帰モデル 2.2 分類モデル 関連記事:eli5での文書分類モデル   先回の記事はeli5での文書分類モデルについて解説しました。 今回はeli5で回帰モデルと分類モデルの解釈について解説していきます。   1. eli5の概要 Eli5は「Explain Like I’m 5 (私が5歳だと思って説明して)」を略したスラングです。Eli5はscikit-learn、XGBoost、LightGBMなどの機械学習モデルを解釈するPythonライブラリです。   eli5は機械学習モデルを解釈する2つのレベルを提供します。 グローバルレベル:モデルの特徴量の重要さを説明します。 ローカルレベル:個々のサンプル予測を分析して、特定の予測が行われた理由を理解します。   2. 実験 環境:Google Colab モデル解釈:eli5   ライブラリのインストール !pip install eli5   ライブラリのインポート import pandas as pd import numpy as np import sklearn import eli5   2.1 回帰モデル ボストン住宅価格データセットを読み込みます。 from sklearn.datasets import load_boston   boston = load_boston() data = pd.DataFrame(np.c_[boston[‘data’], boston[‘target’]], columns= np.append(boston[‘feature_names’], [‘target’]))   print(‘Number of columns’, len(data.columns)) data 学習とテストのデータを分けます。 from sklearn.model_selection import train_test_split   …

eli5でモデルの解釈 Read More »

LAMBの最適化アルゴリズムの解説

  目次 1 LAMB最適化アルゴリズムの概要 1.1 LAMB最適化アルゴリズムとは 1.2 LAMB定義 2. 実験 2.1 データロード 2.2 データ前処理 2.3 LAMB最適化アルゴリズムのモデル作成 2.4 Adam最適化アルゴリズムのモデル作成 2.5 まとめ 記事:最適化アルゴリズムのまとめ   1 LAMB最適化アルゴリズムの概要 1.1 LAMB最適化アルゴリズムとは LAMBは、LARSに触発されて、大きなミニバッチを使用してディープニューラルネットワークのトレーニングを加速するための手法です。 LAMBの適応性は2つあります。(i)ADAMで使用される2次モーメントの平方根に関する次元ごとの正規化、および(ii)層ごとの適応性によって得られる層ごとの正規化です。 LAMBのアルゴリズムは下記になります。 以下の表は、ResNet-50ネットワークを使用したImageNetデータセットの実験結果です。 LAMBは高精度を実現できます。 論文: https://arxiv.org/abs/1904.00962 Tensorflow: https://www.tensorflow.org/addons/api_docs/python/tfa/optimizers/LAMB?hl=ja PyTorch: https://github.com/cybertronai/pytorch-lamb/blob/master/pytorch_lamb/lamb.py   2. 実験 データセット:cifar10: 60000枚の32ピクセルx32ピクセルの画像。10クラス([0] airplane (飛行機)、[1] automobile (自動車)、[2] bird (鳥)、[3] cat (猫)、[4] deer (鹿)、[5] dog (犬)、[6] frog (カエル)、[7] …

LAMBの最適化アルゴリズムの解説 Read More »

HARDSHRINKの活性化関数

目次 1. HARDSHRINK活性化関数の概要 1.1 HARDSHRINK活性化関数とは 1.2 HARDSHRINK関数 2. 実験 2.1 ライブラリインポート 2.2 データ読み込み 2.3 データ加工 2.4 HARDSHRINKの活性化関数を作成 2.5 Reluの活性化関数を作成 2.6 まとめ 関連記事:活性化関数のまとめ 1. HARDSHRINK活性化関数の概要 1.1 HARDSHRINK活性化関数とは HARDSHRINK活性化関数とは入力データと出力データは原点の周りは、0だがそれ以外では値のある関数です。下記の関数になります。 関数 の形をしており、変数lower/upperのデフォルト値は0.5です。 1.2 HARDSHRINK関数 TensorFlowの関数 tfa.activations.hardshrink( x: tfa.types.TensorLike, lower: tfa.types.Number = -0.5, upper: tfa.types.Number = 0.5 ) -> tf.Tensor TensorFlowの資料: https://www.tensorflow.org/addons/api_docs/python/tfa/activations/hardshrink?hl=ja   PyTorchの資料: https://pytorch.org/docs/stable/generated/torch.nn.Hardshrink.html   2. 実験 データセット:CIFAR-10 …

HARDSHRINKの活性化関数 Read More »

大規模データのクラスター分析Faiss

  目次 1. Faissの概要 1.1 Faissとは 1.2 Faissのライブラリ 2. 実験 2.1 サンプルデータ生成 2.2 Faissのkmeans 2.3 Scikit-learnのkmeans 2.4 まとめ   1. Faissの概要 1.1 Faissとは FaissはFacebook Resarchが提供する高密度ベクトルの効率的な類似性検索とクラスタリングするライブラリです。近傍探索問題は、データ量に応じて計算量が急激に増大する古典的な問題があって、RAMが足らないや計算時間がかかるといった問題あります。ライブラリーFaissは、Python / Numpyの完全なラッパーを使用してC ++で記述されて、学習時間が高速であると言われています。   1.2 Faissのライブラリ ライブラリーFaissは、ベクトルのセットを格納するインデックスタイプを中心に構築されており、L2および/またはドット積ベクトルの比較でそれらを検索する機能を提供します。 利用可能なインデックス構造のほとんどに対応しています。以下の点で優れていると言われています。 ・検索時間 ・検索品質 ・インデックスベクトルごとに使用されるメモリ ・トレーニングの時間 ・教師なしトレーニングのための外部データの必要性   資料:https://github.com/facebookresearch/faiss   2. 実験 データセット:大量データを生成します。(1,000,000件) モデル:FaissのkmeansとScikit-learnのkmeans モデル評価:実行時間、Rand score(クラスタリング間の類似度) Rand scoreの詳細: RAND Scoreの記事   ライブラリのインストール conda install faiss-cpu …

大規模データのクラスター分析Faiss Read More »

SPOCUの活性化関数

目次 1. SPOCU活性化関数の概要 1.1 SPOCU活性化関数とは 1.2 SPOCU関数 2. 実験 2.1 ライブラリインポート 2.2 データ読み込み 2.3 データ加工 2.4 SPOCUの活性化関数を作成 2.5 Reluの活性化関数を作成 2.6 まとめ 関連記事:活性化関数のまとめ   1. SPOCU活性化関数の概要 1.1 SPOCU活性化関数とは SPOCU活性化関数とは scaled polynomial constant unit activationの略称であり、物理学をベースとしているパーコレーションベースの活性化関数です。統計物理学と数学のパーコレーション理論は、スポンジのような媒質に水がしみこむ現象のモデルとして言われています。それ以外にも、パーコレーション理論とモンテカルロシミュレーションの組み合わせる事によって、ハードウェアのアモルファスシステムでのイオン移動と電子伝達をシュミレートできると言われています。 SPOCU活性化関数は、ウィスコンシン診断乳がん(WDBC)データセットや大規模データセットMNISTなど、大規模データセットと小規模データセットの両方でSPOCUの検証に成功しました。 SPOCUの論文 https://link.springer.com/article/10.1007/s00521-020-05182-1 1.2 SPOCU関数 ライブラリのインストール python3 -m pip install spocu Tensorflow from spocu.spocu_tensorflow import SPOCU   alpha = 3.0937 beta = 0.6653 …

SPOCUの活性化関数 Read More »

eli5での文書分類モデルの解釈

目次 1. eli5の概要 1.1 eli5とは 1.2 eli5のライブラリ 2. 実験 2.1 データロード 2.2 SVCの分類分析 2.3 eli5のモデル解釈 1. eli5の概要 1.1 eli5とは Eli5は「Explain Like I’m 5 (私が5歳だと思って説明して)」を略したスラングです。Eli5は統合されたものを使用してさまざまな機械学習モデルを解釈するPythonライブラリです。   1.2 eli5のライブラリ 対応機械学習ライブラリ: scikit-learn XGBoost LightGBM CatBoost lightning sklearn-crfsuite Keras   2. 実験 環境:Google colab データセット:20 Newsgroups:Usenet*1から収集した約20000文書、20カテゴリのデータセットです。 モデル:SVCの分類分析 モデル解釈:eli5のTextExplainer   ライブラリのインストール !pip install eli5 2.1 データロード Scikit-learnのデータセットから、20 Newsgroupsの学習とテストのデータセットを読み込みます。 from sklearn.datasets import fetch_20newsgroups   categories = [‘alt.atheism’, ‘soc.religion.christian’, ‘comp.graphics’, ‘sci.med’] …

eli5での文書分類モデルの解釈 Read More »

ランド指数 (Rand Index)クラスタリング間の類似度

目次 1. ランド指数 (Rand Index)の概要 1.1 ランド指数 (Rand Index)の概要 1.2 scikit-learnのランド指数 2. 実験 2.1データセット生成 2.2 KMeansのランド指数 2.3 dbscanのランド指数 2.4 MeanShiftのランド指数 2.5 まとめ 1. ランド指数 (Rand Index)の概要 1.1 ランド指数 (Rand Index)とは ランド指数 (Rand Index)は、2つのクラスタリング間の類似度を計算します。 Rand indexは下の式で計算します。 ARI = (RI – Expected_RI) / (max(RI) – Expected_RI) 例えば、 Cluster1: 1, 2, 1, 1, 2 Cluster2: 1, 1, 2, …

ランド指数 (Rand Index)クラスタリング間の類似度 Read More »

SHARPNESS-AWARE-MINIMIZATION (SAM)

  目次 1. SAMの概要 1.1 SAMとは 2. 実験 2.1 環境構築 2.2 データセットの準備 2.3 SAM関数 2.4 ResNet20 モデル 2.5 まとめ 1. SAMの概要 1.1 SAMとは SAMはSHARPNESS-AWARE MINIMIZATIONの略称で、Google Researchで深層学習ネットワークの損失を減らす新しい効果的な方法です。損失ランドスケープのジオメトリと一般化を接続する以前の作業によって作成されました。 資料:https://github.com/google-research/sam SAMは、多くの画像データセットベンチマークの最新モデルと比較して損失を改善できます。 左はSGDでトレーニングされたResNetが収束する鋭い最小値です。 右はSAMでトレーニングされたResNetが収束する広い最小値です。SAMは、広く研究されているさまざまなコンピュータービジョンタスク全体でモデルの一般化能力を向上させます。 単にトレーニング損失値LS(w)が低いパラメーター値wを探すのではなく、近隣全体のトレーニング損失値が均一に低いパラメーター値を探します。 論文:SHARPNESS-AWARE MINIMIZATION FOR EFFICIENTLY IMPROVING GENERALIZATION https://openreview.net/pdf?id=6Tm1mposlrM   2. 実験 環境:Google Colab(TPU) データセット:CIFAR-10 は6万枚の10種類の「物体カラー写真」(乗り物や動物など)の画像データセット モデル:SAM、ResNet20   2.1 環境構築 Githubのプロジェクトをダウンロードします。 !git clone https://github.com/sayakpaul/Sharpness-Aware-Minimization-TensorFlow ライブラリのインポート import …

SHARPNESS-AWARE-MINIMIZATION (SAM) Read More »

キャリブレーション(calibrated classifiers)

  目次 1. キャリブレーション(calibrated classifiers)の概要 1.1 キャリブレーションのクラスター分析とは 1.2 キャリブレーションのライブラリ 2. 実験 2.1 環境設定 2.2 データセット作成 2.3 SVC 2.4 SVC +キャリブレーションClassifierCV 2.5 まとめ   1. キャリブレーションの概要 1.1 キャリブレーションとは キャリブレーション(calibrated classifiers)はモデルによって算出された予測確率を本来の確率に近づける手法です。普通の分類問題では、どのクラスに属するかを判別するモデルを作りますが、あるクラスに属する確率はどのくらいか、を予測したい場合を考えます。 モデルの出力値を各クラスに属する確率に近づけることを、キャリブレーションと言います。 キャリブレーションの方法を2つ記載します。   Sigmoid/Platt Scaling 説明変数をモデル出力値、目的変数を正解ラベルとしてSigmoid関数にフィットさせ、そのSigmoid関数に通した値をキャリブレーションした値とします。 Isotonic Regression 与えられた順序制約を満たすようにパラメータを推定する問題は単調回帰 (isotonic regression) と呼ばれます。 検量線(けんりょうせん:calibration curve) 下記ののプロットは、calibration_curveを使用して、さまざまな分類器の確率的予測がどの程度適切に較正されているかを比較しています。 x軸は、各ビンの平均予測確率を表します。 y軸は、陽性の割合、つまり、クラスが陽性クラスであるサンプルの割合です。 詳細:https://scikit-learn.org/stable/modules/calibration.html   SklearnのCalibratedClassifierCV https://scikit-learn.org/stable/modules/generated/sklearn.calibration.CalibratedClassifierCV.html#sklearn.calibration.CalibratedClassifierCV   sklearn.calibration.CalibratedClassifierCV(base_estimator=None, *, method=’sigmoid’, cv=None, …

キャリブレーション(calibrated classifiers) Read More »