rforest
랜덤 포레스트 모델(Random Forest, 여러 개의 결정 트리를 임의로 학습하는 앙상블 방식)을 사용하여 입력 데이터의 분류값을 예측합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 미지원 |
| 분산 실행 | 분석 노드에서 실행 (reducer) |
문법
사전에 학습된 모델을 사용하여 예측하려면
서브쿼리로 학습 데이터를 조회한 후 예측하려면
옵션
model=STR- 랜덤 포레스트 모델의 이름. 소나 웹 콘솔 또는 로그프레소 셸을 통하여 머신러닝 모델을 생성하고 학습할 수 있습니다.
target=STR- 타겟 필드 이름. 랜덤 포레스트 분류에서 예측 대상으로 사용할 필드를 지정합니다.
timeout=INT{s|m|h|d}- 서브쿼리 실행 제한 시간. 지정한 시간 내에 서브쿼리가 완료되지 않으면 서브쿼리를 취소합니다.
scorer=INT- 예측에 가장 큰 영향을 미친 상위 N개 필드를
_scorer출력 필드에 할당합니다. 지정하지 않으면_scorer필드를 출력하지 않습니다.model옵션을 사용하는 예측과 서브쿼리 학습 예측 모두에 적용됩니다.
대상
FIELD, ...- 랜덤 포레스트 분석에 사용할 특성(feature) 필드 목록. 쉼표(
,)로 구분하여 여러 필드를 지정할 수 있습니다. 필드 값으로 숫자, 날짜, IP 주소, 문자열을 사용할 수 있습니다. 문자열 값은 내부적으로 인코딩하여 처리합니다. [ SUBQUERY ]- 학습 데이터를 조회하는 서브쿼리. 서브쿼리 결과를 사용하여 랜덤 포레스트 모델을 구성한 후, 입력 레코드에 대해 예측을 수행합니다.
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| _guess | 문자열 | 예측된 타겟 필드의 분류값 |
| _rforest_error | 문자열 | 서브쿼리 모드에서 오류가 발생한 경우 오류 메시지를 할당합니다. |
| _scorer | 배열 | scorer 옵션을 지정한 경우, 예측에 가장 큰 영향을 미친 상위 N개 필드와 기여도를 [[필드명, 기여도], ...] 형식으로 담습니다. 기여도는 해당 필드가 결정 트리 분기에 사용된 횟수이며, 0보다 큰 필드만 포함되므로 실제 길이는 N보다 작을 수 있습니다. |
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 40804 | 머신러닝 라이센스가 필요합니다. | 머신러닝 라이선스가 없는 경우 |
| 41100 | 머신러닝 모델을 입력해 주세요. | model 옵션의 값이 비어 있는 경우 |
| 41101 | 머신러닝 모델을 찾을 수 없습니다. | 지정한 이름의 모델이 존재하지 않는 경우 |
| 41102 | 머신러닝 모델 핸들러를 찾을 수 없습니다. | 모델 핸들러를 찾을 수 없는 경우 |
| 41103 | scorer 옵션은 양의 정수여야 합니다. | scorer 옵션 값이 0 이하이거나 정수가 아닌 경우 |
| 90204 | '['가 짝이 맞지 않습니다. | 서브쿼리 대괄호가 짝이 맞지 않는 경우 |
| 90206 | 서브 쿼리가 없습니다. | model 옵션 없이 서브쿼리를 지정하지 않은 경우 |
런타임 오류
해당 사항 없음
설명
rforest 명령어는 랜덤 포레스트 알고리즘을 사용하여 입력 레코드의 타겟 필드 값을 예측합니다. 랜덤 포레스트는 여러 개의 결정 트리를 임의로 구성하고, 각 트리의 예측 결과를 종합하여 최종 분류를 수행하는 앙상블 학습 방법입니다.
두 가지 방식으로 사용할 수 있습니다:
- 사전 학습 모델:
model옵션으로 사전에 학습된 모델을 지정하면, 입력 레코드를 바로 모델에 전달하여 예측 결과를_guess필드에 할당합니다. - 서브쿼리 학습:
target옵션과 서브쿼리를 지정하면, 서브쿼리 결과로 먼저 랜덤 포레스트 모델을 학습한 후, 입력 레코드에 대해 예측을 수행합니다.
포레스트를 구성하는 결정 트리 수는 100개로 고정되어 있으며 쿼리에서 변경할 수 없습니다.
특성 필드 값이 null인 경우 해당 필드를 결측값으로 처리합니다. 문자열 값은 내부적으로 정수로 인코딩하여 학습 및 예측에 사용합니다.
scorer 옵션을 지정하면 예측에 사용한 필드 중 결과에 가장 큰 영향을 미친 상위 N개 필드를 _scorer 필드에 [[필드명, 기여도], ...] 형식의 배열로 함께 출력합니다. 기여도는 해당 필드가 결정 트리 분기에 사용된 횟수이며, 0보다 큰 필드만 포함되므로 실제 배열 길이는 N보다 작을 수 있습니다.
분산 환경에서는 분석 노드에서 모델 학습과 예측을 수행합니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
사전 학습 모델을 사용한 예측
table WEB_APACHE_SAMPLE | rforest model=web_rforest | fields _time, src_ip, method, status, bytes, _guess사전에 학습된
web_rforest모델을 사용하여 입력 데이터의 분류값을 예측합니다. -
서브쿼리 학습과 주요 필드 분석
table WEB_APACHE_SAMPLE | eval bytes = long(bytes) | rforest scorer=2 target=method bytes, status [ table WEB_APACHE_SAMPLE | eval bytes = long(bytes) ] | fields _time, src_ip, method, bytes, status, _guess, _scorerWEB_APACHE_SAMPLE데이터로 모델을 학습하여method필드의 값을 예측하면서,scorer=2옵션으로 예측에 가장 큰 영향을 미친 상위 2개 필드를_scorer필드에 할당합니다. -
서브쿼리를 사용한 학습 및 예측
table WEB_APACHE_SAMPLE | eval bytes = long(bytes) | rforest target=method bytes, status [ table WEB_APACHE_SAMPLE | eval bytes = long(bytes) ] | fields _time, src_ip, method, bytes, status, _guessWEB_APACHE_SAMPLE데이터를 학습 데이터로 사용하여 모델을 학습한 후,method필드의 값을 예측합니다. -
타임아웃을 지정한 서브쿼리 학습
table WEB_APACHE_SAMPLE | eval bytes = long(bytes) | rforest timeout=30s target=method bytes, status [ table WEB_APACHE_SAMPLE | eval bytes = long(bytes) ] | fields _time, src_ip, method, bytes, status, _guess서브쿼리 실행 시간을 30초로 제한하여 학습 데이터를 조회하고,
method필드의 값을 예측합니다. -
사전 학습 모델과 주요 필드 분석
table WEB_APACHE_SAMPLE | rforest scorer=2 model=web_rforest | fields _time, src_ip, method, status, bytes, _guess, _scorer사전에 학습된
web_rforest모델로 예측하면서,scorer=2옵션으로 예측에 가장 큰 영향을 미친 상위 2개 필드를_scorer필드에 할당합니다.
변경 이력
| 대상 | 도입 릴리스 |
|---|---|
rforest 명령어 | 소나 4.0 이전 버전 |
scorer 옵션 | 4.0.2609.0 |