다음을 통해 공유


R 모델 만들기

중요

Machine Learning Studio(클래식)에 대한 지원은 2024년 8월 31일에 종료됩니다. 해당 날짜까지 Azure Machine Learning으로 전환하는 것이 좋습니다.

2021년 12월 1일부터 새로운 Machine Learning Studio(클래식) 리소스를 만들 수 없습니다. 2024년 8월 31일까지는 기존 Machine Learning Studio(클래식) 리소스를 계속 사용할 수 있습니다.

ML Studio(클래식) 설명서는 사용 중지되며 나중에 업데이트되지 않을 수 있습니다.

사용자 지정 리소스를 사용하여 R 모델 만들기

범주: 데이터 변환/조작

참고

적용 대상: Machine Learning Studio(클래식) 전용

유사한 끌어서 놓기 모듈은 Azure Machine Learning 디자이너에서 사용할 수 있습니다.

모듈 개요

이 문서에서는 Machine Learning Studio(클래식)에서 R 모델 만들기 모듈을 사용하여 R 스크립트에서 학습되지 않은 모델을 만드는 방법을 설명합니다.

모델을 기반으로 Machine Learning 환경의 R 패키지에 포함된 모든 학습자를 기반으로 할 수 있습니다.

모델을 만든 후 모델 학습을 사용하여 Machine Learning 다른 학습자와 마찬가지로 데이터 세트에서 모델을 학습시킬 수 있습니다. 학습된 모델을 모델 점수 매기 기로 전달하여 모델을 사용하여 예측을 수행할 수 있습니다. 그런 다음 학습된 모델을 저장할 수 있으며 점수 매기기 워크플로를 웹 서비스로 게시할 수 있습니다.

경고

현재는 R 모델의 점수가 매겨진 결과를 모델 평가 또는 모델 교차 유효성 검사에 전달할 수 없습니다. 모델을 평가해야 하는 경우 사용자 지정 R 스크립트를 작성하고 R 스크립트 실행 모듈을 사용하여 실행할 수 있습니다.

R 모델 만들기를 사용하여 사용자 지정 R 모듈을 저장하고 다시 사용하는 것 외에도 R을 사용하여 모델링 및 데이터 관리 프로세스의 고유한 구현을 만들고, 압축된 형식으로 파일을 작업 영역에 업로드한 다음, 패키지를 사용자 지정 모듈로 등록할 수 있습니다. 자세한 내용은 사용자 지정 R 모듈을 참조하세요.

R 모델 만들기를 구성하는 방법

이 모듈을 사용하려면 R에 대한 중간 또는 전문가의 지식이 필요합니다. 이 모듈은 Machine Learning 이미 설치된 R 패키지에 포함된 모든 학습자 사용을 지원합니다.

Azure AI 갤러리의 이 샘플은 인기 있는 e1070 패키지인 + R 모델 만들기를 사용하여 2클래스 Naïve Bayes 분류자를 구현합니다. 예제를 작업 영역에 복사하고 따라가는 것이 좋습니다.

  1. R 모델 만들기, 모델학습, 모델 점수 매기기 등의 모듈을 실험에 추가합니다.

  2. R 모델 만들기속성 창에서 다음 스크립트를 제공합니다.

  3. 샘플 실험에는 모델 평가를 위해 그래프를 그리는 데 사용되는 Python 스크립트 실행 모듈도 포함되어 있습니다. 이 모듈은 웹 서비스에 게시할 때 선택 사항이지만 실험을 개발할 때 유용합니다.

    • Python 스크립트에서 차트를 보려면 Python 모듈을 마우스 오른쪽 단추로 클릭하고 Python 디바이스를 선택한 다음 시각화를 선택합니다.
    • 모델 메트릭만 보려면 Python 모듈을 마우스 오른쪽 단추로 클릭하고 Python 데이터 세트를 선택한 다음 시각화를 선택합니다.

    선택적 Python 모듈의 코드는 모델 평가에 대한 Python 모듈을 참조하세요.

학습 스크립트

다음 예제에서는 Trainer R 스크립트에서 사용할 수 있는 코드 형식을 보여 줍니다.

이 스크립트는 R 패키지를 로드하고, 패키지에서 학습자를 사용하여 모델을 만들고, R 모델 만들기에 제공된 미리 정의된 상수 및 함수를 사용하여 기능 및 레이블 열을 구성합니다.

library(e1071)
features <- get.feature.columns(dataset)
labels   <- as.factor(get.label.column(dataset))
train.data <- data.frame(features, labels)
feature.names <- get.feature.column.names(dataset)
names(train.data) <- c(feature.names, "Class")
model <- naiveBayes(Class ~ ., train.data)
  • 첫 번째 줄은 사용하려는 Naïve Bayes 분류자 알고리즘이 포함된 R 패키지, e1071을 로드합니다. 이 패키지는 Machine Learning 환경에 미리 설치된 패키지 중 하나이므로 패키지를 다운로드하거나 설치할 필요가 없습니다.

  • 다음 줄은 데이터 세트에서 기능 열과 레이블 열을 가져와서 이름이 지정된 train.data새 R 데이터 프레임으로 결합합니다.

    features <- get.feature.columns(dataset)   
    labels <- as.factor(get.label.column(dataset))   
    train.data <- data.frame(features, labels)
    feature.names <- get.feature.column.names(dataset)
    
  • 미리 정의된 함수는 다음과 같습니다.

    • get.label.columns()모델 학습 모듈에서 클래스 레이블로 선택된 열을 반환합니다.

    • get.feature.columns()는 데이터 세트의 기능으로 지정된 열을 선택합니다.

      기본적으로 레이블 열을 제외한 모든 열은 Studio(클래식)의 기능으로 간주됩니다. 따라서 특정 열을 기능으로 표시하려면 메타데이터 편집을 사용하거나 R 스크립트 내에서 열 집합을 선택합니다.

    • get.feature.column.names(dataset) 는 데이터 세트에서 기능 열 이름을 가져옵니다.

  • 결합된 데이터 세트의 이름은 열의 이름으로 지정되며 레이블 열 train.data에 대한 임시 이름이 Class 만들어집니다.

    names(train.data) <- c(feature.names, "Class")
    
  • 코드의 마지막 줄은 Naïve Bayes 분류자 알고리즘을 데이터 프레임의 변수(기능) 및 결과(레이블) train.data 의 함수로 정의합니다.

    model <- naiveBayes(Class ~ ., train.data)
    
  • 모델 만들기, 학습 및 채점 스크립트 전체에서 변수 이름을 model사용해야 합니다.

채점 스크립트

다음 코드는 득점자 R 스크립트에서 제공할 R 코드의 형식을 보여 줍니다.

library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
  • 첫 번째 줄은 패키지를 로드합니다.

  • 두 번째 줄은 필요한 변수 이름으로 model지정된 학습 스크립트에서 학습된 모델을 사용하여 점수 매기기 데이터 세트에 대한 예측 확률을 계산합니다.

  • 세 번째 줄은 예측된 클래스 레이블을 할당할 때 확률에 임계값을 0.5로 적용합니다.

  • 마지막 줄에서는 클래스 레이블과 확률을 출력 데이터 프레임인 scores로 결합합니다.

  • 모델 점수 매기기 모듈에 전달되는 데이터 프레임에는 이름이 scores있어야 합니다.

선택적 Python 평가 스크립트

Azure AI 갤러리의 샘플 실험에는 모델 평가를 위한 메트릭 및 차트를 생성하는 데 사용되는 다음 Python 스크립트가 포함되어 있습니다.

def azureml_main(dataframe):
    import matplotlib
    matplotlib.use("agg")
    
    from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, roc_curve
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    scores = dataframe.ix[:, ("Class", "classes", "probabilities")]
    ytrue = scores["Class"]
    ypred = np.array([float(val) for val in scores["classes"]])    
    probabilities = scores["probabilities"]
    
    accuracy, precision, recall, auc = \
    accuracy_score(ytrue, ypred),\
    precision_score(ytrue, ypred),\
    recall_score(ytrue, ypred),\
    roc_auc_score(ytrue, probabilities)
    
    metrics = pd.DataFrame();
    metrics["Metric"] = ["Accuracy", "Precision", "Recall", "AUC"];
    metrics["Value"] = [accuracy, precision, recall, auc]

# Plot ROC Curve
    fpr, tpr, thresholds = roc_curve(ytrue, probabilities)
    fig = plt.figure()
    axis = fig.gca()
    axis.plot(fpr, tpr, linewidth=8)
    axis.grid("on")
    axis.set_xlabel("False positive rate")
    axis.set_ylabel("True positive rate")
    axis.set_title("ROC Curve")
    fig.savefig("roc.png")

    return metrics,

사용자 지정 R 모델 워크플로를 웹 서비스로 게시

실험을 실행한 후 전체 실험을 웹 서비스로 게시할 수 있습니다.

Studio(클래식) 실험에서 웹 서비스를 만드는 방법에 대한 업데이트된 지침은 연습 5단계: Machine Learning 웹 서비스 배포를 참조하세요.

기본적으로 웹 서비스는 레이블 열을 포함하여 학습 데이터의 모든 입력 열이 제공될 것으로 예상합니다. 입력 데이터 원본과 모델 점수 매기기 모듈 사이에 데이터 세트의 열 선택 인스턴스를 추가하여 예측하려는 레이블을 제외할 수 있습니다.

기술 정보

  • R 모델 만들기 모듈은 CRAN R만 사용할 수 있습니다. 다른 버전의 R을 선택하거나 Microsoft R Open을 사용할 수 없습니다.

  • 모델은 모듈을 처음 실행하고 나면 캐시되고, 모듈은 입력 스크립트에 변경이 수행될 때까지 후속 실행에서 호출되지 않습니다. R 스크립트에서 다음 중 하나를 사용하는 경우 이 동작을 고려하세요.

    • 난수를 생성하는 함수
    • 난수를 생성하는 함수
    • 기타 비결정적 함수
  • 이 모듈로 만든 사용자 지정 R 모델은 다음 모듈에서 사용할 수 없습니다.

  • R 모델은 자동으로 범주 데이터의 기능 표준화를 수행하거나 누락 값을 처리하지 않습니다. 이러한 변수를 처리하는 작업은 R 스크립트 학습 및 점수 매기기에서 수행해야 합니다.

미리 정의된 함수 표

사용 Description
get.feature.columns(dataset) 모든 기능 열을 가져옵니다.
get.label.column(dataset, label.type=TrueLabelType) 형식이 제공된 경우 레이블 열을 가져옵니다.

사용 가능한 형식 목록은 상수 섹션을 참조하세요.
get.label.column.names(dataset) 모든 레이블 열의 이름을 가져옵니다.
get.label.column.name(dataset, label.type=TrueLabelType) 형식이 제공된 경우 레이블 열의 이름을 가져옵니다.

사용 가능한 형식 목록은 상수 섹션을 참조하세요.
get.label.column.types(dataset) 모든 레이블 열의 형식을 가져옵니다.
get.feature.column.names(dataset) 모든 기능 열의 이름을 가져옵니다.
dataset < - set.score.column(dataset, score.type, column.name) 형식이 지정된 경우 점수 열을 설정합니다.

사용 가능한 형식 목록은 상수 섹션을 참조하세요.
dataset < - set.feature.channel(dataset, channel.name, column.names) 이름이 지정된 경우 기능 채널을 설정합니다.

사용 가능한 이름 목록은 상수 섹션을 참조하세요.

미리 정의된 상수 표

상수 설명
TrueLabelType True 레이블 열 이름
ScoredLabelType 점수를 매긴 레이블 열 형식
RawScoreType 원시 점수 열 유형
CalibratedScoreType 보정 점수 열 형식
ScoredProbabilitiesMulticlassColumnTypePattern 다중 클래스 분류자의 점수를 매긴 확률 열 형식을 준비하는 패턴
BayesianLinearRegressionScoresFeatureChannel Bayes 선형 회귀 점수가 있는 기능 채널의 이름
BinaryClassificationScoresFeatureChannel 이진 분류 점수가 있는 기능 채널의 이름
MulticlassClassificationScoresFeatureChannel 다중 클래스 분류 점수가 있는 기능 채널의 이름
OrdinalRegressionScoresFeatureChannel 서수 회귀 점수가 있는 기능 채널의 이름
RegressionScoresFeatureChannel 회귀 점수가 있는 기능 채널의 이름

기계 학습 실험에서 이 모듈을 사용하는 방법에 대한 추가 예제는 Azure AI 갤러리를 참조하세요.

예상 입력

Name 유형 설명
강사 R 스크립트 스크립트 데이터 집합을 입력으로 사용하고 학습되지 않은 모델을 출력하는 R 스크립트입니다.
점수 기록자 R 스크립트 스크립트 모델과 데이터 집합을 입력으로 사용하고 스크립트에 지정된 점수를 출력하는 R 스크립트입니다.

출력

Name 유형 Description
모델 ILearner 인터페이스 학습되지 않은 모델

참고 항목

R 스크립트 실행
R 언어 모듈