で『Technically Speaker』の最新版では、モデルのパフォーマンスを向上させるために、テキスト マイニングから得られた変数を予測モデルに組み込む方法について説明しました。 (プレゼンテーションをまだ見ていない場合は、読み進める前に見てください。) このケーススタディでは、予測モデリングよりもテキスト マイニングに重点を置いているため、説明されていない 2 つの主要なモデリング手順を見てみましょう。モデルを検証し、新しい観察結果をスコアリングします。
モデルの検証
予測モデリングでは、モデルを使用して予測を生成する前に、モデルの精度をテストすることが重要です。 私たちは、モデルが「過剰適合」していないことを確認し、トレーニングされたデータを正確にキャプチャしますが、これまでに見たことのないデータに対して不正確な予測を生成しないようにしたいと考えています。 過剰適合の概念を捉えた素晴らしいミームが、しばらくの間インターネット上で広まっています。

過学習をチェックする 1 つの方法は、データのサブセットを確保または「ホールドアウト」し、残りのデータでモデルをトレーニングしてから、ホールドアウト セットでモデルをテストすることです。 トレーニング データとホールドアウト データの両方でモデルの予測パフォーマンスを測定し、トレーニング セットからテスト セットへの精度の大幅な低下が見られる場合、モデルが過剰適合している証拠が得られます。
実際には、ケーススタディでブートストラップ フォレスト モデルを構築するときにこのホールドアウト検証手順を使用しましたが、説明は省略しました。 検証手順で得られたモデルの適合度の表を以下に示します。 JMPトレーニングとテストセットのパフォーマンスを比較するための多数の尺度を提供します (興味がある場合は、それらについて読んでください)ここ);プレゼンテーションでテスト グループのエントロピー RS2 乗と誤分類率を確認しました。 どの測定値もトレーニングからテストまでのパフォーマンスの急激な低下を示していないため (ただし、いくつかの測定値で若干の低下はありますが、これは珍しいことではありません)、モデルが過剰適合ではないと結論付けられます。

お気づきかと思いますが、この表には「検証」列もあります。 それは何ですか? 実際には、ここではデータをトレーニング、検証、テストの 3 つのサブセットに分割します。 ブートストラップ フォレスト モデルでは、トレーニング セットは各デシジョン ツリーで最適な分割を見つけるために使用され、検証セットは各ツリーでの新しい分割の作成をいつ停止するか、および新しいツリーの作成をいつ停止するかを決定するために使用されます。 つまり、新しい分割またはツリーが検証セットのパフォーマンスを向上させる限り、モデル フィッティング アルゴリズムは継続します。 検証セットのパフォーマンスが横ばいになると、アルゴリズムは停止します。 (エントロピー RS2 乗統計を覚えていますか? これが、このプロセスで使用される検証統計です。) アルゴリズムが停止すると、結果のモデルの精度がテスト セットを使用して評価されます。 でJMPプロで説明したように、これはすべて、モデル仕様ウィンドウで検証列を指定することによって自動的に行われます。プレゼンテーション。
すべてのモデルがこのような 3 部構成の検証を必要とするわけではありません。 反復フィッティング手順と個別のデータ サブセット (検証セット) を使用するモデルでのみ、フィッティングを停止するタイミングを決定する必要があります。 反復フィッティング手順 (たとえば、ここで使用できたロジスティック回帰) を含まないモデルの場合、トレーニング セットとテスト セットのみが必要です。
JMP Pro には、モデル検証のためにデータを分割する簡単な方法があります。 Make Validation Column ユーティリティを使用しました。このユーティリティは、データに対してランダムまたは擬似ランダム サンプリング (置換なし) を実行して各サブセットを作成し、そのサブセットを検証列に記録してデータ テーブルに戻しました。

ここでは、層化ランダム サンプリングを使用してサブセットを作成しました。これについては、2 番目のスクリーンショットの上部の段落で説明されています。 いくつかのカテゴリ変数には強い不均衡があり、たとえば、悪化した違反がほとんど、またはまったくテスト セットに含まれないという状況は避けたいと考えていました。 モデルの精度の有効な尺度を取得するには、悪化した違反に対してモデルがどのように実行されるかを確認する必要があるため、これは問題になります。
以下のインタラクティブな分布レポートでは、3 つのデータ サブセットにわたる各層別列の一致した表現があることがわかります。 40,000 行近くのデータがあるため、層別化を使用しなくても問題なかった可能性は十分にありますが、安全策を講じるのは悪い考えではありませんでした。 層化は、検証列の作成ユーティリティが実装できるいくつかの異なる擬似ランダム サンプリング手順の 1 つです (「検証列の作成」を参照)。ここ多くのための)。

Make Validation Column ユーティリティは、「Validation」という名前の列をデータ テーブル (テクニカル スピーキング プレゼンテーション ページからダウンロードできます) にドロップして戻し、それを Bootstrap Forest プラットフォームに入力して検証プロセスをトリガーしました。 過学習の証拠は見つからなかったので、モデルの全体的な精度に満足していると仮定して、それを使用して新しい観測値の予測を生成 (「スコア付け」) する準備が整いました。
新しい観察結果のスコアリング
発行されたばかりの建築基準法違反のグループがあり、それぞれに財務上のペナルティの確率を割り当て、財務予測で課される各ペナルティの金額を重み付けするために使用したいとします。 たとえば、ペナルティ確率が 0.7 の違反に対して 1,000 ドルのペナルティが課された場合、予測される支払い額は 700 ドルになります。 もちろん、被告は最終的に 1,000 ドルまたは 0 ドルを支払うことになりますが、多くの違反を平均すると、予測の合計が最終的な収益に近づくはずです (私たちはそう願っています)。 ペナルティ確率はブートストラップ フォレスト モデルから取得しますが、そのモデルはトピック分析からのスコアを入力として受け取りました。 したがって、両方のモデルを通じて新しい違反を実行する必要があります。 あるモデルの出力を別のモデルの入力として使用することは、珍しいことではありません。
JMPモデルを列式として元のデータ テーブル (モデリング プラットフォームの赤い三角形のオプションの下) に出力し、テーブルに追加した新しいデータに対して実行できます。 新しい観察をスコアリングするには、新しい違反をテーブルに追加するだけで、トピック スコアとペナルティ確率が列の式によって自動的に計算されます。 次に、ペナルティ確率と課されるペナルティ金額を乗算する新しい列の式を作成し、予測される支払い額を取得します。 以下に、新たな違反件数 1,000 件の予測を示します。 これらにより約 184 万ドルの収益が得られると当社は予測していますが、その合計の約 3 分の 1 は、プラスの部分に含まれる最大の予測支払額 100 件のみによって占められています。 私たちの予測の精度は、これらの違反で何が起こるかに大きく左右されます。
(余談: ポイント アンド クリックで観測値をスコアリングする方法について説明しましたが、スコアリングは JSL (JMP スクリプト言語) のスクリプトを使用して簡単に自動化できます。 このモデルは、他の言語でスコアリング コードを作成できる JMP Pro の機能を利用して、Python や JavaScript などの言語で JMP の外部にデプロイすることもできます。)
そしてこれは、おそらく最も重要な疑問を浮き彫りにします。それは、私たちの予測は実際にどれほど良いのかということです。 モデルのパフォーマンスを把握するためにエントロピー RSquare のような統計を当てはめましたが、本当に重要なのは財務予測の正確さです。 実際には、モデル構築フェーズの一部として、テスト セットの収益予測を生成し、それを観察した実際の収益と比較することによって、これを評価することになります。 残念ながら、入手可能なデータには最初に課された罰金の額は含まれておらず、裁定後の最終的な額のみが含まれていたため、ここではこれを行いませんでした。 (上記のスコアリングの例では、説明の目的で最初に課せられるペナルティの金額を想像しただけです。)
別れの思い
私たちは目標、つまり新たな違反に罰金の確率を割り当てるモデルには到達しましたが、このようなプロジェクトが実際に完了することはありません。 時間の経過とともに、新しい種類の違反や違反の傾向が発生したり、新しい政策により違反の特徴と罰金支払いの関係が変化したり、執行能力や寛大さなどの測定されていない要因により罰金支払いの確率が時間の経過とともに単純に変化したりする可能性があります。 以下のグラフの時間にわたる傾向は、後者を示唆している可能性があります。 (線の幅は年間の違反件数の合計を表しており、2020 年にはまだ今年の突然の増加を信頼するには十分なデータがないことが明らかです。)

さまざまな理由が考えられ、時間の経過とともにモデルの精度が低下する可能性があります。 トピック分析とブートストラップ フォレストのモデルを定期的に再調整し、最新のデータを組み込んで (おそらく古いデータは破棄して)、予測の正確さを維持する必要があります。
ありがとう、 @swalo66 。お役に立ててうれしいです。