ガウス分布による四分位変換-Sklearnの実装


8

これは漠然とした質問かもしれませんが、Scikit-Learnの分位変換はどのように実装されているのでしょうか。

歪んだデータセットをこのような正規分布に変換するにはどうすればよいのでしょうか。

通常、scikit-learnはwikiへのリンクを提供しますが、この変換は提供しません。

誰かが私を正しい方向に向けることができますか?

ありがとう

回答:


12

はい、それはいくつかの異なる場所で説明されているようで、論文へのリンクはありません。

クラスのドキュメントは、次のようなアルゴリズムを要約したものです。

変換は各機能に個別に適用されます。フィーチャの累積密度関数は、元の値を投影するために使用されます。適合範囲の下または上にある新規/未表示データの機能値は、出力分布の境界にマップされます。この変換は非線形であることに注意してください。同じスケールで測定された変数間の線形相関を歪める可能性がありますが、異なるスケールで測定された変数をより直接的に比較できるようにします。

そしてユーザーガイドはいくつかの新しい情報を追加します:

ただし、ランク変換を実行することにより、異常な分布を平滑化し、スケーリング方法よりも外れ値の影響を受けにくくなります。ただし、フィーチャ内およびフィーチャ間の相関と距離を歪めます。

具体的には、通常の変換の場合:

したがって、入力の中央値は0を中心とする出力の平均になります。通常の出力はクリップされ、入力の最小値と最大値(それぞれ1e-7および1-1e-7分位点に対応)が無限大にならないようにします。変換。

GitHubのプルリクエストこの推定参照の古い1ショーは、それは元々 「ランクスケーラー」という名前にするつもりでした。

大まかに言えば、このペーパーは、そのような「逆正規変換(INT)」を実装できるさまざまな方法の良い要約を提供します。

INTは、連続変数の標本分布を変換して、より正規分布に見えるようにする方法です。INTにはいくつかのタイプがあります。私たちが最初に行う違いは、ランクベースのINTと非ランクベースのINTの間です。非ランクベースのINTは、観測データの特定の累積分布関数(CDF)を想定し、その分布のパラメーターを推定し、観測スコアをCDFから推定分位数に変換し、逆数を使用してこれらの分位数を標準正規偏差に変換します。通常(またはプロビット機能)。そのような非ランクベースのINTは通常、コピュラと呼ばれ(Basrak et al。2004; Li et al。2006)、これ以上は考慮されません。ただし、注目に値します ランクベースのINTは、CDFを分布のファミリに制限する代わりに、経験的CDFを使用するコピュラ法の特殊なケースとして表現できること。つまり、あらゆる瞬間が実際にはデータから推定され、分位点はランクの単純な関数になります。

ランクベースのINTは、変数をランクに変換する予備ステップを含み、さらに2つのクラスに分類できます。確率的要素を含むものと、決定論的なものです。私たちは確率論的要素を含むINTを1つだけ認識しており、このアプローチは「ランダムな通常の逸脱」の使用と呼ばれてきました(Conover 1980)。このアプローチの1つの抑止力は、同じ方法を同じデータセットに適用する各調査員がわずかに異なる回答を取得することです。このアプローチには、P値の分布の細分性を回避するという理論上の利点があります。これは、多くのノンパラメトリックテストでよく発生する問題です。それにもかかわらず、これらのINTの確率論的性質は研究者を落胆させるようであり、それらが使用されることはほとんどありません。

決定論的なランクベースのINTは、予想される通常のスコア(Fisher and Yates 1938)を使用するINTと、サンプルの分位(または分数ランク)の逆変換を使用して予想される通常のスコアを概算するINTに分類できます。Harter(1961)は、数値積分を使用して、予想される正常スコアの最も完全な表を提供しています。フィッシャーとイェーツの予想される通常のスコアに近づくために小数ランクの逆変換を伴うINT(Maritz 1982)は、遺伝子研究で最も一般的に使用されているようであり、主な注目点になります。ランクの逆変換では、最小および最大の観測値がそれぞれ負および正の無限大に変換されるのを回避するために、分数オフセットが必要です。

QuantileTransformerコードを見ると、リストの最後の項目のように見えます。変更されたランク変数を計算する決定論的なランクベースのINTです。

ただし、これは比較的単純な実装です。

  1. を使用して、経験的ランクを計算する numpy.percentile
  2. を使用して、補間によってランクを変更します。 numpy.interp
  3. を使用して、CDFを反転することにより、正規分布にマップします。 scipy.stats.norm.ppf

四肢の境界に対処するように注意してください。

y=Φ1FバツFΦ


なんて素晴らしい、完全な答えでしょう。これは私にとって非常に役に立ちました。概念化を容易にするために、最後に簡略化されたマッピングを含めていただきありがとうございます。
ローンウルフ

1

aがq番目の四分位数の場合、q in [0、1]。次に、マッピング後、aに対応する値はnorm.ppf(q)です。ppfはcdfの逆です。


このアプローチは統計理論に基づいていません。まず、限界分布ではなく条件付き分布に注意します。2つ目は、予測子の分布についてはあまり気にせず、Xが与えられたYの条件付き分布についてのみです。3つ目は、Yの変換を指定する必要のないセミパラメトリックモデルなどのロバスト回帰への原理的なアプローチです。
フランクハレル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.