scikit-learn

manifold.trustworthinessの解説

manifoldのtrustworthinessとは、多次元空間で二つのデータは似ているかどうか判断のモジュールです。目:manifoldの概要 | trustworthiness | 実験

半教師あり学習

  目次 1. 半教師あり学習の概要 1.1 半教師あり学習とは 1.2 ラベル拡散法 (label spreading) 2. 実験 2.1 環境準備 2.2 データ準備 2.3 ラベル拡散法モデル学習 2.4 分類モデル学習 2.5 まとめ   1. 半教師あり学習の概要 1.1 半教師あり学習とは 半教師あり学習(Semi-Supervised Learning)とは教師あり学習と教師なし学習を組み合わせて学習する方法です。教師あり学習はラベル付きデータでモデルを作成します。例えば、ネゴの画像と犬の画像の分類問題です。教師なし学習はラベルなしデータでモデルを作成します。例えば、複数画像の特徴から、クラスターを作成します。 1.2 ラベル拡散法 (label spreading) 正確なモデルを予測するための十分なラベル付きデータがなく、より多くのデータを取得するための能力またはリソースがない場合は、半教師あり手法を使用してトレーニングデータの規模を大きくすることができます。半教師あり学習アルゴリズムを使用してデータにラベルを付け、新しくラベルが付けられたデータセットでモデルを再トレーニングします。   scikit-learnにはラベル拡散法 (label spreading) が実装されており,あるデータのラベルを予測する事によってラベルのないデータにコピーする (伝播させる) ことで,少量のラベル付きデータからモデルを学習します。   sklearn.semi_supervised.LabelSpreading(kernel=’rbf’, *, gamma=20, n_neighbors=7, alpha=0.2, max_iter=30, tol=0.001, n_jobs=None) 2. 実験 データセット:iris (アヤメの種類と特徴量に関する分類データセット) モデル:ラベル拡散法 (label spreading) ⇒ランダムフォレスト モデル評価;Accuracy   2.1 環境準備 …

半教師あり学習 Read More »

Scikit-learnの新しい機械学習のアルゴリズHistGradientBoostingClassifier

目次 1. HistGradientBoostingClassifier 2. scikit-learnでのHistGradientBoostingClassifierのパラメータ 3. 実験 _3.1 データロード・加工 _3.2 データ前処理 _3.3 モデル作成 _3.4 モデル評価   1. HistGradientBoostingClassifier GradientBoostingTreeはヒストグラムベースの勾配ブースティング分類ツリーアルゴリズムです。この実装はMicrosoftのLightGBMに基づいており、並列化にOpenMPを利用しています。 大きなデータセット(n_samples> = 10000)の場合はGradientBoostingClassifierよりもはるかに高速です。この推定器は、欠測値(NaN)でも学習できます。Scikit-Learnのv0.21.1以降では、HistGradientBoostingを利用できます。   2. scikit-learnでのHistGradientBoostingClassifierのパラメータ sklearn.ensemble.HistGradientBoostingClassifier(loss=’auto’, *, learning_rate=0.1, max_iter=100, max_leaf_nodes=31, max_depth=None, min_samples_leaf=20, l2_regularization=0.0, max_bins=255, monotonic_cst=None, warm_start=False, early_stopping=’auto’, scoring=’loss’, validation_fraction=0.1, n_iter_no_change=10, tol=1e-07, verbose=0, random_state=None) loss{‘auto’, ‘binary_crossentropy’, ‘categorical_crossentropy’}, optional (default=’auto’) ブースティングプロセスで使用する損失関数: 「binary_crossentropy」は二項分類に使用されます マルチクラス分類の「categorical_crossentropy」。 「auto」は、データの性質に応じて、自動設定。 learning_ratefloat, optional (default=0.1) …

Scikit-learnの新しい機械学習のアルゴリズHistGradientBoostingClassifier Read More »

Scikit-learnを用いた階層的クラスタリング (Hierarchical clustering)の解説

目次 1. 階層的クラスタリングの概要 __1.1階層的クラスタリング (hierarchical clustering)とは __1.2所と短所 __1.3 凝集クラスタリングの作成手順 __1.4 sklearn のAgglomerativeClustering __1.5 距離メトリック (Affinity) __1.6 距離の計算(linkage) 2. 実験・コード __2.1 環境の準備 __2.2 データロード __2.3 Euclidean距離のモデル学習・可視化 __2.4 Manhattan距離のモデル学習・可視化 __2.5 Cosine距離のモデル学習・可視化 1.1 階層的クラスタリング (hierarchical clustering)とは 階層的クラスタリングとは、個体からクラスターへ階層構造で分類する分析方法の一つです。樹形図(デンドログラム)ができます。デンドログラムとは、クラスター分析において各個体がクラスターにまとめられていくさまを樹形図の形で表したもののことです。ツリーのルートは、すべてのデータをクラスターで分類しており、一番下の部分は1件のデータになっています。 左側の図はクラスタリングする前のデータ分布で例えばこれを階層型クラスタリングしたものが右側の図になります(gifで過程が見えるようになっています)。この樹形図のグラフをよく階層型クラスターと呼びます。 1.2 階層的クラスタリングの長所と短所 クラスタリング手法の中でもkmeanのような非階層型クラスタリングと比べた時に以下のメリットとデメリットがあります。 長所 ・特定の数のクラスター(すなわち、k平均)の仮定なし ・可視化でクラスタリングの様子が自分で確認できる 短所 ・ノイズや外れ値に敏感です。 ・分類の対象が多い場合はkmeanよりも遅くなりがちなことがある。 代表的な階層型クラスタリングアルゴリズムには2つあります。 凝集性(Agglomerative)—ボトムアップアプローチ。 多くの小さなクラスターから始め、それらを結合して大きなクラスターを作成します。 分割型(Divisive) —トップダウンアプローチ。 小さなクラスターに分割するのではなく、単一のクラスターから始めます。 1.3 凝集クラスタリングの作成手順 1. 個々のデータが,それぞれ孤立したクラスタを形成している状態から開始します。 2. 全てのクラスタ対の間の距離を計算し,最も近いクラスタ対を見つけます。最も近いクラスタを併合し,この新しいクラスタにします。 …

Scikit-learnを用いた階層的クラスタリング (Hierarchical clustering)の解説 Read More »

LogitBoostの解析

関連記事: NGBoost CatBoost LightGBM      目次 1. LogitBoostの概要 __1.1 LogitBoostとは __1.2 LogitBoostのライブラリ 2. 実験・コード __2.1 環境の準備 __2.2 ライブラリのインポート __2.3. データロード __2.4. データ加工 __2.5. モデル学習 __2.6. モデル評価 1. LogitBoostの概要 1.1 LogitBoostとは LogitBoostは、バイナリまたはマルチクラス分類アルゴリズムの一つになります(一応回帰も可能です)。LogitBoost と AdaBoost は、どちらも加法ロジスティック回帰を行うという点で似ています。違いは、AdaBoost が指数損失を最小化し、LogitBoost がロジスティック関数の損失関数を最小化するように学習する事です。 1.2 LogitBoostのライブラリ 下記のようにScikit-learnライクに使う事ができます。 logitboost.LogitBoost(base_estimator=None, n_estimators=50, weight_trim_quantile=0.05, max_response=4.0, learning_rate=1.0, bootstrap=False, random_state=None) パラメータの意味です。 base_estimator (object, optional (default=None)) classifierまたはregressorを指定することができます。 base_estimatorが指定されていない場合は、decision stump(分ける時に2値のフラグでわけます)が使用されます。 n_estimators …

LogitBoostの解析 Read More »

Pythonトップライブラリ2018

Pythonは、学習初期でも先人の作ったライブラリを利用することで、高速に開発が可能になります。 Pythonライブラリを管理する PyPi.org では、現在 100万以上のライブラリが公開され、現在も増加中です。 前回の記事は2018年の大人気のライブラリを紹介します。   年末でKdnuggetsがGithubの「星」と投稿者の人数とコメント数からトップ15のライブラリを発表しました。下記の図はGithubの「星」と投稿者の人数で表します。ては、ライブラリを軽いに紹介します。 1 – TensorFlow (投稿者 – 1757, コメント数 – 25756, 星 – 116765) Googleの機械学習/ディープラーニング/ネットワークライブラリです。柔軟なアーキテクチャにより、1つのAPIを使用してデスクトップ、サーバー、またはモバイルデバイスの1つ以上のCPUまたはGPUに計算を展開できます。またコードはやや書きにくいのが特徴になります。PyTorchおよびChainerの利点はDefine by Run(動的計算グラフ)と呼ばれる特徴です。Define by Runは入力データのサイズや次元数に合わせてニューラルネットワークの形や計算方法を変更することができます。       2 – pandas (投稿者  – 1360, コメント数 – 18441, 星 – 17388) 機械学習やディープラーニングの前処理のために、データの集計をするライブラリになります。数値や時系列のデータの操作や、データ構造をいじったりすることができます。また最近では、可視化も可能になってきています。     3 – scikit-learn (投稿者 – 1218, コメント数 – 23509, 星 – 32326) NumPy, SciPy や Matplotlib と互換性を持つように開発されてクラスタリングや回帰、分類器、次元圧縮、データの前処理をはじめとする、機械学習のアルゴリズムを幅広く実装しているライブラリです。   …

Pythonトップライブラリ2018 Read More »