2012-06-12 4 views
3

내 모델의 변수를 선택하기 위해 R에 caret 패키지를 사용하고 있습니다. rfe 명령을 사용하는 경우 메서드 매개 변수가있는 rfeControl 개체를 전달해야합니다. 이 매개 변수의 옵션은 boot, cv, LOOCV 및 LGOCV입니다. 내가 시계열 데이터를 다루고 있기 때문에 특별한 부트 스트래핑/교차 검증 기술을 사용해야한다. 보통의 것들은 시계열 데이터에는 적용되지 않는다 (그렇지 않으면 배포판이 손상된다.).캐럿 패키지 : 자체 부트 스트랩 방법을 구현할 수 있습니까?

제 질문은 어떻게 부트 스트래핑 자체 구현을 플러그인하지만 여전히 내가 필요로하는 모든 것을 가지고있는 rfe 메소드를 사용하는 것입니다.

+0

일반적으로 말하자면, 코드의 나머지 부분과 어떻게 조화를 이루고 있는지 확인하기 위해 소스 코드를 살펴보고 필요한 부분을 수정하십시오. – Chase

답변

1

쉬운 방법은 없습니다. rfe.default()에 대한 코드를 공부하면 method = "boot"createResample() 기능이 사용 된 경우에주의하십시오. 이것은 부트 스트랩 샘플을 생성하는 함수입니다. 비슷한 기능이 다른 CV 방법에 사용됩니다.

어려운 방법이 있습니다. 가장 적절한 create*() 함수를 추월하십시오. 블록 부트 스트랩 또는 ME 부트 스트랩을하고 createResample() 함수를 인수하고 method = "boot"을 사용하거나 특수한 형식의 CV를 원할 경우 method = "cv"을 사용하고 createFolds()을 인수한다고 가정 해보십시오.

자신의 create*() 함수를 작성하고 캐럿 NAMESPACE에있는 함수를 사용자 버전으로 바꾸어야합니다. 쉬운 일은 아니지만 탁월한 행보. 자신의 createResample() 함수를 작성한다고 가정 해보십시오. 먼저이 함수는 times 열과 행이있는 샘플을 가지고 행렬에 이것을 반환하는 n = times 부트 스트랩 샘플을 생성합니다. 동일한 객체를 반환하지만 적용 할 시계열 부트 스트랩을 수행하는 사용자 정의 createResample() 함수를 작성해야합니다.

해당 함수를 작성한 후에는 캐럿 패키지의 함수에서 사용되도록 캐럿 네임 스페이스에 가져와야합니다. 이를 위해 assignInNamespace()을 사용하십시오. 캐럿 네임 스페이스에이를 삽입, 작업 공간 새 부트 스트랩 기능이 createMyResample()이라고하며이 말은 수행

assignInNamespace("createResample", createMyResample, ns = "caret") 

죄송합니다 좀 더 구체적으로 할 수 있지만 당신이 원하는 방법 을 말하지 않는다 부트 스트랩/CV를 수행하거나 리샘플링을 수행하는 데 사용할 R 코드가 없습니다. 리샘플링을 수행하는 방법에 대한 자세한 내용을 제공하면 다시 살펴보고 create*() 함수를 작성하는 데 도움을 줄 수 있는지 확인합니다.

이 모든 작업을 수행하지 못하면 캐트 작성자이자 관리자 인 Max Kuhn에게 문의하십시오. 그는 더 많은 조언을 드릴 수 있거나 최소한이 기능을 향후 버전의 희망 목록으로 제안 할 수 있습니다.

+0

@Max가이 부분에서 본적이 있습니다. –

+0

답장을 보내 주셔서 감사합니다. 내가 다루는 또 다른 어려움이 있습니다. 즉, createResample 함수를 살펴보면 결과는 예제의 _indices_입니다. 내가 사용하게 될 meboot 패키지는 _indices_가 아니라 _bootstrapped timeseries_를 출력하기 때문에, 그것은 추가로 어려움이 있습니다. caret의 rfe가 그것을 설명하기 위해 왜곡 될 수 있는지 알아 봅니다. BTW : assignInNamespace는 함수의 이름 만 첫 번째 매개 변수로 사용하므로 "createResample()"대신 "createResample"을 사용해야합니다. –

+0

@ GregaKešpret 오타를 찾아 주셔서 감사합니다. 고칠거야. 아마도 ** meboot **를 해킹하여 해킹 ** 캐럿 **보다 인덱스를 반환하는 것이 더 쉬울 것입니다. 후자는 시계열을 받아 들일 수 있도록 가능한 한 모듈 식으로 설계되지 않았습니다. –