機械学習

時系列データの外れ値の統計的な求め方(1次元)

時系列データの外れ値の統計的な求め方(1次元)の解説 – S-Analysis
外れ値とは、統計において他の値と比べて極端に大きな値かもしくは極端に小さな値のことを指します。
外れ値とは|外れ値と異常値の違い|四分位範囲(IQR)|zスコア|pythonの実験

PyCaretでの異常検知

目次 1. 異常検知のPyCaretの概要 1.1異常検知とは 1.2異常検知の種類 1.3 PyCaretのライブラリ 2. 実験 2.1 環境構築 2.2 データロード 2.3 モデル学習 2.4 モデル推論 2.5 モデルの保存と読み込む 関連記事:PyCaret(オープンソースの自動機械学習:AutoML) 1. 異常検知のPyCaretの概要 1.1異常検知とは 異常検知(Anomaly detection) とは、データの中から異常な状態、通常のパターンとは異なる挙動を検出することです。 1.2異常検知の種類 異常検出の手法は主に3つの種類があります。 1)教師なし異常検出:ラベルがなくデータで異常モデルを学習します。 2)教師あり異常検出:「正常」および「異常」とラベル付けされたデータセットで異常モデルを学習します。 3)半教師あり異常検出:正常データのみで学習されます(異常はありません)。正常データからテストデータを推測します。   1.3 PyCaretのライブラリ pycaret.anomalyモジュールは、教師なし異常検出と教師あり異常検出の手法を提供します。 PyCaretは異常検出のアルゴリズムが12つあります。 abod     Angle-base Outlier Detection cluster   Clustering-Based Local Outlier cof        Connectivity-Based Local Outlier iforest   Isolation Forest histogram          Histogram-based Outlier Detection …

PyCaretでの異常検知 Read More »

Autoviz: データ自動可視化

目次 1 Autovizの概要 1.1 Autovizとは 1.2 Autovizのライブラリ 2. 実験 2.1 データロード 2.2 Autovizの探索的データ解析のEDA 3 まとめ 1 Autovizの概要 1.1 Autovizとは Autovizはデータセットを自動可視化するライブラリです。データのファイルタイプとしては、Pandasのデータフレーム、CSV、 txt、 json等のファイルから1行のコードで自動可視化できます。   1.2 Autovizのライブラリ AutoViz(filename, sep, depVar, dfte, header, verbose, lowess, chart_format¸ max_rows_analyzed, max_cols_analyzed) AutovizのAPI: filename- ファイル名を入力し、データフレームを使用する場合は、filenameを空の文字列(””)として指定します。 sep- ファイル内の区切り文字です。 depVar- データセット内のターゲット変数 dfte- パンダのデータフレーム header- ファイル内のヘッダー行の行番号 verbose-  0、1、または2の3つの許容値があります。 lowess- ターゲット変数に対する連続変数の各ペアの回帰直線の設定。小さなデータセットに非常に適しています。 chart_format-  SVG、PNG、またはJPGに設定することができます。 max_rows_analyzed- チャートの表示に使用される行の最大数を制限します。 max_cols_analyzed- 分析できる連続変数の数を制限します。   Github: https://github.com/AutoViML/AutoViz   2. 実験 …

Autoviz: データ自動可視化 Read More »

Pulearnでの陽性のラベルとラベルなしデータの分類分析

  目次 1. Pulearnの概要 2. 実験 2.1 データロード 2.2 SVCモデル 2.3 BaggingPuClassifierのSVCモデル 3. まとめ   1.Pulearnの概要 Pu learningとは Learning from Positive and Unlabeled dataの英語略称で、陽性のラベルとラベルなしデータで学習です。通常の二項分類分析には、1はラベル陽(positive)、0は陰性(negative)であるデータセットです。一方で、0は陰性ではなく、明示的に与えられないデータもあり、そのようなデータセットはpu learningの手法を利用します。   今回の記事では、pulerningを実験したいと思います。   論文:https://cseweb.ucsd.edu//~elkan/posonly.pdf 資料:https://pulearn.github.io/pulearn/   2.実験 環境:Google Colab データセット:陽性のラベルとラベルなしデータセットを見つけないので、scikit-learnの二項分類のbreast_cancerのデータセットにします。 モデル: SVCモデル vs BaggingPuClassifier SVCモデル   2.1 データロード ライブラリのインストール !pip install pulearn   データロードします。 569件のデータは陽性のラベルが357件あります。 import pandas as pd import numpy as np from sklearn.datasets import load_breast_cancer   cancer = load_breast_cancer() data = pd.DataFrame(np.c_[cancer[‘data’], cancer[‘target’]], columns= np.append(cancer[‘feature_names’], [‘target’]))   X = data.drop(columns=[‘target’]) …

Pulearnでの陽性のラベルとラベルなしデータの分類分析 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 »

大規模データのクラスター分析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 »

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 »

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

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 »