機械学習

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 »

星クラスター分析(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 »

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 »