タグ付けされた質問 「feature-selection」

さらなるモデリングで使用する属性のサブセットを選択する方法と原則


7
重回帰モデルに含める変数の選択
現在、多重線形回帰を使用してモデルを構築しています。私のモデルをいじくり回した後、どの変数を保持し、どの変数を削除するかをどのように決定するのが最善かわからない。 私のモデルは、DVの10個の予測子から始まりました。10個すべての予測変数を使用した場合、4つが有意と見なされました。明らかに正しくない予測子の一部のみを削除すると、最初は重要ではなかった予測子の一部が重要になります。私の質問に私を導きます:どの予測子をモデルに含めるかをどのように決定するのですか?すべての予測変数を使用してモデルを一度実行し、重要でない予測変数を削除してから再実行する必要があるように思えました。しかし、それらの予測子の一部のみを削除すると他の予測子が重要になる場合、このすべてに対して間違ったアプローチを取っているのではないかと疑問に思われます。 私はと信じて、このスレッドは私の質問に似ていますが、私は私が正しく議論を解釈していますが不明です。おそらくこれはより実験的なデザインのトピックですが、誰かが共有できる経験があるかもしれません。


3
なぜ変数の選択が必要なのですか?
一般的なデータベースの変数選択手順(たとえば、順方向、逆方向、ステップワイズ、すべてのサブセット)では、次のような望ましくないプロパティを持つモデルが生成される傾向があります。 ゼロから偏る係数。 標準誤差が小さすぎ、信頼区間が狭すぎます。 公示された意味を持たない統計とp値をテストします。 過度に楽観的なモデル適合の推定値。 意味のない用語が含まれる(例えば、下位の用語の除外)。 それでも、変数選択手順は持続します。変数選択の問題を考えると、なぜこれらの手順が必要なのですか?それらの使用の動機は何ですか? 議論を始めるためのいくつかの提案.... 解釈可能な回帰係数が必要ですか?(多くのIVを持つモデルで誤解されていますか?) 無関係な変数によって導入された分散を排除しますか? 独立変数間の不要な共分散/冗長性を排除しますか? パラメーター推定の数を減らす(検出力、サンプルサイズの問題) 他にありますか?変数選択手法によって対処される問題は、変数選択手順が導入する問題よりも多かれ少なかれ重要ですか?いつ使用する必要がありますか?いつ使用すべきではありませんか?

5
多くの独立変数から重要な予測因子を検出する
2つの重複しない母集団(患者と健康、合計n=60n=60n=60)のデータセットで、(300300300独立変数から)連続従属変数の有意な予測子を見つけたいと思います。予測変数間の相関が存在します。予測変数のいずれかが(可能な限り正確に従属変数を予測するのではなく)「実際に」従属変数に関連しているかどうかを調べることに興味があります。多数の可能なアプローチに圧倒されたので、どのアプローチが最も推奨されるかを尋ねたいと思います。 私の理解から、予測因子の段階的な包含または除外は推奨されません たとえば、予測子ごとに個別に線形回帰を実行し、FDRを使用した多重比較のためにp値を修正します(おそらく非常に保守的ですか?) 主成分回帰:個々の予測変数の予測力については説明できず、コンポーネントについてのみ説明できるため、解釈が困難です。 他の提案はありますか?

6
バイナリ分類の変数選択手順
学習セットの観測値よりも多くの変数/機能がある場合、バイナリ分類に適した変数/機能の選択は何ですか?ここでの目的は、分類エラーを最適に削減する機能選択手順を説明することです。 一貫性の表記法を修正できます:場合、をグループからの観測値の学習セットとします。したがって、は学習セットのサイズです。私たちは、セット多くの特徴(特徴空間の次元をIE)であることを。ましょ表すの座標番目の。i∈{0,1}i∈{0,1}i \in \{0, 1\}{xi1,…,xini}{x1i,…,xnii}\{x_1^i,\dots, x_{n_i}^i\}iiin0+n1=nn0+n1=nn_0 + n_1 = npppx[i]x[i]x[i]iiix∈Rpx∈Rpx \in \mathbb{R}^p 詳細を提供できない場合は、完全な参考文献を提供してください。 編集(継続的に更新):以下の回答で提案されている手順 貪欲な前方選択 バイナリ分類のための変数選択手順 バイナリ消去のための後方消去変数選択手順 メトロポリススキャン/ MCMC バイナリ分類の変数選択手順 ペナルティ付きロジスティック回帰 バイナリ分類の変数選択手順 これはコミュニティWikiであるため、より多くの議論と更新があります。 ある意味で、変数の順序付けは許可するが変数の選択は許可しない手順を提供します(機能の数の選択方法については非常にわかりにくいので、クロス検証を使用すると思いますか?)この方向の答えは?これはあなたが変数の数を選択する方法についての情報を追加するために、回答writterするコミュニティ必要はありませんされてウィキとして(?私はここで、この方向での質問opennedているの数を選択することが非常に高い次元でのクロス検証を(非常に高次元の分類で使用される変数))

3
変数選択を実行するときに多重共線性に対処する方法は?
9つの連続した独立変数を持つデータセットがあります。私はこれらの変数の中から選択して、モデルを単一のパーセンテージ(従属)変数に適合させようとしていますScore。残念ながら、いくつかの変数の間には深刻な共線性があることがわかっています。 私はstepAIC()変数選択のためにR の関数を使用しようとしましたが、奇妙なことに、その方法は変数が方程式にリストされている順序に敏感なようです... Rコードは次のとおりです(パーセンテージデータであるため、スコアにはロジット変換を使用します)。 library(MASS) library(car) data.tst = read.table("data.txt",header=T) data.lm = lm(logit(Score) ~ Var1 + Var2 + Var3 + Var4 + Var5 + Var6 + Var7 + Var8 + Var9, data = data.tst) step = stepAIC(data.lm, direction="both") summary(step) 何らかの理由で、方程式の先頭にリストされている変数がstepAIC()関数によって選択されることになり、結果は、たとえばVar9最初に(チルダに続いて)リストすることで操作できることがわかりました。 ここでモデルを適合させるより効果的な(そして論争の少ない)方法は何ですか?私は実際に線形回帰を使用することについては行き詰まっているわけではありません。私が望むのは、9つの変数のどれが変数の変動を本当に引き起こしているかを理解できることScoreです。これは、これらの9つの変数の共線性の強力な可能性を考慮に入れた方法であることが望ましい。

1
自由度は非整数の数値にできますか?
GAMを使用すると、残留DFは(コードの最終行)になります。どういう意味ですか?GAMの例を超えて、一般に、自由度の数を整数以外の数にすることはできますか?26.626.626.6 > library(gam) > summary(gam(mpg~lo(wt),data=mtcars)) Call: gam(formula = mpg ~ lo(wt), data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -4.1470 -1.6217 -0.8971 1.2445 6.0516 (Dispersion Parameter for gaussian family taken to be 6.6717) Null Deviance: 1126.047 on 31 degrees of freedom Residual Deviance: 177.4662 on 26.6 degrees of …
27 r  degrees-of-freedom  gam  machine-learning  pca  lasso  probability  self-study  bootstrap  expected-value  regression  machine-learning  linear-model  probability  simulation  random-generation  machine-learning  distributions  svm  libsvm  classification  pca  multivariate-analysis  feature-selection  archaeology  r  regression  dataset  simulation  r  regression  time-series  forecasting  predictive-models  r  mean  sem  lavaan  machine-learning  regularization  regression  conv-neural-network  convolution  classification  deep-learning  conv-neural-network  regression  categorical-data  econometrics  r  confirmatory-factor  scale-invariance  self-study  unbiased-estimator  mse  regression  residuals  sampling  random-variable  sample  probability  random-variable  convergence  r  survival  weibull  references  autocorrelation  hypothesis-testing  distributions  correlation  regression  statistical-significance  regression-coefficients  univariate  categorical-data  chi-squared  regression  machine-learning  multiple-regression  categorical-data  linear-model  pca  factor-analysis  factor-rotation  classification  scikit-learn  logistic  p-value  regression  panel-data  multilevel-analysis  variance  bootstrap  bias  probability  r  distributions  interquartile  time-series  hypothesis-testing  normal-distribution  normality-assumption  kurtosis  arima  panel-data  stata  clustered-standard-errors  machine-learning  optimization  lasso  multivariate-analysis  ancova  machine-learning  cross-validation 

5
PCAが分類器の結果を悪化させる原因は何ですか?
クロスバリデーションを行っている分類子と、機能の最適な組み合わせを見つけるために前方選択を行っている100個程度の機能があります。また、これをPCAで同じ実験を実行した場合と比較します。PCAでは、潜在的な特徴を取り、SVDを適用し、元の信号を新しい座標空間に変換し、前方選択プロセスで上位特徴を使用します。kkk 私の直感では、信号は元の機能よりも「有益」であるため、PCAは結果を改善します。PCAに対する私の素朴な理解は、私をトラブルに導きますか?PCAが特定の状況では結果を改善するが、他の状況では結果を悪化させる一般的な理由のいくつかを提案できますか?

3
Lassoで特定された変数のサブセットでOLS推定よりもLasso推定を使用する理由
なげなわ回帰、最適なソリューション(最小テストエラーなど)でk個の特徴が選択され、その結果、帽子{\ベータ} \ \帽子{\ベータ} ^ {投げ縄} = \左(\ハット{\ベータ} _1 ^ {投げ縄} \帽子{\ベータ} _2 ^ {投げ縄}、... _k ^ {lasso}、0、... 0 \ right)。L(β)=(Xβ−y)′(Xβ−y)+λ∥β∥1,L(β)=(Xβ−y)′(Xβ−y)+λ‖β‖1,L(\beta)=(X\beta-y)'(X\beta-y)+\lambda\|\beta\|_1,kkkβ^lasso=(β^lasso1,β^lasso2,...,β^lassok,0,...0)β^lasso=(β^1lasso,β^2lasso,...,β^klasso,0,...0)\hat{\beta}^{lasso}=\left(\hat{\beta}_1^{lasso},\hat{\beta}_2^{lasso},...,\hat{\beta}_k^{lasso},0,...0\right) 我々はそれを知っている(β^lasso1,β^lasso2,...,β^lassok)(β^1lasso,β^2lasso,...,β^klasso)\left(\hat{\beta}_1^{lasso},\hat{\beta}_2^{lasso},...,\hat{\beta}_k^{lasso}\right)です\ left(\ beta_1、\ beta_2、...、\ beta_k \ right)の偏った推定値な(β1,β2,...,βk)(β1,β2,...,βk)\left(\beta_1,\beta_2,...,\beta_k\right)ので、なぜ「合理的」ではなくβ^lassoβ^lasso\hat{\beta}^{lasso}を最終解として採用するのですか?β^new=(β^new1:k,0,...,0)β^new=(β^1:knew,0,...,0)\hat{\beta}^{new}=\left(\hat{\beta}_{1:k}^{new},0,...,0\right)、ここでβ^new1:kβ^1:knew\hat{\beta}_{1:k}^{new}は、部分モデルLnew(β1:k)=(X1:kβ−y)′(X1:kβ−y)Lnew(β1:k)=(X1:kβ−y)′(X1:kβ−y)L^{new}(\beta_{1:k})=(X_{1:k}\beta-y)'(X_{1:k}\beta-y)。(X1:kX1:kX_{1:k}は、選択されたk個のフィーチャに対応するXの列を示します)。XXXkkk 手短に言えば、変数選択だけでなく、選択した特徴の推定をOLSに任せるのではなく、特徴選択とパラメーター推定の両方にLassoを使用するのはなぜですか? (また、「Lassoは最大でnnn機能を選択できる」とはどういう意味ですか?nnnはサンプルサイズです。)

6
トレーニングよりも高いテスト精度。解釈する方法は?
多くの機能(1000を超える)を備えた最大150のサンプル(トレーニングとテストに分割)を含むデータセットを持っています。データに対して適切に機能する分類子と特徴選択方法を比較する必要があります。そのため、3つの分類方法(J48、NB、SVM)と2つの機能選択方法(CFS、WrapperSubset)を異なる検索方法(Greedy、BestFirst)で使用しています。 比較しながら、トレーニングの精度(5倍クロスフォールディング)とテストの精度を調べています。 J48およびCFS-BestFirstの結果の1つを次に示します。 {「accuracyTraining」:95.83、「accuracyTest」:98.21} 多くの結果はこのようなものであり、SVMにはテストの精度がトレーニングよりもはるかに高いことを示す多くの結果があります(トレーニング:60%、テスト:98%) これらの結果をどのように有意義に解釈できますか?それが低ければ、私はそれが過剰適合であると言うでしょう。すべての結果を見ることで、この場合のバイアスと分散について何か言いたいことがありますか?この分類を意味のあるものにするために何ができますか?たとえば、トレーニングセットとテストセットを再選択するか、すべてのデータで相互検証を使用するだけですか? 73のトレーニングインスタンスと58のテストインスタンスがあります。一部の回答には、投稿時にこの情報がありませんでした。

3
大きな、小さな問題を扱うときのモデルの安定性
イントロ: 古典的な「大きなp、小さなnの問題」のデータセットがあります。利用可能なサンプル数n = 150で、可能な予測子の数p = 400。結果は連続変数です。 最も「重要な」記述子、つまり、結果を説明し、理論の構築を支援するのに最適な記述子を見つけたいと思います。 このトピックに関する調査の後、大きなp、小さなnの場合にLASSOとElastic Netが一般的に使用されることがわかりました。私の予測子のいくつかは非常に相関しており、重要度評価でそれらのグループを保持したいので、Elastic Netを選択しました。重要度の尺度として回帰係数の絶対値を使用できると思います(間違っている場合は修正してください。データセットは標準化されています)。 問題: サンプル数が少ないので、どのようにして安定したモデルを実現できますか? 私の現在のアプローチは、MSEスコアを平均する10倍の交差検証を使用して、データセットの90%でグリッド検索で最適なチューニングパラメーター(ラムダとアルファ)を​​見つけることです。次に、データセットの90%全体で最適なチューニングパラメーターを使用してモデルをトレーニングします。データセットの10%のホールドアウトでRの2乗を使用してモデルを評価できます(これは15サンプルのみです)。 この手順を繰り返し実行すると、Rの2乗評価に大きなばらつきが見つかりました。同様に、非ゼロの予測子の数はその係数と同様に異なります。 予測変数の重要性のより安定した評価と、最終モデルのパフォーマンスのより安定した評価を取得するにはどうすればよいですか? 手順を繰り返し実行して多くのモデルを作成してから、回帰係数を平均できますか?または、モデルの予測子の出現回数を重要度スコアとして使用する必要がありますか? 現在、40から50個の非ゼロの予測子を取得しています。安定性を高めるために、予測子の数をより厳しくペナルティにすべきですか?

2
モデル選択のための最良のアプローチベイジアンまたは交差検証?
さまざまなモデルまたは含める機能の数を選択しようとすると、2つのアプローチが考えられます。 データをトレーニングセットとテストセットに分割します。さらに良いことには、ブートストラップまたはk-fold交差検証を使用します。トレーニングセットで毎回トレーニングを行い、テストセットの誤差を計算します。テストエラーとパラメーターの数をプロットします。通常、次のようになります。 パラメーターの値を積分することにより、モデルの尤度を計算します。すなわち、を計算し、これをパラメーターの数に対してプロットします。次に、次のようなものを取得します。∫θP(D | θ )P(θ)dθ∫θP(D|θ)P(θ)dθ\int_\theta P(D|\theta)P(\theta)d \theta だから私の質問は: これらのアプローチは、この問題を解決するのに適していますか(モデルに含めるパラメーターの数を決定するか、いくつかのモデルから選択する)。 それらは同等ですか?おそらくない。特定の仮定の下で、または実際に同じ最適モデルを提供しますか? ベイジアンモデルなどで事前知識を指定するという通常の哲学的な違い以外に、各アプローチの長所と短所は何ですか?どちらを選びましたか? 更新: AICとBICの比較 に関する関連する質問も見つけました。私の方法1はAICと漸近的に等価であり、方法2はBICと漸近的に関連しているようです。しかし、BICはLeave-One-Out CVと同等であることも読んでいます。これは、LOO CVがKフォールドCVに等しい場合、トレーニングエラーの最小値とベイジアン尤度の最大値が等しいことを意味します。おそらく非常に興味深い論文「Jun Shaoによる「線形モデル選択のための漸近理論」」はこれらの問題に関連しています。


1
LASSOが高次元で完全な予測子ペアを見つけられないのはなぜですか?
RでLASSO回帰を使用した小規模な実験を実行して、完全な予測子ペアを見つけることができるかどうかをテストしています。ペアは次のように定義されます:f1 + f2 =結果 ここでの結果は、「年齢」と呼ばれる所定のベクトルです。F1とf2は、年齢ベクトルの半分を取得し、残りの値を0に設定することによって作成されます。たとえば、次のとおりです。age = [1,2,3,4,5,6]、f1 = [1,2,3、 0,0,0]およびf2 = [0,0,0,4,5,6]。正規分布N(1,1)からサンプリングすることにより、この予測子のペアとランダムに作成される変数の量を増やします。 私が見るのは、2 ^ 16個の変数をヒットしたとき、LASSOがもうペアを見つけられないことです。以下の結果を参照してください。 なぜこうなった?以下のスクリプトで結果を再現できます。たとえば、[1:193]という異なる年齢のベクトルを選択すると、LASSOは高次元(> 2 ^ 16)でペアを見つけます。 スクリプト: ## Setup ## library(glmnet) library(doParallel) library(caret) mae <- function(errors){MAE <- mean(abs(errors));return(MAE)} seed = 1 n_start <- 2 #start at 2^n features n_end <- 16 #finish with 2^n features cl <- …

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