回答:
多重共線性とは、予測変数が相関していることを意味します。なぜこれが悪いのですか?
LDAは回帰手法と同様に行列式の計算を伴うため、行列式が0に近い場合は不正確です(つまり、 2つ以上の変数が互いにほぼ線形結合している)。
さらに重要なことは、推定された係数を解釈できないようにすることです。増加した場合、たとえば、の減少と関連しているX 2と、彼らの両方が増加変数Y、内のすべての変更X 1は、の変化によって補償されるX 2、あなたはの影響を過小評価しますX 1でYを。LDAでは、分類に対するX 1の影響を過小評価します。
必要なのは分類そのものだけで、データの半分でモデルをトレーニングし、残りの半分でモデルをテストした後、85-95%の精度が得られるとしたら、それは問題ないと思います。
gui11aumeがすばらしい答えを与えたと思うので、照明となるかもしれないわずかに異なる角度から例を挙げたいと思います。判別関数の共変量は次のように見えることを考慮してください。
最適なLDAに次の線形境界があると仮定します。
または
。
これら2つの境界は同一ですが、最初の境界には係数があります にとって 、 、 、そして それぞれ、他方には係数があります 。
したがって、係数はまったく異なりますが、2つの式は同じ境界と同じ予測ルールを提供します。1つの形式が適切であれば、もう1つの形式も適切です。しかし、gui11ameが係数が解釈不能であると言っている理由を見ることができます。
この境界を表現する他の方法もいくつかあります。 それを与えるために 係数と同じことができる または 。しかし実際には、共線性は近似値です。ノイズにより一意の答えが得られるため、これは事態を悪化させます。データのごくわずかな摂動により、係数が大幅に変化します。しかし、予測では、各方程式がほぼ同じ境界を定義し、LDAがほぼ同一の予測を行うため、大丈夫です。
ここでマークされた答えは正しいですが、コードで何が起こったのかを知るために別の説明を探していたと思います。モデルを実行しているときとまったく同じ問題がありました。
進行状況は次のとおりです。データセットの一部として予測変数を使用してモデルをトレーニングしています。気付かないうちに私に起こったことの例を次に示します。
df = pd.read_csv('file.csv')
df.columns = ['COL1','COL2','COL3','COL4']
train_Y = train['COL3']
train_X = train[train.columns[:-1]]
このコードでは、「COL3」の値を予測したいのですが、train_Xを見ると、最後の列を除くすべての列を取得するように指示しているため、COL4ではなくCOL1、COL2、COL3を入力します。 train_Xの一部であるCOL3を予測しようとしています。
列を移動するだけでこれを修正し、ExcelのCOL3をデータセットの最後の列に移動して(COL4の代わりになります)、次に:
df = pd.read_csv('file.csv')
df.columns = ['COL1','COL2','COL3','COL4']
train_Y = train['COL4']
train_X = train[train.columns[:-1]]
Excelで移動したくなく、コードで移動したい場合:
df = pd.read_csv('file.csv')
df.columns = ['COL1','COL2','COL3','COL4']
train_Y = train['COL3']
train_X = train[train.columns['COL1','COL2','COL4']]
train_Xを宣言して、train_Yの一部であるCOL3を除くすべての列を含める方法に注意してください。
それがお役に立てば幸いです。