線形分類器の場合、係数が大きいほど重要な機能を意味しますか?


15

私は機械学習に取り組んでいるソフトウェアエンジニアです。私の理解から、線形回帰(OLSなど)および 線形分類(ロジスティック回帰やSVMなど)は、トレーニング済み係数 と特徴変数内積に基づいて予測を行います。wx

y^=f(wx)=f(iwixi)

私の質問は、モデルがトレーニングされた後(つまり、係数が計算された後)、モデルがより正確に予測するために重要な特徴変数の係数が大きくなるということですか?wi

つまり、変数を係数値で並べ替えてから、最も高い係数を持つフィーチャを選択するだけで、係数の相対的な大きさをフィーチャ選択に使用できるかどうかを尋ねています。このアプローチが有効な場合、機能の選択について(ラッパーメソッドやフィルターメソッドなどとともに)言及されていないのはなぜですか。

私がこれを尋ねる理由は、L1対L2の正規化に関する議論に出くわしたためです。次のような宣伝文句があります:

組み込み機能の選択は、L1-normの有用なプロパティとして頻繁に言及されていますが、L2-normはそうではありません。これは実際にはL1ノルムの結果であり、スパース係数を生成する傾向があります(以下で説明します)。モデルに100個の係数があり、そのうちの10個のみが非ゼロ係数を持つと仮定すると、これは事実上「他の90個の予測変数は目標値の予測には役に立たない」と言っています。

行間を読むと、係数が0に近い場合、その係数を持つ特徴変数にはほとんど予測力がないはずだと思います。

編集:私はまた、数値変数にZスケーリングを適用しています。


1
LASSO(L1-norm)およびリッジ回帰(L2-norm)分析の基礎となるコードは、コードが係数を元の変数スケールに変換する場合でも、分析の前に予測変数を事前にスケーリングする必要があることに注意してください。事前にスケールしないコードを使用する人は、OLS、LASSO、リッジのいずれを実行しているかに関係なく、@ josliberからの回答に記載されている問題に終わります。
EdM

3
言及する価値があると思うのは、「その係数を持つ特徴変数にはほとんど予測力がないはずだ」というフレーズで表現しようとしていることを考えるとき、それが本当に意味することを正確にレイアウトできますか?しかし、多変量モデルの個々の変数の「予測力」の概念は、概念的な基盤について一般的に合意されていないことを経験しました。
マシュードゥルーリー

4
この種の考え方の誤りは、おそらく1つの変数モデルを作成することに限定されないことだと思います。あなたがそうであり、最高の精度でモデルを提供したい場合、彼らは確かに、それは合理的なことです。そうでない場合、つまり多変量モデルを作成する場合、@ EdMが答えるように、変数の重要性の概念は非常に滑りやすく、しっかりした概念的基盤がありません。単変量モデルの予測力が多変量設定に関連すると見なされることはまったく明らかではありません。
マシュードゥルーリー

1
@MatthewDrury:なぜあなたが複数の機能を大いに活用しているのか分かりません。存在する「機能選択」のフィールド全体(ラッパーメソッドなど)があります。この分野には確固たる概念的基盤がないことを提案していますか?
stackoverflowuser2010

1
@ stackoverflowuser2010ええ、私はここでの私の意見ではおそらく外れ値ですが、それは私の視点のやや正確な説明になります。
マシュードゥルーリー

回答:


24

どういたしまして。係数の大きさは、変数に選択されたスケールに直接依存しますが、これはややarbitrary意的なモデリングの決定です。

これを確認するには、花弁の長さ(センチメートル)を与えて、虹彩の花びらの幅(センチメートル)を予測する線形回帰モデルを考えます。

summary(lm(Petal.Width~Petal.Length, data=iris))
# Call:
# lm(formula = Petal.Width ~ Petal.Length, data = iris)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.56515 -0.12358 -0.01898  0.13288  0.64272 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  -0.363076   0.039762  -9.131  4.7e-16 ***
# Petal.Length  0.415755   0.009582  43.387  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.2065 on 148 degrees of freedom
# Multiple R-squared:  0.9271,  Adjusted R-squared:  0.9266 
# F-statistic:  1882 on 1 and 148 DF,  p-value: < 2.2e-16

このモデルは、調整済みのR ^ 2値0.9266を達成し、係数値0.415755をPetal.Length変数に割り当てます。

ただし、Petal.Lengthをセンチメートルで定義することは非常にarbitrary意的であり、代わりにメートルで変数を定義することもできます。

iris$Petal.Length.Meters <- iris$Petal.Length / 100
summary(lm(Petal.Width~Petal.Length.Meters, data=iris))
# Call:
# lm(formula = Petal.Width ~ Petal.Length.Meters, data = iris)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.56515 -0.12358 -0.01898  0.13288  0.64272 
# 
# Coefficients:
#                     Estimate Std. Error t value Pr(>|t|)    
# (Intercept)         -0.36308    0.03976  -9.131  4.7e-16 ***
# Petal.Length.Meters 41.57554    0.95824  43.387  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.2065 on 148 degrees of freedom
# Multiple R-squared:  0.9271,  Adjusted R-squared:  0.9266 
# F-statistic:  1882 on 1 and 148 DF,  p-value: < 2.2e-16

もちろん、これはフィットしたモデルに実際には影響しません。Petal.Length(0.415755)よりも、Petal.Length.Meters(41.57554)に100倍大きい係数を割り当てました。モデルの他のすべてのプロパティ(調整されたR ^ 2、t統計、p値など)は同一です。

一般に、正則化された線形モデルをフィッティングするとき、最初に変数を正規化して(たとえば、平均0と単位分散を持つように)、選択したスケールに基づいて他の変数よりも優先する変数を避けます。

正規化されたデータを想定

すべての変数を正規化した場合でも、独立変数はめったに設定されない(分散が小さい)ため、より高い係数の変数は予測に役立ちません。例として、従属変数Zと、バイナリ値を取る独立変数XおよびYを持つデータセットを考えます

set.seed(144)
dat <- data.frame(X=rep(c(0, 1), each=50000),
                  Y=rep(c(0, 1), c(1000, 99000)))
dat$Z <- dat$X + 2*dat$Y + rnorm(100000)

構造上、線形回帰でZを予測するために両方を使用した場合、Yの係数はXの係数の約2倍になります。

summary(lm(Z~X+Y, data=dat))
# Call:
# lm(formula = Z ~ X + Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.4991 -0.6749 -0.0056  0.6723  4.7342 
# 
# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -0.094793   0.031598   -3.00   0.0027 ** 
# X            0.999435   0.006352  157.35   <2e-16 ***
# Y            2.099410   0.031919   65.77   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.9992 on 99997 degrees of freedom
# Multiple R-squared:  0.2394,  Adjusted R-squared:  0.2394 
# F-statistic: 1.574e+04 on 2 and 99997 DF,  p-value: < 2.2e-16

それでも、XはYよりもZの分散を多く説明します(Xを使用してZを予測する線形回帰モデルのR ^ 2値は0.2065であり、Yを含むZを予測する線形回帰モデルのR ^ 2値は0.0511です)。

summary(lm(Z~X, data=dat))
# Call:
# lm(formula = Z ~ X, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -5.2587 -0.6759  0.0038  0.6842  4.7342 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept) 1.962629   0.004564   430.0   <2e-16 ***
# X           1.041424   0.006455   161.3   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.021 on 99998 degrees of freedom
# Multiple R-squared:  0.2065,  Adjusted R-squared:  0.2065 
# F-statistic: 2.603e+04 on 1 and 99998 DF,  p-value: < 2.2e-16

対:

summary(lm(Z~Y, data=dat))
# Call:
# lm(formula = Z ~ Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -5.0038 -0.7638 -0.0007  0.7610  5.2288 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept) -0.09479    0.03529  -2.686  0.00724 ** 
# Y            2.60418    0.03547  73.416  < 2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.116 on 99998 degrees of freedom
# Multiple R-squared:  0.05114, Adjusted R-squared:  0.05113 
# F-statistic:  5390 on 1 and 99998 DF,  p-value: < 2.2e-16

多重共線性の場合

大きな係数値がだまされる可能性のある3番目のケースは、変数間の有意な多重共線性の場合です。例として、XとYは高度に相関しているが、Wは他の2つと高度に相関していないデータセットを考えます。Zを予測しようとしています。

set.seed(144)
dat <- data.frame(W=rnorm(100000),
                  X=rnorm(100000))
dat$Y <- dat$X + rnorm(100000, 0, 0.001)
dat$Z <- 2*dat$W+10*dat$X-11*dat$Y + rnorm(100000)
cor(dat)
#              W             X             Y          Z
# W 1.000000e+00  5.191809e-05  5.200434e-05  0.8161636
# X 5.191809e-05  1.000000e+00  9.999995e-01 -0.4079183
# Y 5.200434e-05  9.999995e-01  1.000000e+00 -0.4079246
# Z 8.161636e-01 -4.079183e-01 -4.079246e-01  1.0000000

これらの変数はほぼ同じ平均(0)と分散(〜1)を持ち、線形回帰は(絶対値で)X(おおよそ15)とY(おおよそ-16)に、W(おおよそ2):

summary(lm(Z~W+X+Y, data=dat))
# Call:
# lm(formula = Z ~ W + X + Y, data = dat)
# 
# Residuals:
#     Min      1Q  Median      3Q     Max 
# -4.1886 -0.6760  0.0026  0.6679  4.2232 
# 
# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  1.831e-04  3.170e-03   0.058    0.954    
# W            2.001e+00  3.172e-03 630.811  < 2e-16 ***
# X            1.509e+01  3.177e+00   4.748 2.05e-06 ***
# Y           -1.609e+01  3.177e+00  -5.063 4.13e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 1.002 on 99996 degrees of freedom
# Multiple R-squared:  0.8326,  Adjusted R-squared:  0.8326 
# F-statistic: 1.658e+05 on 3 and 99996 DF,  p-value: < 2.2e-16

それでも、モデルWの3つの変数の中で最も重要です:完全なモデルからWを削除すると、R ^ 2は0.833から0.166に低下しますが、XまたはYを削除してもR ^ 2は実質的に変化しません。


1
(+1)これは良い答えだと思うので、この点を指摘しなければなりません。一方で、変数が標準化されている(つまりユニットがない)場合でも多くのことを言いたいと思うので、さらにいくつかの答えの余地があります。
マシュードゥルーリー

答えてくれてありがとう。あなたの文章は長いですが、小さな合成データから結論を導き出しているので、あまり徹底的ではありません。また、R ^ 2は線形回帰に固有です。より適切なエラーメトリックはRMSE、つまり分類問題の精度/ F1であると思います。
stackoverflowuser2010

1
あなたが最後の例では、データをスケーリング場合は、あなただけの重要な変動がWであることを持っている
marcodena

11

「特徴の重要性」は、すべての予測変数が共通のスケールに調整されている場合でも、非常に滑りやすい概念です(それ自体は、カテゴリー変数または歪んだ分布を含む多くの実際のアプリケーションで重要な問題です)。したがって、@ josliberによる回答で示されたスケーリングの問題や、@ dsaxtonで発生した低予測変数の問題を回避する場合、さらに問題があります。

たとえば、特徴の重要性のより有用な尺度は、その係数とその係数の推定誤差との比です。大きな推定誤差を伴う高い係数は、必ずしも予測に役立ちません。そのため、事前にスケーリングされた状況であっても、係数の大きさだけでは「重要性」の良いガイドにはなりません。

それにも関わらず、誤差に対する係数の大きさの比率が低い場合(つまり、「統計的に有意」ではない場合)でも、予測変数は重要です。線形モデルは、複数の予測変数を同時に考慮する機能を提供するため、モデルに「重要でない」予測変数を含めると、予測変数の組み合わせによって提供される全体的なパフォーマンスを改善できます。

さらに、「重要な」予測変数を選択する試みは、特定のデータサンプルに大きく依存する傾向があり、特に変数が相関している場合は、さらに多くのサンプルにうまく適用されないことがよくあります。同じデータセットの複数のブートストラップサンプルで機能選択を繰り返すことで、これを自分で確認できます。この回答の Frank Harrellは、rms機能の重要度をランク付けするためにRで彼のパッケージを使用する方法を示し、ランクの信頼区間を取得するためにブートストラップを使用する方法をこの回答でメモします。ブートストラップは、「機能の重要性」を重視しすぎている人にとっては注意として機能します。

@amoebaによって指摘されたほぼ3年前のこの質問は、多重回帰モデルにおける機能の重要性の難しさについても詳細に詳しく述べられています。


推定誤差の割合。これは「標準化係数」として知られていますか?
HelloWorldの

@StudentT a " 標準化係数 "は、独立変数と従属変数がすべて単位分散を持つようにスケーリングされている場合の回帰係数です。これには、係数の推定誤差に関する情報は含まれません。私が説明する比率は、最初のリンクで変数の重要度の尺度としてハレルが使用したWald統計量の平方根です。
EdM

6

前の答えに追加するだけで、係数自体も予測子が示す変動性を把握できず、予測を行う際の有用性に大きな影響を及ぼします。単純なモデルを検討してください

EY=α+βバツ

バツpp0β

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.