キャリブレーション(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 »

COCOBの最適化アルゴリズム

  目次 1 . COCOB最適化アルゴリズムの概要 1.1 COCOB最適化アルゴリズムとは 1.2 COCOB定義 2. 実験 2.1 データロード 2.2 データ前処理 2.3 COCOB最適化アルゴリズムのモデル作成 2.4 Adam最適化アルゴリズムのモデル作成 2.5 まとめ   記事:最適化アルゴリズムのまとめ   1.  COCOB最適化アルゴリズムの概要 1.1 COCOB最適化アルゴリズムとは COCOB最適化アルゴリズムはCOntinuous COin Betting (COCOB)の略称で学習率が要らない最適化アルゴリズムです。学習率を適応させたり、目的関数の想定された曲率を使用したりすることはありません。最適化プロセスをコイントスゲームにします。   コイントスゲーム ギャンブラーは初期金額から始まります。各ラウンドtで、彼はコイントスゲームの結果に賭けます。ギャンブラーは、表(ヘッド)または裏(​テイル)のいずれかに任意の金額を賭けることができます。 しかし、彼は追加のお金を借りることは許されていません。 彼が負けた場合、彼は賭けた金額を失います。 彼が勝った場合、彼は賭けた金額を取り戻し、それに加えて、彼は報酬と同じ金額を受け取ります。ラウンドt終了時のギャンブラーの富と、ギャンブラーの報酬にします。 上記のギャンブルアルゴリズムを使用して、劣勾配にアクセスすることにより、滑らかでない目的関数の最小化を見つけました。 COCOBは0から始まり、時間の経過とともに指数関数的に増加します 反対の符号の勾配に達するまで、wtを繰り返します。 ギャンブルの観点からは、これは明らかです。同じ結果のシーケンスがあるため、富は指数関数的に増加し、それによって富が増加し、賭けが増加します。   論文:https://arxiv.org/abs/1705.07795 Tensorflow: https://www.tensorflow.org/addons/api_docs/python/tfa/optimizers/COCOB   2. 実験 データセット:cifar10: 60000枚の32ピクセルx32ピクセルの画像。10クラス([0] airplane (飛行機)、[1] automobile (自動車)、[2] bird …

COCOBの最適化アルゴリズム Read More »

KTBoostの解説

  目次 1. KTBoostの概要 1.1 KTBoostのクラスター分析とは 1.2 KTBoostのライブラリ 2. 実験 2.1 環境設定 2.2 データロード 2.3 モデル作成 2.4モデル評価 2.5 # 特徴量の重要性 1. KTBoostの概要 1.1 KTBoostとは KTBoostとは、カーネルブースティングとツリーブースティングを組み合わせた新たなブースティングアルゴリズムです。カーネルとツリーブーストを組み合わせたアイデアは、ツリーは関数の粗い部分を学習するのに適し、RKHS回帰関数は関数の滑らかな部分をよりよく学習できるため、不連続ツリーと連続RKHS関数は互いに補完し合うと考えられています。 論文の結果ですが、RKHSとTreeに比べて良い予測結果がでています。 カーネルとツリーのブースティングの組み合わせの関数: 論文:KTBoost: Combined Kernel and Tree Boosting https://arxiv.org/abs/1902.03999   1.2 KTBoostのライブラリ 2つの主要なクラスは、KTBoost.BoostingClassifierとKTBoost.BoostingRegressorです。 BoostingClassifierは分類分析のクラス、BoostingRegressorは回帰分析のクラスです。   パラメター loss :損失:最適化される損失関数。 KTBoost.BoostingClassifier {‘deviance’, ‘exponential’}, optional (default=’deviance’) KTBoost.BoostingRegressor {‘ls’, ‘lad’, ‘huber’, ‘quantile’, ‘poisson’, ‘tweedie’, …

KTBoostの解説 Read More »

星クラスター分析(Star Clustering)の解説

目次 1. 星クラスター分析の概要 1.1 星クラスター分析のクラスター分析とは 1.2 星クラスター分析のライブラリ 2. 実験 2.1 環境設定 2.3 データロード 2.4 星クラスター分析の可視化   1. 星クラスター分析の概要 1.1 星クラスター分析のクラスター分析とは 星クラスター分析(Star Clustering)は、大まかに触発され、星系形成のプロセスに類似したクラスタリング手法です。 その目的は、事前にクラスターの数を知る必要がない、クラスター作成します。   1.2 Star Clusteringのライブラリ Star Clusteringのライブラリはpip installができないです。ただjosephius のgithub(下記のURL)からstar_clustering.pyをダウンロードすれば、star = StarCluster()のオブジェクトを作成して、星クラスター分析ができます。 https://github.com/josephius/star-clustering   2. 実験 環境:Colab データセット:Sci-kit learnのirisはアヤメの種類と特徴量に関するデータセットで、3種類のアヤメの花弁と萼(がく)に関する特徴量について多数のデータです。 モデル:Star Clusteringのクラスター分析   2.1 環境設定 Star Clusteringのモジュールをダウンロードします。 import urllib from urllib import request   img_src = “https://github.com/josephius/star-clustering/raw/master/star_clustering.py” img_path = ‘star_clustering.py’ urllib.request.urlretrieve(img_src, img_path)   ライブラリのインストール …

星クラスター分析(Star Clustering)の解説 Read More »

Snakeの活性化関数

目次 1. Snake活性化関数の概要 1.1 Snake活性化関数とは 1.2 Snake関数 2. 実験 2.1 ライブラリインポート 2.2 データ読み込み 2.3 データ加工 2.4 Snakeの活性化関数を作成 2.5 LSTMの活性化関数を作成 2.6 まとめ 関連記事:活性化関数のまとめ   1. Snake活性化関数の概要 1.1 Snake活性化関数とは Snakeの活性化関数は、単純な周期関数の外挿を学習できないLSTMに用います。通常の活性化関数であるtanh、sigmoid、reluの弱点を改善するために使用します。LSTMベースのアクティベーションの優れた最適化特性を維持しながら、周期関数を学習するために必要な周期的誘導バイアスを実現する新しいアクティベーション、つまりx + sin2(x)のような学習が難しいタイプで用いられます。   tfa.activations.snake( x: tfa.types.TensorLike, frequency: tfa.types.Number = 1 ) -> tf.Tensor 論文:Neural Networks Fail to Learn Periodic Functions and How to Fix It https://arxiv.org/abs/2006.08195 TensorFlow: …

Snakeの活性化関数 Read More »

HDBSCANの解説

  目次 1. HDBSCANの概要 1.1 HDBSCANのクラスター分析とは 1.2 HDBSCANのライブラリ 2. 実験 2.1 環境設定 2.3 データ作成 2.4 HDBSCANのモデル 2.5可視化   1. HDBSCANの概要 1.1 HDBSCANのクラスター分析とは HDBSCAN は、Campello、Moulavi、および Sander によって開発されたクラスタリング アルゴリズムです。DBSCANの拡張版で、階層的クラスタリング アルゴリズムに変換し、の安定性に基づいてフラットなクラスタリングをおこなう手法です。 HDBSCANの手順 密度/疎性に応じて空間を変形 距離加重グラフの最小全域木を構築 接続されたコンポーネントのクラスター階層を構築 最小クラスター サイズに基づいてクラスター階層を圧縮 凝縮木から安定したクラスターを抽出 その他のクラスター分析のアルゴリズムに対して、HDBSCANは速いアルゴリズムであることが知られています。 論文:Density-Based Clustering Based on Hierarchical Density Estimates https://link.springer.com/chapter/10.1007%2F978-3-642-37456-2_14 HDBSCANの資料 https://hdbscan.readthedocs.io/en/latest/basic_hdbscan.html   1.2 HDBSCANのライブラリ HDBSCAN(algorithm=’best’, allow_single_cluster=False, alpha=1.0, approx_min_span_tree=True, cluster_selection_epsilon=0.0, cluster_selection_method=’eom’, …

HDBSCANの解説 Read More »

RandomForestのdtreevizで決定木の可視化

  目次 1. dtreeviz 決定木の可視化 2.実験 2.1 環境設定 2.2 データロード 2.3 RandomForestClassifierモデル 2.4 決定木の図 2.5 dtreeviz決定木の図 2.6 葉の純度 2.7 ターゲットクラスの分布   1. dtreeviz 決定木の可視化 dtreevizは決定木関係のアルゴリズム結果を、可視化するライブラリです。対応ライブラリーとしては、scikit-learn, XGBoost, Spark MLlib, LightGBMにおいて利用できます。   Dtreevizは複数プラットフォームに対応されています。 pip install dtreeviz             # sklearn pip install dtreeviz[xgboost]    # XGBoost pip install dtreeviz[pyspark]    # pyspark pip install dtreeviz[lightgbm]   # LightGBM   dtreevizライブラリ:https://github.com/parrt/dtreeviz   dtreeviz関数 …

RandomForestのdtreevizで決定木の可視化 Read More »

Swishの活性化関数

  目次 1. Swish活性化関数の概要 1.1 Swish活性化関数とは 1.2 Swish関数 2. 実験 2.1 ライブラリインポート 2.2 データ読み込み 2.3 データ加工 2.4 Swishの活性化関数を作成 2.5 Reluの活性化関数を作成 2.6 まとめ 関連記事:活性化関数のまとめ   1. Swish活性化関数の概要 1.1 Swish活性化関数とは Swishは、線形関数とReLU関数の間を非線形に補間する滑らかな関数です。 Swishは、シグモイド関数とβで定義されます。 βがトレーニング可能なパラメーターとして設定されている場合、補間の程度はモデルによって制御できます。 ReLUと同様に、Swishは上に制限がなく、下に制限があります。 ReLUとは異なり、Swishは滑らかで単調ではありません。 実際、Swishの非単調性は、最も一般的な活性化関数とは異なります。 Swishの導関数は: 論文:Searching for Activation Functions https://arxiv.org/abs/1710.05941 TensorFlow: https://www.tensorflow.org/api_docs/python/tf/keras/activations/swish Pytorch: https://pytorch.org/docs/stable/generated/torch.nn.SiLU.html   1.2 Swish関数 def swish(x): return x * tf.math.sigmoid(x)   2.実験 データセット:CIFAR-10 は、32×32 のカラー画像からなるデータセットで、その名の通り10クラスあります。全体画像数は60000件となり、そのうち50000件が訓練用データ、残り10000件がテスト用データに分けます。 モデル:Swishの活性化関数のモデル …

Swishの活性化関数 Read More »

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

目次 1 Yogi最適化アルゴリズムの概要 1.1 Yogi最適化アルゴリズムとは 1.2 Yogi定義 2. 実験 2.1 データロード 2.2 データ前処理 2.3 Yogi最適化アルゴリズムのモデル作成 2.4 Adam最適化アルゴリズムのモデル作成 2.5 まとめ 記事:最適化アルゴリズムのまとめ   1 Yogi最適化アルゴリズムの概要 1.1 Yogi最適化アルゴリズムとは yogiは適応勾配の最適化アルゴリズムであり、ミニバッチサイズを大きいときでも収束が速いと言われておりり、非収束の問題を回避する方法です。 ADAMは、学習率が急速に低下しないようにしながら、適応勾配を使用することです。 これを実現するために、ADAMは本質的に乗法であるEMAを使用します。 これは、過去の勾配がかなり速く忘れられる状況につながります。Yogiは制御された実効学習率の増加を採用することにより、パフォーマンスを向上させています。   MNISTデータの実験から、yogiはより良いパフォーマンスを示しています。   論文:Adaptive Methods for Nonconvex Optimization https://papers.nips.cc/paper/8186-adaptive-methods-for-nonconvex-optimization.pdf Tensorflow: https://www.tensorflow.org/addons/api_docs/python/tfa/optimizers/Yogi PyTorch: https://pytorch-optimizer.readthedocs.io/en/latest/_modules/torch_optimizer/yogi.html   TensorflowのYogi最適化アルゴリズムは下記のパラメータになります。 yogi = tfa.optimizers.Yogi( learning_rate = 0.01, beta1 = 0.9, beta2 = 0.999, epsilon = 0.001, l1_regularization_strength = 0.0001, l2_regularization_strength = 0.0001, initial_accumulator_value = 1e-06, activation = ‘sign’, name = ‘Yogi’, ) …

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

正規化と標準化などの特徴量のスケーリング(Feature Scaling)

  目次 1. 特徴量のスケーリングの概要 1.1 特徴量のスケーリングとは 1.2 特徴量のスケーリングのライブラリ 2. 特徴量のスケーリングの手法: 2.1 MinMaxScaler 正規化(normalization) 2.2 MaxAbsScaler 2.3 StandardScaler 標準化(standardization) 2.4 RobustScaler 2.5 PowerTransformer 2.6 QuantileTransformer 2.7 Normalizer 2.8 Log Transformation (対数変換) 2.9 Square Root Transformation (平方根変換) 2.10まとめ   1.特徴量のスケーリングの概要 1.1 特徴量のスケーリングとは 特徴量のスケーリング(Feature Scaling)とはモデルの学習する前処理の一つの手法で、特徴量間のスケールを変換することです。データセットの特徴量間でスケールが異なることは多々あります。特徴量間で異なるスケールのデータセットをモデルで学習させた場合、うまく学習できないということがおこります。そのため、学習前の前処理で、特徴量間のスケールを揃えるなど必要があります。   1.2 特徴量のスケーリングのライブラリ scikit-learnでsklearn.preprocessingのモジュールは複数特徴量のスケーリングの手法があります。scikit-learnとnumpyのライブラリで特徴量のスケーリングを実験します。 詳細:https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html   ライブラリのインポート import numpy as np import pandas as pd   from matplotlib import pyplot as plt plt.style.use(‘seaborn’)   …

正規化と標準化などの特徴量のスケーリング(Feature Scaling) Read More »