目的変数に上限や下限があるときの回帰分析の潜在的問題と、その解決方法

回帰分析をするとき、目的変数 y に上限や下限のある変数を使用するときがあります。0 から 1 までの値だったり、0 % から 100 % までの間だったりする変数です。基本的には、回帰分析における y として使用して問題ありません。ただ、このような y の中には、例えば人が評価したような結果として、0 を下限、100 を上限のように決めている、もしくは丸め込んでいる場合もあります。そのようなとき、y が連続値とはいえ、回帰分析をおこなうと潜在的に問題があります。モデルの予測精度の低下にもつながりますので、把握しておくとよいでしょう。

問題は、例えば y の値が 100 であるサンプルが複数あるとき、まさに 100 のサンプルもあれば、本来であれば100 以上であったりその可能性があったりするにもかかわらず 100 としているようなサンプルもある、ということに由来します。逆にいえば、このような状況になり得るような y を扱う場合は、回帰分析をすると潜在的に問題があります。本来は y が 100 以上となるサンプルに対する真値が 100 となるため、説明変数 x から 100 と計算できるようなモデルのパラメータを設定できても、そのパラメータは間違いということになります。このサンプルには潜在的な誤差があることになり、この誤差がモデルに考慮されず、本来の y と x の間の関係を構築できません。モデル構築時にはこのような問題があることを把握しておくとよいと思います。

このようなときの一つの対処法として、完璧に解決できるわけではありませんが、ロジット変換があります。

目的変数の値が0から1の間のとき、予測値も0から1の間にしたい!→ロジット変換はどうでしょう?
今回は、目的変数 Y の値が 0 から 1 の間にあり、回帰分析をするときの話です。例えば Y がモル分率などのときですね。このような Y と説明変数 X の間で回帰モデル Y=f(X) を構築して、X の値から Y の値を予測したとき、予...

 

ロジット変換によって、実質的に y がマイナス無限大から無限大までに変換されるため、y を上手く設定することで y の誤差を適切に評価できる可能性があります。ただ元の y の値が 100 で同じであれば、ロジット変換した後も同じ値になりますので、この場合の根本的な解決にはなりません。

根本的な対処法としては、上手くしきい値を設けて、クラス分類するとよいです。例えば、50 未満のサンプルと 50 以上のサンプルに分けて 2 クラスにしてクラス分類モデルを構築します。しきい値や何クラスにするかは工夫する必要があります。回帰分析 → クラス分類にすることで上の潜在的な問題は解消されます。実際に、このような y を扱う状況で回帰分析からクラス分類することで、モデルの精度が向上したケースもありました。

ちなみに、基本的にクラス分類は、50 未満のクラスか 50 以上のクラスか、といった 0, 1 で分類する方法になりますが、うまく工夫することで 50 以上のクラスの中でも 100 に近い (50から離れている) か 50 に近いかを計算できます。例えばサポートベクターマシンにおける識別面からの距離や、ランダムフォレストなどのアンサンブル学習における各サブモデルで推定されたクラスの割合です。

サポートベクターマシン(Support Vector Machine, SVM)~優秀な(非線形)判別関数~
サポートベクターマシン(Support Vector Machine, SVM)について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、SVMで何ができるか、どのようにSVMを計算するかが説明されています。pd...
ランダムフォレスト(Random Forests, RF)や決定木(Decision Tree, DT)で構築したモデルを逆解析するときは気をつけよう!
回帰モデルやクラス分類モデルを構築したら、モデルの逆解析をすることがあります。逆解析では、説明変数 (記述子・特徴量・実験条件など) X の値から目的変数 (物性・活性など) y の値を推定するのではなく、逆に、y の値から X の値を推定...

 

以上のように、回帰分析において上限や下限のある y を扱うときは、クラス分類の問題にして対応するのがよいでしょう。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました