R의 분류 모델에 대한 증분 학습


11

아래 코드를 사용하여 사기 탐지를위한 분류 자 (결정 트리, 임의 포리스트, 로지스틱 회귀 등과 같은 표준 분류 자 ​​중 하나 일 수 있음) 가 있다고 가정합니다 .

library(randomForest)
rfFit = randomForest(Y ~ ., data = myData, ntree = 400) # A very basic classifier 

Say, Y is a binary outcome - Fraud/Not-Fraud

이제 보이지 않는 데이터 세트를 예측했습니다 .

pred = predict(rfFit, newData)

그럼 난 내 분류에 조사 팀의 피드백을 얻은 나는 분류하는 실수를 만든 것으로 나타났습니다 비 사기 (즉, 같은 사기 하나 위음성을 ) . 어쨌든 내 알고리즘이 실수했다는 것을 이해할 수있게 할 수 있습니까? 즉, 알고리즘에 피드백 루프를 추가하여 실수를 바로 잡을 수있는 방법은 무엇입니까?

내가 머리 위에서 생각할 수있는 한 가지 옵션 adaboost classifier은 새로운 분류 기가 이전의 실수를 바로 잡을 수 있도록하는 것이다. 또는 나는 무언가 들었 Incremental Learning또는 Online learning. 에 기존 구현 (패키지)이 R있습니까?

올바른 접근입니까? 또는 처음부터 모델을 작성하는 대신 모델을 조정할 수있는 다른 방법이 있습니까?


해결책을 찾았습니까? 나는 같은 문제가 있습니다.
Blu3nx

@ Blu3nx 질문에 대한 답변에는 답변을 사용하지 마십시오. 대답은 그들에게 대답하는 것입니다.
Tim

대답은 아니지만 myData $ Fraud [positionofincorrectvariable] = 올바른 값으로 이동하는 데 방해가되는 것은 무엇입니까?
Dale C

답변:


2

부스팅 전략은 모델의 성능을 향상시킬 수 있으므로 시도해 볼 가치가 있습니다. 점진적 / 온라인 학습과 관련하여 R에서 패키지를 구현하는 패키지를 알지 못합니다 (다른 경우 잘못하면 수정하십시오). Scikit Learn에는 점진적 학습을 허용하는 코어 외부 분류 기가 있습니다. 그러나 R 사용에 관심이있는 경우 고유 한 증분 모델을 작성하는 것 외에는 선택의 여지가 없습니다. 두 경우 모두 Scikit Learn의 코어 외부 분류기를 살펴보면 어디에서 시작해야하는지 알 수 있습니다.

명심해야 할 또 다른 세부 사항은 단일 오 탐지 또는 오 탐지에서 모델을 업데이트하면 모델의 성능이 향상되는 정도입니다. 사기 영역에서는 사기보다 사기가 아닌 사기의 경우가 일반적으로 수천에서 수백만 배 더 많습니다. 따라서 모든 사기 인스턴스를 올바르게 식별하는 방법을 배우는 것이 중요하지만 단일 사기 인스턴스에서 모델을 업데이트해도 모델이 크게 변경되지는 않습니다. 모델이 사기 인스턴스에 더 큰 의미를 부여하도록하는 다른 전략을 고려하십시오.

사람 조사관의 피드백을 기반으로 감독 모델을 개선하는 가장 간단한 방법은 수정 된 인스턴스 (예 : 올바르게 레이블 된 후 잘못 예측 된 인스턴스)와 별도의 모델을 작성하는 것입니다. 그런 다음 예측 된 클래스 멤버십을 집계하여 미래의 인스턴스 분류에 대해 두 모델을 "투표"할 수 있습니다. 예를 들어 ModelAInstance1 이 [Fraud : 0.65, Non-Fraud : 0.35] 라고 생각할 수있는 반면 ModelBInstance1 이 [Fraud : 0.47, Non-Fraud : 0.53] 이라고 생각할 수 있습니다. 따라서 앙상블의 예측은 [Fraud : (0.65 + 0.47) /2=0.56, Non-Fraud : (0.35 + 0.53) /2=0.44]가됩니다.

원래 모델이 우연히 수행하는 경우 성능이 올바르게 분류 된 인스턴스 수는 잘못 분류 된 수보다 많습니다. 따라서 모델이 불균형 한 수의 인스턴스에 대해 훈련 된 경우 모델에 동일한 가중치를 부여하지 않으려 고합니다. 이 차이를 처리하는 두 가지 간단한 옵션이 있습니다. 1) 원래 모델이 훈련 된 수와 대략 같은 수만큼 보정 된 인스턴스를 충분히 축적 할 때까지 기다리거나 2) 모델이 유효성 검사 세트에서 수행하는 방식에 따라 가중치를 각 모델에 할당합니다.


0

나는 과거에 온라인 및 증분 학습에 대해 조사했습니다. 고려해야 할 몇 가지 아이디어가 있습니다.

모든 분류자는 증분 학습을 '수행'할 수 있지만, 유일한 문제는 일부는 그렇게하기가 훨씬 어렵다는 것입니다. 증분 학습 알고리즘은 없으며 일반적인 알고리즘을 사용하여이 구매를 달성하는 방법 만 있습니다. 일반적으로, 당신은 그들 중 하나를 선택하고 그것을 훈련하고 온라인 방식으로 데이터를 공급하는 방식을 조정합니다.

다음 두 가지 방법으로이를 수행 할 수 있습니다. a) 새 샘플 (또는 샘플 세트)이 도착할 때마다 모델을 처음부터 다시 학습시킵니다. 분명히 이것은 이상적이지는 않지만 모델이 너무 복잡하지 않은 경우 (인스턴스간에 전체 훈련을 수행 할 수 있음을 의미) 데이터 세트 크기를 제한합니다 (오래된 데이터, 새로운 데이터 또는 임의의 데이터를 버리고 꾸준한 수의 교육 인스턴스를 유지함) ), 일부 시나리오에서 작동 할 수 있습니다. 서포트 벡터 머신을 사용한이 '의사 증분'학습의 좋은 예는 여기 에서 찾을 수 있습니다 .

b) 예측이 잘못되었을 때 이러한 매개 변수를 '조금만'수정하여 모델 매개 변수 / 가중치를 업데이트하는 방법을 찾으십시오. 신경망은 모델을 학습하고 가중치를 저장 한 다음 새로운 배치 데이터로 재교육 할 수 있으므로 당연히이 기능에 적합합니다. 또한 학습 속도를 조정하여 새로운 입력에 더 많거나 적은 관련성을 부여 할 수 있습니다. 귀하의 경우에 알고리즘을 선택할 수 있다면 이것이 나의 선택 일 것입니다. 그러나 다른 많은 방법이 있습니다. 예를 들어 베이지안 접근 방식에서는 특정 매개 변수에 숫자 증분 / 감소를 적용하여 분포를 수정할 수 있습니다 ( 다른 예는 참조 ).

학습 알고리즘 동작에 원하는 것과 일치하는 이전 접근 방식을 확인하고 읽으십시오. 처음에는이 라이브러리 나 해당 라이브러리를 사용하는 대신 모든 것을 스스로 설정하는 것이 어려워 보일 수 있지만 모델의 모든 학습 프로세스를 담당한다고 느끼는 시점에 도달하면 매우 차가워집니다.

행운을 빕니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.