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의 코어 외부 분류기를 살펴보면 어디에서 시작해야하는지 알 수 있습니다.

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

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