タグ付けされた質問 「calibration」

校正とは、ある標準の値と一致するように測定値を調整することを指します。分類子スコアをクラスメンバーシップ確率に変換する。など。従属変数の観測値から説明変数を予測するために使用しないでください。タグの逆予測を使用します。

3
モデルの予測確率のキャリブレーションを視覚化する
各インスタンスについて、各クラスの確率を生成する予測モデルがあるとします。現在、これらの確率を分類(精度、リコールなど)に使用する場合、そのようなモデルを評価する方法はたくさんあることを認識しています。また、ROC曲線とその下の領域を使用して、モデルがクラスをどれだけ区別できるかを判断できることも認識しています。それらは私が尋ねているものではありません。 モデルのキャリブレーションを評価することに興味があります。 ブリアスコアのようなスコアリングルールは、このタスクに役立つことがわかっています。それは大丈夫です、そして、私はそれらの線に沿って何かを組み込む可能性が高いですが、私はそのようなメトリックが素人にとってどれほど直感的であるかわかりません。もっと視覚的なものを探しています。結果を解釈する人に、モデルが何かを予測したときに、実際に70%の確率で70%が発生する可能性があるかどうかを確認できるようにしてほしい QQプロットのことを聞いたことがありますが(使用したことはありません)、最初はこれが私が探しているものだと思いました。ただし、実際には2つの確率分布を比較することを目的としているようです。それは直接私が持っているものではありません。多数のインスタンスについて、予測された確率と、イベントが実際に発生したかどうかがわかります。 Index P(Heads) Actual Result 1 .4 Heads 2 .3 Tails 3 .7 Heads 4 .65 Tails ... ... ... QQプロットは本当に欲しいものですか、それとも何か他のものを探していますか?QQプロットを使用する必要がある場合、データを確率分布に変換する正しい方法は何ですか? 予測された確率で両方の列を並べ替えて、いくつかのビンを作成できると思います。それは私がやるべきことのタイプですか、それとも私はどこかで考えていますか?私はさまざまな離散化手法に精通していますが、この種の標準的なビンに離散化する特定の方法はありますか?

2
Plattのスケーリングを使用する理由
教師あり学習の信頼度を確率に調整する(たとえば、オーバーサンプリングデータを使用してSVMまたは決定木から信頼度をマップする)方法の1つは、Plattのスケーリングを使用することです(たとえば、ブースティングから調整済み確率を取得する)。 基本的には、ロジスティック回帰を使用してをにマッピングします。従属変数は真のラベルであり、予測子は未較正モデルからの信頼度です。私が理解していないのは、1または0以外のターゲット変数の使用です。このメソッドは、新しい「ラベル」の作成を呼び出します。[−∞;∞][−∞;∞][-\infty;\infty][0;1][0;1][0;1] シグモイド列セットへの過剰適合を回避するために、サンプル外モデルが使用されます。ある場合正例と各トレーニング例えば列車セット内の負例、プラットキャリブレーションが使用目標値及び(代わりに、1と0のそれぞれ)、 N+N+N_+N−N−N_-y+y+y_+y−y−y_-y+=N++1N++2;y−=1N−+2y+=N++1N++2;y−=1N−+2 y_+=\frac{N_++1}{N_++2};\quad\quad y_-=\frac{1}{N_-+2} 私が理解していないのは、この新しいターゲットの有用性です。ロジスティック回帰では、従属変数をバイナリラベルとして扱うだけではありませんか(どのラベルが指定されているかに関係なく)。 更新: SASで依存関係をから別の何かに変更すると、同じモデルに戻ります(を使用)。おそらく私のエラーか、多分SASの汎用性の欠如でしょう。Rでモデルを変更できました。例として:1/01/01/0PROC GENMOD data(ToothGrowth) attach(ToothGrowth) # 1/0 coding dep <- ifelse(supp == "VC", 1, 0) OneZeroModel <- glm(dep~len, family=binomial) OneZeroModel predict(OneZeroModel) # Platt coding dep2 <- ifelse(supp == "VC", 31/32, 1/32) plattCodeModel <- glm(dep2~len, family=binomial) plattCodeModel predict(plattCodeModel) compare <- cbind(predict(OneZeroModel), predict(plattCodeModel)) plot(predict(OneZeroModel), predict(plattCodeModel))

1
複数の代入後のキャリブレーションプロットのプーリング
複数の代入後のキャリブレーションプロット/統計のプーリングに関するアドバイスをお願いします。将来のイベントを予測するために統計モデルを開発する設定では(たとえば、病院の記録からのデータを使用して退院後の生存やイベントを予測する)、多くの情報が欠落していることが想像できます。複数の代入はそのような状況を処理する方法ですが、結果として、代入の固有の不確実性による追加の変動性を考慮して、各代入データセットからのテスト統計をプールする必要があります。 複数のキャリブレーション統計(hosmer-lemeshow、HarrellのEmax、推定キャリブレーションインデックスなど)があることを理解しています。プーリングに関する「通常の」Rubinのルールが適用される可能性があります。 ただし、これらの統計は多くの場合、モデルの特定のミスキャリブレーション領域を示さないキャリブレーションの全体的な測定値です。この理由から、私はむしろ較正プロットを見たいと思います。残念ながら、プロットまたはそれらの背後にあるデータ(個人ごとの予測確率と個人ごとの観測結果)を「プール」する方法については無知であり、生物医学文献(私がよく知っている分野)にはあまり見つけることができません、または、ここで、CrossValidatedで。もちろん、各代入データセットのキャリブレーションプロットを見ることは答えかもしれませんが、多くの代入セットが作成されると、非常に面倒になる可能性があります。 したがって、複数の代入(?)後にプールされたキャリブレーションプロットをもたらす手法があるかどうかを尋ねたいと思います

2
ScikitがCalibratedClassifierCVで分類子を調整する正しい方法
ScikitにはCalibratedClassifierCVがあり、これにより特定のX、yペアでモデルを調整できます。また、明確に述べていますdata for fitting the classifier and for calibrating it must be disjoint. それらがばらばらでなければならない場合、分類器を次のもので訓練することは合法ですか? model = CalibratedClassifierCV(my_classifier) model.fit(X_train, y_train) 同じトレーニングセットを使用することで、disjoint data規則に違反しているのではないかと心配しています。別の方法として、検証セットを用意することもできます my_classifier.fit(X_train, y_train) model = CalibratedClassifierCV(my_classifier, cv='prefit') model.fit(X_valid, y_valid) これには、トレーニング用のデータが少なくなるという欠点があります。また、CalibratedClassifierCVが別のトレーニングセットに適合するモデルにのみ適合しなければならない場合、なぜデフォルトのオプションはでありcv=3、これも基本推定量に適合しますか?相互検証は、独立したルールを単独で処理しますか? 質問:CalibratedClassifierCVを使用する正しい方法は何ですか?

2
確率モデルを調整しながら最適なビン幅を選択する方法は?
背景:発生する結果の確率を予測するモデルを調整する方法について、いくつかの素晴らしい質問/回答があります。例えば ブライアースコア、および解像度、不確実性、信頼性への分解。 較正プロットと等張回帰。 これらの方法では、予測結果に対するビニング方法の使用が必要になることが多く、結果(0、1)の振る舞いは、平均結果をとることによりビン上で平滑化されます。 問題: ただし、ビンの幅を選択する方法を教えてくれるものは見つかりません。 質問:最適なビン幅を選択するにはどうすればよいですか? 試行:使用されている2つの一般的なビンの幅は次のようです。 等幅ビニング、たとえば、間隔[0、1]の10%をカバーする10個のビン。 ここで説明する Tukeyのビニング方法。 しかし、最も誤ってキャリブレーションされた予測確率の間隔を見つけることに関心がある場合、ビンのこれらの選択は最も最適ですか?

3
キャリブレーションの測定に最適なメトリックを選択するにはどうすればよいですか?
私はプログラミングし、テスト駆動開発を行います。コードに変更を加えた後、テストを実行します。成功することもあれば失敗することもあります。テストを実行する前に、テストが成功するという私の信任のために、0.01から0.99までの数字を書き留めます。 私のテストが成功するか失敗するかを予測することで、私が改善しているかどうかを知りたいです。また、テストが月曜日と金曜日のどちらで成功するかを予測するのが得意かどうかを追跡できるとよいでしょう。テストの成功を予測する私の能力が、追跡する他のメトリックと相関している場合は、知りたいです。 これにより、適切なメトリックを選択するタスクが残ります。SuperforcastingでPhilip Tetlockは、Brierスコアを使用して、専門家がどれだけうまく校正されているかを測定することを提案しています。文献で提案されているもう1つの指標は、対数スコアリングルールです。他の可能な候補者もいます。 使用するメトリックをどのように決定しますか?スコアリングルールを他のルールよりも優先することについての議論はありますか?

2
ロジスティック回帰がうまく調整されているのはなぜですか?
確率キャリブレーションに関するscikit学習ドキュメントでは、ロジスティック回帰を他の方法と比較し、ランダムフォレストはロジスティック回帰よりも適切にキャリブレーションされていないことを指摘しています。 ロジスティック回帰がうまく調整されているのはなぜですか?どのようにしてロジスティック回帰のキャリブレーションを台無しにすることができますか?

1
ブートストラップ(R)を使用して検量線を推定する方法
質問:バイナリ結果変数をモデル化するために確率モデル(ベイジアンネットワーク)を適合させました。ブートストラップでオーバーフィットするように修正された高解像度のキャリブレーションプロット(スプラインなど)を作成したいと思います。そのような曲線を計算するための標準的な手順はありますか? 考慮事項:これは、トレーニング/テスト分割で簡単に実行できますが、サンプルが20,000未満なので、データを捨てないでください。だから私は自然にブートストラップについて考えました。そのような関数(キャリブレーション)の1つがフランクハレルのrmsパッケージに実装されていることは知っていますが、残念ながら、私が使用するモデルはパッケージでサポートされていません。 おまけの質問:ブートストラップを使用して、誤って調整されたモデルを再調整することは可能ですか?私がこれを尋ねる理由は、私がモデルを再調整しようとしたことです トレイン/テストでデータを分割する セットをトレーニングするフィッティングモデル モデルを再調整してトレーニングセット(3次スプラインを使用) テストセットのキャリブレーションを評価する 上記の方法で再調整されたモデルは、列車セットでは完全に調整されましたが、テストセットではそれほど調整されていません。これは、おそらく軽度の過適合を示しています。また、テストセットをさらに分割して、1つの分割でキャリブレーションを行い、2番目の分割でキャリブレーションを評価しました。私はより良い結果を得ましたが(まだ完全に校正されていません)、セットはかなり小さくなり(〜1000サンプル)、したがって校正は信頼できなくなりました

1
検量線の解釈
私は段階的に導出されたバイナリロジスティック回帰モデルを持っています。R calibrate(, bw=200, bw=TRUE)のrmsパッケージの関数を使用して、将来のキャリブレーションを推定しました。出力を以下に示します。これは、バックワードステップダウンロジスティックモデルのブートストラップ過適合が補正された検量線推定を示しています。しかし、私はそれをどのように解釈するかわかりません。 キャリブレーションとは、将来の予測確率が観測された確率と一致するかどうかを指すことを理解しています。予測モデルは、新しい被験者の予測が極端すぎる(つまり、結果の観測確率が低リスク被験者の予測よりも高く、高リスク被験者の予測よりも低い)ことに悩まされています。これは、リスクの低いグループの理想(破線)よりも高く、リスクの高いグループの理想よりも低い点線の曲線をトレースするとわかります。 同じ推論を使用すると、バイアスが補正された曲線は、さらに極端な確率を生成するという意味で、より悪くなります。私の解釈は正しいですか?

3
モデル間のキャリブレーションを比較するための統計的アプローチ
これは一般的な問題のようですが、解決策が見つかりません。 一連のバイナリ観測と2つの異なるモデルがあり、それぞれに各観測の予測があります。モデルのキャリブレーションを比較したい。 これらのモデルの差別を比較する方法はいくつかあります(RのpROCパッケージのroc.testを参照)が、キャリブレーションを比較する方法はありません。ほとんどの経験的論文は、各モデルのキャリブレーションがオフであるかどうかをテストしている2つの異なるキャリブレーションテスト(すなわち、Hosmer-Lemeshow、Brierスコア)からのp値のみをリストしています。 私が探しているのは、2つのモデル間のキャリブレーションの直接統計比較です。 これが極端なテストデータセットです。ブライア検定、シュピーゲルハルターZ検定などの値はすべて、p2がより適切に較正されていることを裏付けています。誰かがこれを正式な統計的検定にすることができますか? library("pROC") y <- rbinom(100,1,1:100/100) p1 <- 1:100/10001 p2 <- 1:100/101 val.prob(p1,y) val.prob(p2,y)

3
指数移動平均を移動ウィンドウに調整することはどういう意味ですか?
指数移動平均のアルファパラメータは、平均が時系列に適用される平滑化を定義します。同様に、移動ウィンドウ平均のウィンドウサイズも平滑化を定義します。 平滑化が特定のサイズの移動ウィンドウ平均の平滑化とほぼ同じになるようにアルファパラメータを調整する方法はありますか?(明らかに、同じ結果を探しているわけではなく、オフセットは問題ありません)。それで、結果の時系列が3か月の移動ウィンドウによって提供される結果にできるだけ近い形になるようにアルファを調整すると言いますか? 編集:コンテキスト:異なる深さを抽象的に表す降雨データから、土壌水分の複数のプロキシを生成しようとしています(長期的な降雨平均に関連していると想定しています)。移動ウィンドウを使用すると、たとえば過去3日間、3か月、または1年間の総降水量を計算できます。これは、それぞれ上部の数センチメートルの土壌、上部のメーター、および拡張した土壌の柱に対応します。ただし、移動ウィンドウには過去のデータが必要です。これは常に利用できるとは限りません(たとえば、シリーズの開始時)。代わりに指数平均を使用する場合、各平均(前のタイムステップからの平均)ごとに1つの値を保存するだけでよく、この値は長期平均で初期化できます。

1
ビニングデータなしで生存データのキャリブレーションプロットを作成するにはどうすればよいですか?
Coxモデルから推定された生存確率のキャリブレーションプロットを作成するには、推定されたリスクをグループに分割し、グループ内の平均リスクを計算してから、これをカプランマイヤー推定と比較します。ビニングを必要としない代替アプローチは何ですか?そのようなテクニックを実装するために必要な具体的な手順は何ですか?その背後にあるロジックは何ですか?この質問にはいくつかの議論があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.