What if you wanted to predict how many out of 100 employees will eat a donut at the office on Friday?What if you wanted to predict how many out of 100 employees will eat a donut at the office on Friday?What if you wanted to predict how many out of 100 employees will eat a donut at the office on Friday?What if you wanted to predict how many out of 100 employees will eat a donut at the office on Friday?従業員 100 人のうち何人が金曜日にオフィスでドーナツを食べるかを予測したい場合はどうすればよいでしょうか? JMPは非常に強力な統計検出ツールであり、さまざまな統計モデルの作成に優れています。 ただし、予測二項分類モデルのしきい値を包括的に評価したい場合は、複数のプラットフォームと複数の手順が必要になります。 あディスカバリーサミット2018講演では、分類モデルのしきい値を評価および選択する際の課題について説明します。 のチームに加わりました@KarenCそして@mia_stephensモデルの理解としきい値の選択を容易にするアドインを作成します。
のモデル分類エクスプローラー アドインモデルのカットオフとエラーのトレードオフを同時に視覚化する統合ダッシュボードを提供します。 モデルのしきい値を対話的に変更し、パフォーマンス測定、混同行列、ROC 曲線に反映された結果をすぐに確認できます。 このアドインは、リフト曲線や累積ゲイン曲線を表示し、分類コストに基づいて最適なしきい値を計算するためのカスタムの赤い三角オプションも実装しています。
添付のデータテーブルを使用して例を見てみましょう。 今日は金曜日のオフィスのドーナツの日で、従業員 100 人のうち何人がドーナツを食べるかを予測したいとします。 各人がドーナツを消費したかどうかに関するデータといくつかの予測変数を収集し、モデルを当てはめて消費の確率を推定します。 次に、各モデルのカットオフ ポイントに関連するトレードオフを調査します。 アイデアは、今後の金曜日のドーナツの無駄を最小限に抑えるためにカットオフを選択することです。 次の 3 つの列があります。
- Prob[Donut] は、個人がドーナツを消費する確率です。
- 消費量は、誰かがドーナツを食べたかどうかという実際の結果です。
- オプションの検証列があります
Input DataInput DataInput DataInput Data入力データ
データ
アドインをダウンロードしてインストールした後、Donuts Blog Example.jmp データ テーブルを開きます。 データは、ターゲットの結果の確率をモデル化する 1 つの数値連続列 (この場合は Prob[Donut] 列) が存在するようにフォーマットされています。 この列は、「確率式の保存」を使用してバイナリ結果の近似モデルを保存することで、JMP で作成できます。もう 1 つの必須列は、性格および名目としての実際の結果の状態であり、この場合は消費列です。 オプションで、検証カテゴリに基づいてプラットフォームに追加の出力を追加する検証列を追加できます。 使用する場合JMPプロこれは、[分析] -> [予測モデリング] -> [検証列の追加] に移動することで簡単に行うことができます。 検証列には 2 つまたは 3 つのカテゴリを含めることができ、数値で構成する必要があります。
Column CastingColumn CastingColumn CastingColumn Casting柱の鋳造
打ち上げ中
ステップ1: Prob[Donut] を X にキャストし、Consumption を Y にキャストします。 これら 2 つの列は必須です。
ステップ2:モデルが予測しているものなので、ターゲット レベルを「ドーナツ」に設定します。
ステップ 3:統計分析のアルファ レベルを設定します。デフォルトでは 0.05 のままです。
ステップ 4:右上には、特定のアプリケーション フィールドに基づいてパフォーマンス用語を選択するオプションがあります。これは、さまざまなメジャーのラベルに対する純粋に視覚的なオプションです。 この場合、「一般」のままにしておきます。
ステップ5:ビジュアル アクセシビリティ チェック ボックスは、グラフ上の色を区別する必要なく結果を解釈できるようにグラフィック出力を変更する機能です。これについてはここでは省略します。
ステップ6:これらの初期パラメータをすべて設定したら、「OK」をクリックしてプラットフォームを起動します。 データセットのサイズと検証列を使用したかどうかによっては、起動に数秒かかる場合があります。
結果 – 生成されたデータテーブル
プラットフォームに加えて、新しいデータテーブルもリリースされます。 このデータ テーブルは Prob[Donut] 列と Consumption 列を取り、各人のドーナツを食べる確率について、すべての人々をループして現在のデータを比較することにより、真陽性、真陰性、偽陽性、および偽陰性のカウントを作成します。その人の実際の消費量と他の人に対する消費確率。
これらの数から、実際にドーナツを消費した人を正確に識別するモデルの能力である感度、つまり真陽性率の列が作成されます。 特異度、つまり真陰性率は、ドーナツを消費していない個人を正確に識別するモデルの能力です。
誤分類率は、その行の観測値の合計に対する偽陽性と偽陰性の合計です。
検証列を使用した場合は、すべてのサブセットが結合された 1 つのテーブルとともに、検証カテゴリごとにバックグラウンドで個別のテーブルが開かれます。
Generated Data TableGenerated Data TableGenerated Data TableGenerated Data Table生成されたデータテーブル
結果 – レポートウィンドウ
プラットフォームに戻ります。 最初に表示されるグラフは標準 ROC 曲線で、1 - 特異性に対する感度を、95% Wald 信頼区間で曲線の下の面積とともにグラフ化しています。 右側には、バイナリ分類結果の分布を視覚的に示すクラスター グラフがあります。 Y 軸はモデル化されたカテゴリを示し、X 軸はモデルのスコアを示します。 垂直スライダーは現在のしきい値にあります。 赤い点はモデルがドーナツ消費量を誤って予測した点ですが、青い点は正しく予測されました。
Interactivity of the PlatformInteractivity of the PlatformInteractivity of the PlatformInteractivity of the Platformプラットフォームのインタラクティブ性2 行目には数値解析があります。 パフォーマンス測定値の表には、7 つの異なる測定値の推定値と信頼区間が示されています。 有病率とは、実際にドーナツを食べたことがある従業員の割合です。 真陽性率/感度と真陰性率/特異度については以前に説明したので、ここにも含まれます。 陽性的中率 (PPV) は、ドーナツの陽性結果が実際のドーナツ消費をどの程度予測するかとして解釈されます。 NPV はその逆で、マイナスのドーナツ結果が実際のドーナツ消費不足をどの程度予測するかを示します。 陽性尤度比 (LR+) は、検査でドーナツの摂取に関して陽性反応が得られた場合に、ドーナツの摂取の確率がどの程度増加するかを表します。 LR- はその逆で、テストでドーナツが消費されなかった場合に、ドーナツが消費される確率がどの程度減少するかを表します。 パフォーマンス メトリクスの右側には、TP、TN、FP、および FN のレートと数を示す 2x2 混同行列が表示されます。 その隣に誤分類率とマシューズ相関係数 (MCC) 。 MCC はバイナリ分類品質のもう 1 つの尺度で、値 1 はドーナツを食べると予測されたすべての人が実際にドーナツを食べたことを意味し、0 はモデルがランダム分類と同等であることを意味し、-1 は完全な誤分類を意味します。食べる人は一個も食べませんでした。 一番下の行のエラー トレードオフ カーブには、偽陽性と偽陰性のエラー カウントの折れ線グラフが表示されます。カスタムの赤い三角オプションを使用して、Y 軸をカウントではなくレートに変更できます。
Visual Accessibility Turned OnVisual Accessibility Turned OnVisual Accessibility Turned OnVisual Accessibility Turned On視覚的なアクセシビリティがオンになっています
これらの表やグラフはそれ自体でも優れていますが、真の価値はインタラクティブな側面から生まれます。 分類モデルのパフォーマンス測定は、しきい値またはカットオフに基づいています。 しきい値を変更すると、パフォーマンス メトリックが変化します。 状態対スコアおよびエラーのトレードオフ カーブでは、モデルのしきい値を示す水平線にドラッグ マーカーがあります。 これらの線のいずれかをつかんで移動して、しきい値を変更し、パフォーマンス測定を更新します。
あるいは、混同行列の上にあるアウトライン ボックス「確率しきい値の設定」の下にあるスライダーまたは編集可能な数値ボックスを使用して、しきい値を変更します。 これらのドラッグ マーカーとスライダーはすべて同期されており、1 つを移動すると、他のものも同様に移動します。 これらのスライダーが行っていることは、新しい確率のしきい値、つまりモデルがドーナツを消費すると予測するかどうかの二値分類を決定するポイントを設定することです。 カットオフを増やすと、モデルのドーナツ消費量を予測するためのより厳しいしきい値が設定され、その逆も同様です。 たとえば、しきい値を 0.8 に設定した場合、モデルがドーナツを消費すると予測するには、Prob[Donut] > 0.8 が必要です。そうでない場合は、ドーナツを消費しないと予測されます。
追加機能
「誤分類を最小限に抑える」ボタンは、偽陽性と偽陰性の合計を最小限に抑える最適なカットオフを設定します。 ひいては、MCC も最大化します。
Minimizing MisclassificationMinimizing MisclassificationMinimizing MisclassificationMinimizing Misclassification誤分類を最小限に抑える
上部にあるカスタムの「しきい値/カットオフ分析」赤い三角形では、Pro ユーザーの場合は累積ゲイン カーブに加えて、出力の下部にリフト カーブを表示できます。 これらのオプションは、検証列を使用する場合、パフォーマンス測定の赤い三角の下の各検証カテゴリでも利用できます。
Expanding with Further AnalysisExpanding with Further AnalysisExpanding with Further AnalysisExpanding with Further Analysisさらなる分析による拡張
また、メニュー オプション「コストベースのしきい値」も表示されます。これにより、分類コストに基づいて最適なしきい値を計算する新しいウィンドウが開きます。 たとえば、ドーナツ消費率が 0.5、TP および TN 分類コストが 0、FP コストが 1、FN コストが 3 であるとします。 この例では、偽陰性のドーナツ分類は、偽陽性の場合と比べて 3 倍コストがかかります。おそらく人々は、ドーナツが余っているよりも不足していることに 3 倍腹を立てるでしょう。 これらのコストを考慮すると、最適なしきい値は 0.25 であり、数値編集ボックスに手動で入力できます。
Cost Based ThresholdingCost Based ThresholdingCost Based ThresholdingCost Based Thresholdingコストベースのしきい値設定最後に、新しい分類列を元のデータ テーブルに保存するオプションがあります。これにより、現在のカットオフに基づいて新しい消費列が作成されます。
Saving a New Classification ColumnSaving a New Classification ColumnSaving a New Classification ColumnSaving a New Classification Column新しい分類列の保存
結論
このアドインは、ドーナツの消費量や製造における欠陥率の予測など、あらゆる分類モデルのカットオフを評価するための非常に強力なツールです。 すべてのグラフィックスとテーブルを 1 つの高度にインタラクティブなプラットフォームに配置することで、データの視覚化とモデルのしきい値の設定が簡単になります。
このアドインを使用して評価しているモデルの種類は何ですか? 何かご提案がございましたら、下のコメント欄でお知らせください。
では、理想的なカットオフポイントを見つけたら、「ドーナツを何個注文するか」という最初の質問にどう答えればよいでしょうか。今後の金曜日のドーナツの無駄を最小限に抑えるため「?
この非常に貴重なアドインをアクティブ化すると、すべての人々をループして現在の人の実際の消費量と消費確率を比較することによって、真陽性、真陰性、偽陽性、および偽陰性のカウントを含むテーブルが取得されません。他の個人。
また、「確率しきい値の設定」セクションに「誤分類を最小限に抑える」ボタンも見つかりません。
最後に、MCC は計算されません (マシューズ相関係数)。
F1 スコアが自動的に計算されるかどうか知っている人はいますか?
おそらく、その間に更新バージョンがあるでしょうか?
私はこれが 10 月に開催された JMP カンファレンスでデモンストレーションされているのを見ました。さて、いよいよ実際のデータを使って試してみます。データ ファイルから n=1000 のサンプルを採取しました。これは約 n=10,000 です。とにかく、私の Y,response 変数は典型的な 0/1 二項式です。クリックして「Y,Response」ボックスに入力すると、「JMP Alert」メッセージが表示されます --> Subscript Range in access or ratings of 'Assign' , newCol[i] = /*###*/"No 「/*###*/」。それでも変数を入力できるので、確率の列を「S、予測値」に接続します。「実行」をクリックすると、「名前が解決されていません: 'targetselect' のアクセスまたは評価におけるターゲット選択、targetselect/*###*/」というメッセージが表示されます。そして出力はありません。何か案は?
アプリチームからのメモ: 大規模なデータセットがある場合は、しばらくお待ちください。 スクリプトが実行されます。
これは、予測モデラーにとって重要な課題に対する非常に優れた解決策のように見えます。