Nestfs는 선택 절차의 핵심 구성 요소로서 교차 검증을 채택하는 선형 및 로지스틱 회귀를 기반으로 전방 선택을 구현합니다.
전방 선택은 본질적으로 느린 접근 방식입니다. 각 변수에 대해 모델을 장착해야합니다. 우리의 구현에서,이 문제는 각 반복에서 내부 교차 검증이 발생한다는 사실에 의해 더욱 악화되며, 더 나은 일반화 속성을 가진 변수를 향한 선택을 목표로합니다.
병렬 패키지 덕분에 코드는 내부 주름에 대해 병렬화됩니다. 따라서 사용자 시간은 사용 가능한 코어의 수에 따라 다르지만 내부 주름보다 더 많은 코어를 사용하는 데는 이점이 없습니다. "MC.Cores"옵션을 설정하여 시작하기 전에 계산에 할당 된 코어 수는 시작해야합니다.
순방향 선택의 주요 장점은 즉시 해석 가능한 모델을 제공하고, 얻은 변수 패널은 어떤 의미에서 가장 중복되는 변수입니다. 특히 선택할 변수 수가 너무 크지 않은 경우 약 30-40 변수).
그러나 변수의 수가 그보다 훨씬 더 클 때, 전진 선택은 견딜 수 없을 정도로 느리는 것 외에도 탐욕스러운 디자인의 특성 인 과적으로 더 적합 할 수 있습니다.
크랜에서 사전 컴파일 된 패키지를 사용할 수 있습니다.
먼저 패키지를로드하고 mc.cores
옵션을 설정하여 사용할 코어 수를 등록하십시오. 대형 멀티 코어 머신에서 작업 할만 큼 운이 좋으면 사용중인 내부 주름의 수만큼 많은 코어를 등록함으로써 최상의 성능이 달성됩니다 (기본값은 30).
library( nestfs )
options( mc.cores = 10 )
연령과 성별 만 포함 된 기준선 모델에서 전진하기 위해서는 다음과 같습니다.
data( diabetes )
fs.res <- fs( Y ~ age + sex , diabetes , family = gaussian())
summary( fs.res )
# # vars fdr llks diffs iter
# # 1 age NA NA NA NA
# # 2 sex NA -2136.854 NA NA
# # 3 ltg 7.008928e-10 -2058.831 78.022766 1
# # 4 bmi 1.850715e-05 -2009.568 49.263387 2
# # 5 map 2.020038e-03 -1999.253 10.314799 3
# # 6 age.sex 1.508210e-02 -1992.544 6.709064 4
# # 7 hdl 4.039276e-02 -1985.208 7.336623 5
# # 8 bmi.map 7.474167e-02 -1980.913 4.294736 6
기본적으로 선택은 초기 모델의 일부가 아닌 데이터에 존재하는 모든 변수에 대해 선택이 발생합니다. 변수 이름 또는 지수를 허용하는 choose.from
옵션을 통해 제어 할 수 있습니다.
Log-Likelihood (옵션 min.llk.diff
)의 더 큰 개선을 요청하여 Sparser 선택을 촉진 할 수 있습니다. 특히 선택할 변수 수가 10-15를 초과 할 때 특히 그렇습니다. 2 개 설정 (이미 다른 패키지에 의해 채택 된 것보다 이미 더 엄격 함)은 과결한 결합으로 이어질 수 있습니다. 어쨌든 반복 횟수를 줄임으로써 선택한 패널의 최대 크기를 설정할 수 있습니다 (기본적으로 max.iters
으로 10으로 설정).
중첩 된 전진 선택은 교차 검증 주름의 각 훈련 분할에서 선택 과정의 안정성을 평가하는 데 도움이됩니다.
folds <- create.folds( 10 , nrow( diabetes ), seed = 1 )
nest.res <- nested.fs( Y ~ age + sex , diabetes , family = gaussian(), folds = folds )
summary( nest.res )
# # vars percent coef coefIQR rank rankIQR diffLogLik diffLogLikIQR
# # 1 bmi 100 24.547 (23.61, 25.48) 2 (1.00, 2.00) 61.021 (44.49, 76.85)
# # 2 ltg 100 23.729 (22.39, 24.41) 2 (1.00, 2.00) 52.868 (36.09, 69.36)
# # 3 map 100 15.147 (14.45, 15.88) 3 (3.00, 3.75) 8.366 (8.04, 9.61)
# # 4 hdl 100 -13.297 (-13.65, -12.55) 4 (4.00, 4.00) 6.728 (6.35, 7.83)
# # 5 age.sex 80 8.825 (8.72, 9.24) 5 (5.00, 6.00) 4.625 (4.45, 5.37)
# # 6 bmi.map 70 8.165 (7.55, 8.27) 6 (5.50, 7.00) 3.604 (2.66, 4.15)
# # 7 bmi.glu 20 4.460 (4.07, 4.85) 5 (5.00, 5.00) 3.535 (3.09, 3.98)
# # 8 glu.2 20 6.477 (6.47, 6.49) 6 (6.25, 6.75) 2.984 (2.56, 3.41)
# # 9 sex.map 20 6.862 (6.71, 7.01) 6 (5.25, 5.75) 2.936 (2.89, 2.98)
# # 10 age.glu 10 7.469 (7.47, 7.47) 3 (3.00, 3.00) 4.826 (4.83, 4.83)
# # 11 age.map 10 7.365 (7.36, 7.36) 6 (6.00, 6.00) 2.679 (2.68, 2.68)
# # 12 bmi.2 10 7.987 (7.99, 7.99) 6 (6.00, 6.00) 2.466 (2.47, 2.47)
위의 출력은 bmi
, ltg
, map
및 hdl
이 모든 주름으로 선택되며, 대부분의 적합 개선은 처음 두 변수에 의해 제공되며 모든 데이터에서 전방 선택을 실행할 때 발견 된 내용에 동의합니다.
가장 중요한 것은 중첩 된 전진 선택이 선택 프로세스의 성능을 교차 검증 한 측정 값을 생성하는데, 이는 철회 된 데이터에서 선택된 패널의 예측 성능에 대한 편견없는 추정치입니다.
nested.performance( nest.res )
# # Correlation coefficient: 0.7097
이것은 동일한 교차 검증 접힘 세트에서 기준선 모델에 의해 얻은 것과 비교할 수 있습니다.
base.res <- nested.glm( Y ~ age + sex , diabetes , family = gaussian(), folds = folds )
nested.performance( base.res )
# # Correlation coefficient: 0.1551
M. Colombo, HC Looker, B. Farran et al., 혈청 신장 손상 분자 1 및 Beta-2- 마이크로 글로불린은 제 2 형 당뇨병에서 신장 기능의 급속한 감소를 예측하기 위해 더 큰 패널 (2019) 62 (2019) 62 ( 1) : 156-168. https://doi.org/10.1007/S00125-018-4741-9
HC Looker, M. Colombo, S. Hess et al., 제 2 형 당뇨병에서 급속한 만성 신장 질환 진행의 바이오 마커, Kidney International (2015), 88 (4) : 888-896. https://doi.org/10.1038/ki.2015.199
HC Looker, M. Colombo, F. Agakov et al., 제 2 형 당뇨병에서 심혈관 질환의 예측을위한 단백질 바이오 마커, 당뇨병, 당뇨병 (2015) 58 (6) : 1363-1371. https://doi.org/10.1007/S00125-015-3535-6