다음을 통해 공유


rxFastForest: 빠른 포리스트

Machine Learning 빠른 포리스트

사용법

  rxFastForest(formula = NULL, data, type = c("binary", "regression"),
    numTrees = 100, numLeaves = 20, minSplit = 10, exampleFraction = 0.7,
    featureFraction = 0.7, splitFraction = 0.7, numBins = 255,
    firstUsePenalty = 0, gainConfLevel = 0, trainThreads = 8,
    randomSeed = NULL, mlTransforms = NULL, mlTransformVars = NULL,
    rowSelection = NULL, transforms = NULL, transformObjects = NULL,
    transformFunc = NULL, transformVars = NULL, transformPackages = NULL,
    transformEnvir = NULL, blocksPerRead = rxGetOption("blocksPerRead"),
    reportProgress = rxGetOption("reportProgress"), verbose = 2,
    computeContext = rxGetOption("computeContext"),
    ensemble = ensembleControl(), ...)

주장들

formula

rxFormula에 설명된 수식입니다. 상호 작용 용어이며 F() 현재 MicrosoftML에서 지원되지 않습니다.

data

데이터 원본 개체 또는 .xdf 파일 또는 데이터 프레임 개체를 지정하는 문자열입니다.

type

빠른 트리 형식을 나타내는 문자열입니다.

  • "binary" 기본 빠른 트리 이진 분류 또는
  • "regression" 빠른 트리 회귀를 위한 것입니다.

numTrees

앙상블에서 만들 의사 결정 트리의 총 수를 지정합니다. 더 많은 의사 결정 트리를 만들면 잠재적으로 더 나은 범위를 얻을 수 있지만 학습 시간이 증가합니다. 기본값은 100입니다.

numLeaves

모든 트리에서 만들 수 있는 최대 리프 수(터미널 노드)입니다. 값이 높을수록 트리의 크기가 증가하고 정밀도가 향상될 수 있지만 과잉 맞춤 및 학습 시간이 길어질 위험이 있습니다. 기본값은 20입니다.

minSplit

리프를 구성하는 데 필요한 최소 학습 인스턴스 수입니다. 즉, 하위 샘플링된 데이터에서 회귀 트리의 리프에서 허용되는 최소 문서 수입니다. '분할'은 트리(노드)의 각 수준에 있는 기능이 임의로 분할됨을 의미합니다. 기본값은 10입니다.

exampleFraction

각 트리에 사용할 임의로 선택한 인스턴스의 비율입니다. 기본값은 0.7입니다.

featureFraction

각 트리에 사용할 임의로 선택한 기능의 비율입니다. 기본값은 0.7입니다.

splitFraction

각 분할에 사용할 임의로 선택한 기능의 비율입니다. 기본값은 0.7입니다.

numBins

기능당 고유 값(bin)의 최대 수입니다. 기본값은 255입니다.

firstUsePenalty

이 기능은 먼저 페널티 계수를 사용합니다. 기본값은 0입니다.

gainConfLevel

트리 피팅 게인 신뢰도 요구 사항(범위 [0,1)에 있어야 합니다). 기본값은 0입니다.

trainThreads

학습에 사용할 스레드 수입니다. 지정된 경우 NULL 사용할 스레드 수가 내부적으로 결정됩니다. 기본값은 NULL입니다.

randomSeed

임의 시드를 지정합니다. 기본값은 NULL입니다.

mlTransforms

학습 전 또는 NULL 변환이 수행되지 않을 경우 데이터에서 수행할 MicrosoftML 변환 목록을 지정합니다. 지원되는 변환 은 featurizeText, 범주범주Hash를 참조하세요. 이러한 변환은 지정된 R 변환 후에 수행됩니다. 기본값은 NULL입니다.

mlTransformVars

사용할 변수 이름의 문자 벡터를 지정하거나 mlTransforms 사용할 NULL 변수가 없는 경우 지정합니다. 기본값은 NULL입니다.

rowSelection

데이터 집합의 논리 변수 이름(따옴표)을 사용하거나 데이터 집합의 변수를 사용하는 논리 식과 함께 모델에서 사용할 데이터 집합의 행(관찰)을 지정합니다. 예를 들어 rowSelection = "old" 변수 oldTRUE값이 있는 관찰만 사용합니다. rowSelection = (age > 20) & (age < 65) & (log(income) > 10)변수 값이 20에서 65 agelog 사이이고 변수 값 income 이 10보다 큰 관찰만 사용합니다. 행 선택은 데이터 변환을 처리한 후 수행됩니다(인수 transforms 또는 transformFunc참조). 모든 식과 마찬가지로 식 rowSelection 함수를 사용하여 함수 호출 외부에서 정의할 수 있습니다.

transforms

변수 변환의 첫 번째 라운드를 나타내는 폼 list(name = expression, ``...) 의 식입니다. 모든 식과 마찬가지로 식 함수를 transforms 사용하여 함수 호출 외부에서 정의할 수 있습니다.rowSelection

transformObjects

, transformstransformsFunc.에서 참조할 수 있는 개체가 포함된 명명된 rowSelection목록입니다.

transformFunc

변수 변환 함수입니다. 자세한 내용은 rxTransform을 참조하세요.

transformVars

변환 함수에 필요한 입력 데이터 집합 변수의 문자 벡터입니다. 자세한 내용은 rxTransform을 참조하세요.

transformPackages

변수 변환 함수에서 rxGetOption("transformPackages")사용할 수 있도록 미리 로드할 추가 R 패키지(지정된 패키지 외부)를 지정하는 문자 벡터입니다. 예를 들어 RevoScaleR 함수에 명시적으로 정의된 함수는 해당 함수와 transforms 인수 또는 인수를 통해 암시적으로 정의된 인수를 transformFunc 통해 formularowSelection 함수를 정의합니다. 인수는 transformPackages 외부 NULL 패키지가 미리 로드되지 않았음을 나타내는 인수일 수도 rxGetOption("transformPackages")있습니다.

transformEnvir

내부적으로 개발되어 변수 데이터 변환에 사용되는 모든 환경의 부모 역할을 하는 사용자 정의 환경입니다. 이 경우 transformEnvir = NULL부모가 baseenv() 있는 새 "해시" 환경이 대신 사용됩니다.

blocksPerRead

데이터 원본에서 읽은 데이터의 각 청크에 대해 읽을 블록 수를 지정합니다.

reportProgress

행 처리 진행률에 대한 보고 수준을 지정하는 정수 값입니다.

  • 0: 진행률이 보고되지 않습니다.
  • 1: 처리된 행 수가 인쇄되고 업데이트됩니다.
  • 2: 행이 처리되고 타이밍이 보고됩니다.
  • 3: 행이 처리되고 모든 타이밍이 보고됩니다.

verbose

원하는 출력의 양을 지정하는 정수 값입니다. 이 경우 0계산 중에 자세한 정보 출력이 인쇄되지 않습니다. 증가하는 양의 정보를 제공하기 위한 1 정수 값 4 입니다.

computeContext

유효한 RxComputeContext로 지정된 계산이 실행되는 컨텍스트를 설정합니다. 현재 로컬 및 RxInSqlServer 컴퓨팅 컨텍스트가 지원됩니다.

ensemble

ensembling에 대한 컨트롤 매개 변수입니다.

...

Microsoft 컴퓨팅 엔진에 직접 전달할 추가 인수입니다.

세부 정보

의사 결정 트리는 시퀀스를 수행하는 비 파라메트릭 모델입니다.
입력에 대한 간단한 테스트입니다. 이 의사 결정 절차는 입력이 처리 중인 인스턴스와 유사한 학습 데이터 세트에 있는 출력에 매핑됩니다. 적절한 리프 노드에 도달하고 출력 결정이 반환될 때까지 트리의 분기를 통해 각 인스턴스를 재귀적으로 매핑하는 유사성 측정값에 따라 이진 트리 데이터 구조의 각 노드에서 결정됩니다.

의사 결정 트리에는 다음과 같은 몇 가지 이점이 있습니다.

학습 및 예측 중에 계산과 메모리 사용량 측면에서 모두 효율적입니다.

비선형 의사 결정 경계를 표시할 수 있습니다.

통합 기능 선택 및 분류를 수행합니다.

잡음 기능이 있는 경우 탄력적입니다.

빠른 포리스트 회귀는 rxFastTrees의 회귀 트리 학습자를 사용하는 임의 포리스트 및 분위수 회귀 포리스트 구현입니다. 모델은 의사 결정 트리의 앙상블로 구성됩니다. 의사 결정 포리스트의 각 트리는 예측을 통해 가우시안 분포를 출력합니다. 모델의 모든 트리에 대한 결합 분포에 가장 가까운 가우스 분포를 찾기 위해 트리 앙상블에 대해 집계가 수행됩니다.

이 의사 결정 포리스트 분류자는 의사 결정 트리의 앙상블로 구성됩니다. 일반적으로 앙상블 모델은 단일 의사 결정 트리에 비해 적용 범위가 넓고 정확도가 높습니다. 의사 결정 포리스트의 각 트리는 예측을 통해 가우시안 분포를 출력합니다. 모델의 모든 트리에 대한 결합 분포에 가장 가까운 가우스 분포를 찾기 위해 트리 앙상블에 대해 집계가 수행됩니다.

가치

rxFastForest rxFastForest: 학습된 모델이 있는 개체입니다.

FastForest: Fast Forest 트레이너에 대한 클래스 maml 의 학습자 사양 개체입니다.

비고

이 알고리즘은 다중 스레드이며 항상 전체 데이터 세트를 메모리에 로드하려고 시도합니다.

작성자

Microsoft Corporation Microsoft Technical Support

참고문헌

Wikipedia: Random forest

Quantile regression forest

From Stumps to Trees to Forests

참고하십시오

rxFastTrees, rxFastLinear, rxLogisticRegression, rxNeuralNet, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.

예시


 # Estimate a binary classification forest
 infert1 <- infert
 infert1$isCase = (infert1$case == 1)
 forestModel <- rxFastForest(formula = isCase ~ age + parity + education + spontaneous + induced,
         data = infert1)

 # Create text file with per-instance results using rxPredict
 txtOutFile <- tempfile(pattern = "scoreOut", fileext = ".txt")
 txtOutDS <- RxTextData(file = txtOutFile)
 scoreDS <- rxPredict(forestModel, data = infert1,
    extraVarsToWrite = c("isCase", "Score"), outData = txtOutDS)

 # Print the fist ten rows   
 rxDataStep(scoreDS, numRows = 10)

 # Clean-up
 file.remove(txtOutFile)

 ######################################################################
 # Estimate a regression fast forest

 # Use the built-in data set 'airquality' to create test and train data
 DF <- airquality[!is.na(airquality$Ozone), ]  
 DF$Ozone <- as.numeric(DF$Ozone)
 randomSplit <- rnorm(nrow(DF))
 trainAir <- DF[randomSplit >= 0,]
 testAir <- DF[randomSplit < 0,]
 airFormula <- Ozone ~ Solar.R + Wind + Temp

 # Regression Fast Forest for train data
 rxFastForestReg <- rxFastForest(airFormula, type = "regression", 
     data = trainAir)  

 # Put score and model variables in data frame
 rxFastForestScoreDF <- rxPredict(rxFastForestReg, data = testAir, 
     writeModelVars = TRUE)

 # Plot actual versus predicted values with smoothed line
 rxLinePlot(Score ~ Ozone, type = c("p", "smooth"), data = rxFastForestScoreDF)