少ないコードで機械学習プロットを作成するための Yellowbrick
データの視覚化は、機械学習において重要な役割を果たします。
機械学習におけるデータ視覚化のユースケースには、次のものがあります。
- ハイパーパラメータ調整
- モデル性能評価
- モデルの仮定の検証
- 外れ値の検索
- 最も重要な機能の選択
- 特徴間のパターンと相関関係の特定
上記の機械学習の重要事項に直接関係するビジュアライゼーションは、 機械学習の視覚化.
機械学習のビジュアライゼーションの作成は、Python でさえ多くのコードを記述する必要があるため、複雑なプロセスになることがあります。 しかし、Python のオープンソースのおかげで イエローブリック ライブラリを使用すると、複雑な機械学習の視覚化も少ないコードで作成できます。 そのライブラリは Scikit-learn API を拡張し、Scikit-learn では提供されない視覚的な診断のための高レベルの機能を提供します。
今日は、次の種類の機械学習の視覚化、そのユース ケース、およびイエローブリックの実装について詳しく説明します。
Yellowbrick ML ビジュアライゼーション
-----------------------------
01. 主成分プロット
02. 検証曲線
03. 学習曲線
04. エルボープロット
05. シルエットプロット
06. クラスの不均衡プロット
07. 残差プロット
08. 予測誤差プロット
09. クックの距離プロット
10. 機能の重要性のプロット
インストール
Yellowbrick のインストールは、次のコマンドのいずれかを実行することで実行できます。
- ピップ パッケージインストーラー:
pip インストールイエローブリック
- コンダ パッケージインストーラー:
conda install -c Districtdatalabs yellowbrick
イエローブリックの使用
Yellowbrick ビジュアライザーには、Scikit-learn に似た構文があります。 ビジュアライザーは、データから学習して視覚化を生成するオブジェクトです。 多くの場合、Scikit-learn estimator で使用されます。 ビジュアライザーをトレーニングするには、その fit() メソッドを呼び出します。
プロットの保存
Yellowbrick ビジュアライザーを使用して作成されたプロットを保存するには、次のように show() メソッドを呼び出します。 これにより、プロットが PNG ファイルとしてディスクに保存されます。
Visualizer.show(outpath="プロットの名前.png")
使用法
主成分プロットは、2D または 3D 散布図で高次元データを視覚化します。 したがって、このプロットは、高次元データの重要なパターンを識別するのに非常に役立ちます。
イエローブリックの実装
従来の方法でこのプロットを作成するのは、複雑で時間がかかります。 最初に PCA をデータセットに適用してから、matplotlib ライブラリを使用して散布図を作成する必要があります。
代わりに、Yellowbrick の PCA ビジュアライザー クラスを使用して、同じ機能を実現できます。 主成分分析法を利用し、データセットの次元を削減し、2 ~ 3 行のコードで散布図を作成します。 PCA() クラスでいくつかのキーワード引数を指定するだけです。
これをさらに理解するために、例を挙げてみましょう。 ここでは、 乳がん データセット(を参照) 引用 最後に) 30 個の特徴と 569 つのクラスの XNUMX 個のサンプル (悪性 および 良性)。 データは高次元 (30 個の特徴) であるため、PCA をデータセットに適用しない限り、元のデータを 2D または 3D 散布図にプロットすることはできません。
次のコードは、Yellowbrick の PCA ビジュアライザーを利用して 2 次元データセットの 30D 散布図を作成する方法を説明しています。
設定して 3D 散布図を作成することもできます。 projection=3
PCA() クラスで。
PCA ビジュアライザーの最も重要なパラメーターは次のとおりです。
- 規模: ブール、デフォルト
True
. これは、データをスケーリングする必要があるかどうかを示します。 PCA を実行する前に、データをスケーリングする必要があります。 詳しくはこちら こちら. - 投影: int、デフォルトは 2 です。
projection=2
、2D 散布図が作成されます。 いつprojection=3
、3D 散布図が作成されます。 - クラス: リスト、デフォルト
None
. これは、y の各クラスのクラス ラベルを示します。 クラス名は凡例のラベルになります。
使用法
検証曲線は、 トレーニングと検証セットのハイパーパラメータ。 曲線を見ることで、特定のハイパーパラメータの指定された値に対するモデルのオーバーフィッティング、アンダーフィッティング、およびちょうどいい条件を判断できます。 一度に調整するハイパーパラメータが複数ある場合、検証曲線は使用できません。 つまり、グリッド検索またはランダム検索を使用できます。
イエローブリックの実装
従来の方法で検証曲線を作成するのは、複雑で時間がかかります。 代わりに、Yellowbrick の ValidationCurve ビジュアライザーを使用できます。
Yellowbirck で検証曲線をプロットするには、同じものを使用してランダム フォレスト分類器を作成します。 乳がん データセット(を参照) 引用 最後に)。 の影響をプロットします。 max_depth ランダム フォレスト モデルのハイパーパラメータ。
次のコードは、Yellowbrick の ValidationCurve ビジュアライザーを利用して、 乳がん データセット。
モデルは、 max_depth 6 の値。 max_depth=6
、モデルはトレーニングデータに非常によく適合し、新しい目に見えないデータにもよく一般化します.
ValidationCurve ビジュアライザーの最も重要なパラメーターは次のとおりです。
- 推定器: これは、デシジョン ツリー、ランダム フォレスト、サポート ベクター マシンなど、任意の Scikit-learn ML モデルにすることができます。
- パラメータ名: これは、監視するハイパーパラメータの名前です。
- パラメータ範囲: これには、 パラメータ名.
- 履歴書: int は、交差検証の分割数を定義します。
- 採点: ひも、 モデルのスコアリング方法が含まれています。 分類には、 精度 が好ましいです。
使用法
学習曲線は、エポック数またはトレーニング インスタンス数に対するトレーニングおよび検証エラーまたは精度をプロットします。 学習曲線と検証曲線は同じように見えると思われるかもしれませんが、反復回数は学習曲線の x 軸にプロットされ、ハイパーパラメーターの値は検証曲線の x 軸にプロットされます。
学習曲線の用途は次のとおりです。
- 学習曲線は検出に使用されます アンダーフィッティング, 過適合 および ちょうどいい モデルの条件。
- 学習曲線は、識別するために使用されます s収束性が低い, 振動している, 発散振動 および 適切な収束 ニューラル ネットワークまたは ML モデルの最適な学習率を見つけるときのシナリオ。
- 学習曲線を使用して、トレーニング データを追加することでモデルにどの程度のメリットがあるかを確認します。 このように使用すると、x 軸はトレーニング インスタンスの数を示します。
イエローブリックの実装
従来の方法で学習曲線を作成することは、複雑で時間がかかります。 代わりに、Yellowbrick の LearningCurve ビジュアライザーを使用できます。
Yellowbirck で学習曲線をプロットするには、同じものを使用してサポート ベクター分類器を作成します。 乳がん データセット(を参照) 引用 最後に)。
次のコードは、Yellowbrick の LearningCurve ビジュアライザーを利用して、 乳がん データセット。
トレーニング インスタンスを追加しても、モデルにはメリットがありません。 モデルは、569 個のトレーニング インスタンスで既にトレーニングされています。 175 のトレーニング インスタンスの後、検証の精度は向上していません。
LearningCurve ビジュアライザーの最も重要なパラメーターは次のとおりです。
- 推定器: これは、デシジョン ツリー、ランダム フォレスト、サポート ベクター マシンなど、任意の Scikit-learn ML モデルにすることができます。
- 履歴書: int は、交差検証の分割数を定義します。
- 採点: ひも、 モデルのスコアリング方法が含まれています。 分類には、 精度 が好ましいです。
使用法
エルボー プロットは、K-Means クラスタリングで最適なクラスター数を選択するために使用されます。 モデルは、折れ線グラフでエルボが発生するポイントに最もよく適合します。 エルボーは、チャートの変曲点です。
イエローブリックの実装
従来の方法でエルボー プロットを作成するのは、複雑で時間がかかります。 代わりに、Yellowbrick の KElbowVisualizer を使用できます。
Yellowbirck で学習曲線を描くために、以下を使用して K-Means クラスタリング モデルを構築します。 アイリス データセット(を参照) 引用 最後に)。
次のコードは、Yellowbrick の KElbowVisualizer を利用して、 アイリス データセット。
肘 k=4 で発生します (破線で注釈が付けられています)。 このプロットは、モデルの最適なクラスター数が 4 であることを示しています。つまり、モデルは 4 つのクラスターで適切に適合しています。
KElbowVisualizer の最も重要なパラメーターは次のとおりです。
- 推定器: K-Means モデル インスタンス
- k: int またはタプル。 整数の場合、(2, k) の範囲でクラスターのスコアを計算します。 タプルの場合、(3, 11) など、指定された範囲内のクラスターのスコアが計算されます。
使用法
シルエット プロットは、K-Means クラスタリングで最適なクラスター数を選択し、クラスターの不均衡を検出するために使用されます。 このプロットは、エルボー プロットよりも非常に正確な結果を提供します。
イエローブリックの実装
従来の方法でシルエット プロットを作成するのは、複雑で時間がかかります。 代わりに、Yellowbrick の SilhouetteVisualizer を使用できます。
Yellowbirck でシルエット プロットを作成するには、以下を使用して K-Means クラスタリング モデルを構築します。 アイリス データセット(を参照) 引用 最後に)。
次のコード ブロックは、Yellowbrick の SilhouetteVisualizer を利用して、 アイリス 異なる k (クラスター数) 値を持つデータセット。
K = 2
KMeans() クラスのクラスター数を変更することで、上記のコードをさまざまなタイミングで実行して、k=3、k=4、および k=5 のときにシルエット プロットを作成できます。
K = 3
K = 4
K = 5
シルエット プロットには、クラスターごとに XNUMX つのナイフ形状が含まれます。 各ナイフ形状は、クラスター内のすべてのデータ ポイントを表すバーによって作成されます。 したがって、ナイフ形状の幅は、クラスター内のすべてのインスタンスの数を表します。 バーの長さは、各インスタンスのシルエット係数を表します。 破線はシルエット スコアを示します — 出典: ハンズオン K-Means クラスタリング (私が書いた)。
ナイフ形状の幅がほぼ等しいプロットは、クラスターがバランスが取れており、各クラスター内にほぼ同じ数のインスタンスがあることを示しています。これは、K-Means クラスタリングで最も重要な仮定の XNUMX つです。
ナイフの形をしたバーが破線を延長している場合、クラスターは適切に分離されています。これは、K-Means クラスタリングのもう XNUMX つの重要な仮定です。
k=3 の場合、クラスターはバランスが取れており、適切に分離されています。 したがって、この例の最適なクラスター数は 3 です。
SilhouetteVisualizer の最も重要なパラメーターは次のとおりです。
- 推定器: K-Means モデル インスタンス
- 色: 各ナイフ形状に使用される色のコレクションです。 「yellowbrick」または「Accent」、「Set1」などの Matplotlib カラー マップ文字列の XNUMX つ。
使用法
クラスの不均衡プロットは、分類データセットのターゲット列のクラスの不均衡を検出します。
クラスの不均衡は、あるクラスが他のクラスよりもはるかに多くのインスタンスを持っている場合に発生します。 たとえば、スパム メール検出に関連するデータセットには、「スパムではない」カテゴリのインスタンスが 9900 個あり、「スパム」カテゴリのインスタンスは 100 個しかありません。 モデルはマイノリティ クラスをキャプチャできません ( スパム カテゴリー)。 この結果、クラスの不均衡が発生した場合、モデルはマイノリティ クラスを正確に予測できなくなります — 出典: 舞台裏でひそかに起きている機械学習と深層学習の過ちトップ 20 (私が書いた)。
イエローブリックの実装
従来の方法でクラスの不均衡プロットを作成するのは、複雑で時間がかかります。 代わりに、Yellowbrick の ClassBalance ビジュアライザーを使用できます。
Yellowbirck でクラスの不均衡プロットをプロットするには、 乳がん データセット (分類データセット、参照 引用 最後に)。
次のコードは、Yellowbrick の ClassBalance ビジュアライザーを利用して、クラスの不均衡プロットを作成する方法を説明しています。 乳がん データセット。
には 200 を超えるインスタンスがあります。 悪性 クラスと 350 を超えるインスタンス 良性 クラス。 したがって、インスタンスは XNUMX つのクラス間で均等に分散されていませんが、ここではクラスの不均衡はあまり見られません。
ClassBalance ビジュアライザーの最も重要なパラメーターは次のとおりです。
- ラベル: リスト、ターゲット列の一意のクラスの名前。
使用法
線形回帰の残差プロットは、回帰モデルの誤差の分散を分析することにより、残差 (観測値 - 予測値) が無相関 (独立) であるかどうかを判断するために使用されます。
残差プロットは、予測に対して残差をプロットすることによって作成されます。 予測と残差の間に何らかのパターンがある場合、適合した回帰モデルが完全ではないことが確認されます。 ポイントが x 軸の周りにランダムに分散している場合、回帰モデルはデータにうまく適合しています。
イエローブリックの実装
従来の方法で残差プロットを作成するのは、複雑で時間がかかります。 代わりに、Yellowbrick の ResidualsPlot ビジュアライザーを使用できます。
Yellowbirck で残差プロットをプロットするには、 広告運用 (広告.csvを参照してください 引用 最後に)データセット。
次のコードは、Yellowbrick の ResidualsPlot ビジュアライザーを使用して、残差プロットを作成する方法を説明しています。 広告運用 データセット。
残差プロットでは、予測と残差の間にある種の非線形パターンがはっきりと見えます。 当てはめた回帰モデルは完璧ではありませんが、十分です。
ResidualsPlot ビジュアライザーの最も重要なパラメーターは次のとおりです。
- 推定器: これは、任意の Scikit-learn リグレッサーにすることができます。
- 履歴: ブール、デフォルト
True
. 別の仮定を確認するために使用される残差のヒストグラムをプロットするかどうか — 残差は、平均 0 と固定標準偏差でほぼ正規分布しています。
使用法
線形回帰の予測誤差プロットは、回帰モデルを評価するために使用されるグラフィカルな方法です。
予測エラー プロットは、実際のターゲット値に対して予測をプロットすることによって作成されます。
モデルが非常に正確な予測を行う場合、ポイントは 45 度の線上にあるはずです。 それ以外の場合、ポイントはその線の周りに分散しています。
イエローブリックの実装
従来の方法で予測誤差プロットを作成するのは、複雑で時間がかかります。 代わりに、Yellowbrick の PredictionError ビジュアライザーを使用できます。
Yellowbirck で予測誤差プロットをプロットするには、 広告運用 (広告.csvを参照してください 引用 最後に)データセット。
次のコードは、Yellowbrick の PredictionError ビジュアライザーを使用して、残差プロットを作成する方法を説明しています。 広告運用 データセット。
ポイントは正確に 45 度の線上にはありませんが、モデルは十分です。
PredictionError ビジュアライザーの最も重要なパラメーターは次のとおりです。
- 推定器: これは、任意の Scikit-learn リグレッサーにすることができます。
- 身元: ブール、デフォルト
True
. 45 度の線を描画するかどうか。
使用法
クックの距離は、線形回帰に対するインスタンスの影響を測定します。 影響が大きいインスタンスは外れ値と見なされます。 多数の外れ値を含むデータセットは、前処理なしの線形回帰には適していません。 簡単に言えば、クックの距離プロットを使用して、データセット内の外れ値を検出します。
イエローブリックの実装
従来の方法でクック距離プロットを作成するのは、複雑で時間がかかります。 代わりに、Yellowbrick の CooksDistance ビジュアライザーを使用できます。
Yellowbirck でクックの距離プロットをプロットするには、 広告運用 (広告.csvを参照してください 引用 最後に)データセット。
次のコードは、Yellowbrick の CooksDistance ビジュアライザーを利用して、 広告運用 データセット。
しきい値 (横の赤) 線を拡張する観測がいくつかあります。 それらは外れ値です。 したがって、回帰モデルを作成する前にデータを準備する必要があります。
CooksDistance ビジュアライザーの最も重要なパラメーターは次のとおりです。
- 描画しきい値: ブール、デフォルト
True
. しきい値線を描画するかどうか。
使用法
特徴の重要度プロットは、ML モデルを作成するために最低限必要な重要な特徴を選択するために使用されます。 すべての機能がモデルに同じように寄与するわけではないため、重要度の低い機能をモデルから削除できます。 これにより、モデルの複雑さが軽減されます。 単純なモデルは、トレーニングと解釈が容易です。
特徴の重要度プロットは、各特徴の相対的な重要度を視覚化します。
イエローブリックの実装
従来の方法で特徴重要度プロットを作成するのは、複雑で時間がかかります。 代わりに、Yellowbrick の FeatureImportances ビジュアライザーを使用できます。
Yellowbirck で機能の重要度プロットをプロットするには、 乳がん データセット(を参照) 引用 最後に) 30 の機能が含まれています。
次のコードは、Yellowbrick の FeatureImportances ビジュアライザーを利用して、 乳がん データセット。
データセット内の 30 個のフィーチャすべてがモデルに大きく貢献しているわけではありません。 データセットから小さなバーを持つ機能を削除し、選択した機能でモデルを再調整できます。
FeatureImportances ビジュアライザーの最も重要なパラメーターは次のとおりです。
- 推定器: 任意 いずれかをサポートする scikit-learn エスティメーター
feature_importances_
属性またはcoef_
属性。 - 相対的: ブール、デフォルト
True
. 相対的重要度をパーセンテージでプロットするかどうか。 もしもFalse
、機能の重要度の生の数値スコアが表示されます。 - 絶対: ブール、デフォルト
False
. 負の符号を避けて係数の大きさのみを考慮するかどうか。
- 主成分プロット: PCA()、使用法 — 高次元データの重要なパターンを識別するために使用できる 2D または 3D 散布図で高次元データを視覚化します。
- 検証曲線: 検証曲線()、使用法 — の影響をプロットします トレーニングと検証セットのハイパーパラメータ。
- 学習曲線: 学習曲線()、使用法 — 検出 アンダーフィッティング, 過適合 および ちょうどいい モデルの条件、識別 s収束性が低い, 振動している, 発散振動 および 適切な収束 ニューラル ネットワークの最適な学習率を見つけるときのシナリオ。トレーニング データを追加することでモデルがどれだけ利益を得られるかを示します。
- エルボー プロット: KElbowVisualizer(), 使用法 — K-Means クラスタリングで最適なクラスター数を選択します。
- シルエット あらすじ: シルエットビジュアライザー()、使用法 — K-Means クラスタリングで最適なクラスター数を選択します。K-Means クラスタリングでクラスターの不均衡を検出します。
- クラスの不均衡 あらすじ: クラスバランス()、使用法 — 分類データセットのターゲット列のクラスの不均衡を検出します。
- 残差プロット: 残差プロット()、使用法 — 回帰モデルの誤差の分散を分析することにより、残差 (観測値 - 予測値) が相関していない (独立している) かどうかを判断します。
- 予測誤差プロット: 予測エラー()、使用法 — 回帰モデルを評価するために使用されるグラフィカルな方法。
- クックの距離プロット: クック距離()、使用法 — インスタンスのクック距離に基づいて、データセット内の外れ値を検出します。
- 機能の重要度プロット: 機能の重要性()、使用法 — ML モデルを生成するために、各機能の相対的な重要性に基づいて、最低限必要な重要な機能を選択します。
本日の投稿はこれでおしまいです。
ご質問やフィードバックがありましたらお知らせください。
次に読む (推奨)
- 1 行のコードを使用して機能の重要性を視覚化する Yellowbrick
- 検証曲線の説明 — 単一のハイパーパラメータの影響をプロットする
- 学習曲線をプロットしてニューラル ネットワークのトレーニング パフォーマンスを分析する
- ハンズオン K-Means クラスタリング
ライターとして応援してください
この記事を読んで楽しんでいただければ幸いです。ライターとして私をサポートしたい場合は、ぜひご検討ください 会員登録する Medium に無制限にアクセスできるようになります。月額わずか 5 ドルで、会費の一部を私が受け取ります。
いつもご支援いただき誠にありがとうございます!次の記事でお会いしましょう。皆さんも楽しく学んでください!
乳がんデータセット情報
- 引用: Dua, D. および Graff, C. (2019)。 UCI機械学習リポジトリ[http://archive.ics.uci.edu/ml]。 カリフォルニア大学アーバイン校:カリフォルニア大学情報コンピュータサイエンス学部。
- 情報源: https://archive.ics.uci.edu/ml/datasets/breast+cancer+wisconsin+(diagnostic)
- ライセンス: ウィリアム・H・ウォルバーグ博士 (一般外科です。
ウィスコンシン大学)、 W・ニック・ストリート (情報科学部
ウィスコンシン大学) および オルヴィ・L・マンガサリアン (ウィスコンシン大学コンピュータ サイエンス学部) は、このデータセットの著作権を保持しています。 Nick Street は、このデータセットを一般に寄付しました。 Creative Commons Attribution4.0国際ライセンス (4.0てCC)。 さまざまなデータセット ライセンスの種類について詳しく知ることができます こちら.
アイリス データセット情報
- 引用: Dua, D. および Graff, C. (2019)。 UCI機械学習リポジトリ[http://archive.ics.uci.edu/ml]。 カリフォルニア大学アーバイン校:カリフォルニア大学情報コンピュータサイエンス学部。
- 情報源: https://archive.ics.uci.edu/ml/datasets/iris
- ライセンス: RAフィッシャー このデータセットの著作権は . Michael Marshall は、このデータセットを一般に寄付しました。 クリエイティブ コモンズ パブリック ドメイン献身ライセンス (CC0)。 さまざまなデータセット ライセンスの種類について詳しく知ることができます こちら.
広告データセット情報
参考文献
10 年に知っておくべき 2023 の素晴らしい機械学習ビジュアライゼーションソースから再公開 https://towardsdatascience.com/10-amazing-machine-learning-visualizations-you-Should-know-in-2023-528282940582?source=rss—-7f60cf5620c9— 4 https://towardsdatascience.com/feed 経由
<!–
–>