p- 값을 기준으로 기능을 선택하는 것이 잘못 되었습니까?


12

기능을 선택하는 방법에 대한 몇 가지 게시물이 있습니다. 이 방법 중 하나는 t- 통계량에 따라 기능의 중요성을 설명합니다. 표준화 된 피쳐가있는 varImp(model)선형 모형에 적용된 R에서는 각 모형 매개 변수에 대한 t- 통계량의 절대 값이 사용됩니다. 따라서 기본적으로 t- 통계량을 기준으로 피처를 선택합니다. 이는 계수의 정확도를 의미합니다. 그러나 나의 계수의 정확성은 그 특징의 예측 능력에 대해 뭔가를 말해줍니까?

내 기능에 t 통계가 낮지 만 모델의 정확도는 여전히 향상 될 수 있습니까? 그렇다면, t- 통계량에 기초한 변수를 언제 제외하고 싶습니까? 아니면 중요하지 않은 변수의 예측 능력을 확인하기위한 시작점을 제공합니까?


3
평균의 1- 표본 검정의 경우, t 통계량은 단순히 표본 평균을 추정 된 표준 오차 (샘플 표준 편차를 표본 크기의 제곱근으로 나눈 값)로 나눈 것입니다. 이 통계 자체 특정 가설에 의존 하지 않습니다 . 그 통계에서 AP 값을 도출하는 것은 않은 가설에 따라 달라집니다.
Dan Hicks

@ DanHicks 질문을 편집했습니다.
Alina

캐럿에 익숙하지는 않지만 varImp()정보 제공 또는 진단 기능을위한 것으로 기능 선택 또는 제거에 직접 사용되지 않는 것 같습니다 .
david25272

답변:


11

t- 통계량은 피처의 예측 능력에 대해 아무 말도 할 수 없으며 예측 변수를 화면 밖으로 보거나 예측 변수를 예측 모델로 만드는 데 사용해서는 안됩니다.

p- 값은 가짜 기능이 중요하다고 말합니다

R에서 다음 시나리오 설정을 고려하십시오. 두 개의 벡터를 만들어 봅시다. 첫 번째는 단순히 랜덤 코인 플립입니다.5000

set.seed(154)
N <- 5000
y <- rnorm(N)

두 번째 벡터는 관측치이며 각각 동일한 크기의 랜덤 클래스 중 하나에 무작위로 할당됩니다 .5000500

N.classes <- 500
rand.class <- factor(cut(1:N, N.classes))

이제 우리는 y주어진 예측을 위해 선형 모델을 적합합니다 rand.classes.

M <- lm(y ~ rand.class - 1) #(*)

올바른 계수의 모든 값들을 하나도없는 0 인 모든 예측력. 그럼에도 불구하고, 그들 중 많은 수가 5 % 수준에서 중요합니다.

ps <- coef(summary(M))[, "Pr(>|t|)"]
hist(ps, breaks=30)

p- 값의 히스토그램

실제로 예측력이 없더라도 약 5 %가 중요 할 것으로 예상됩니다!

P- 값이 중요한 기능을 감지하지 못함

다른 방향의 예가 있습니다.

set.seed(154)
N <- 100
x1 <- runif(N)
x2 <- x1 + rnorm(N, sd = 0.05)
y <- x1 + x2 + rnorm(N)

M <- lm(y ~ x1 + x2)
summary(M)

각각 예측력이있는 두 개의 상관 된 예측 변수를 만들었습니다 .

M <- lm(y ~ x1 + x2)
summary(M)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.1271     0.2092   0.608    0.545
x1            0.8369     2.0954   0.399    0.690
x2            0.9216     2.0097   0.459    0.648

p- 값은 두 변수의 예측 검정력을 탐지하지 못합니다. 상관 관계는 모형이 데이터에서 두 개의 개별 계수를 얼마나 정확하게 추정 할 수 있는지에 영향을 미치기 때문입니다.

추론 통계는 변수의 예측력 또는 중요성에 대해 알려주지 않습니다. 이러한 측정 방법을 사용하는 것은 이러한 측정을 남용합니다. 예측 선형 모형에서 변수 선택에 사용할 수있는 훨씬 더 나은 옵션이 있습니다 glmnet.

(*) 여기서 가로 채기를 생략하고 있으므로 모든 비교는 첫 번째 클래스의 그룹 평균이 아니라 0의 기준선에 대한 것입니다. 이것은 @ whuber의 제안이었습니다.

주석에서 매우 흥미로운 토론으로 이어 졌으므로 원래 코드는

rand.class <- factor(sample(1:N.classes, N, replace=TRUE))

M <- lm(y ~ rand.class)

다음 히스토그램으로 이어졌습니다

p- 값의 기울어 진 히스토그램


2
흠, 왜이 p- 값 분포가 균일하지 않습니까?
amoeba는 Reinstate Monica

4
와우, 씨앗 번호를 어떻게 고르셨어요? 다른 어떤 결과는 거의 균일 한 ps ...
psychOle

3
나는 이런 종류의 일에 항상 같은 씨앗을 사용하려고합니다. en.wikipedia.org/wiki/154_ (앨범)
Matthew Drury

9
잘못된 테스트를 수행하고 있습니다. 499 그룹 평균을 첫 번째 그룹 평균과 비교하고 있습니다. 시드 154에서 첫 번째 그룹 평균 1.18 ...은 비정상적으로 높으며 (그룹 크기가 5로 작기 때문에 발생할 수 있음) 대부분의 다른 그룹은 상당히 부정적인 영향을 미칩니다. 모델을 실행하여 수정하십시오 lm(y ~ rand.class - 1). 모든 발언의 유효성을 변경하지는 않습니다 (+1). 더욱 설득력있게하기 위해 그룹 규모의 균형을 맞추십시오.rand.class <- cut(1:N, N.classes)
whuber

1
물론 : / 나는 100 % @whuber가 떨어질 것으로 예상하고 내가 놓친 것을 완전히 명확하고 분명하게 말합니다. 이제 해결하겠습니다.
Matthew Drury

2

t- 통계량은 효과 크기와 샘플 크기의 영향을받습니다. 효과 크기가 0이 아니지만 샘플 크기가 충분히 크지 않은 경우가 있습니다.

평균에 대한 간단한 T- 검정 (특성의 영향이 0 인 경우의 테스트와 유사 함)에서 T 통계량은t=(x¯s)n

x¯s 는 효과 크기의 샘플 추정치입니다. 크기가 작 으면 항이 커질 때까지 p- 값이 유의하지 않습니다 .n

귀하의 경우 효과가 0이 아닌 기능은 성능을 향상 시키지만 해당 기능의 p- 값을 중요하게 만들기에 충분한 데이터가 없을 수 있습니다.


4
효과가 0이 아닌 기능이 성능을 향상시키는 것은 사실이라고 생각하지 않습니다. 아마도 이것은 훈련 데이터에서는 사실 일 수도 있지만 테스트 데이터 에는 확실하지 않습니다 .
Matthew Drury

@MatthewDrury 샘플에서 모집단 측정을 유추 할 방법이 부족하다고 말씀하십니까?
Todd D

아니요, 그러나 허위 기능이 귀하의 능력을 방해 할 수 있다는 것은 사실입니다.
Matthew Drury
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.