R 모델 만들기
중요
Machine Learning Studio(클래식)에 대한 지원은 2024년 8월 31일에 종료됩니다. 해당 날짜까지 Azure Machine Learning으로 전환하는 것이 좋습니다.
2021년 12월 1일부터 새로운 Machine Learning Studio(클래식) 리소스를 만들 수 없습니다. 2024년 8월 31일까지는 기존 Machine Learning Studio(클래식) 리소스를 계속 사용할 수 있습니다.
- ML Studio(클래식)에서 Azure Machine Learning으로 기계 학습 프로젝트 이동에 대한 정보를 참조하세요.
- Azure Machine Learning에 대한 자세한 정보.
ML Studio(클래식) 설명서는 사용 중지되며 나중에 업데이트되지 않을 수 있습니다.
사용자 지정 리소스를 사용하여 R 모델 만들기
범주: 데이터 변환/조작
모듈 개요
이 문서에서는 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 분류자를 구현합니다. 예제를 작업 영역에 복사하고 따라가는 것이 좋습니다.
R 모델 만들기의 속성 창에서 다음 스크립트를 제공합니다.
트레이너 R 스크립트: 여기서 제공하는 R 스크립트는 모델을 학습하는 데 사용됩니다. 실험을 실행하면 모델 학습 모듈에 배포됩니다.
득점자 R 스크립트: 이 입력에 제공하는 R 스크립트는 채점 전용입니다. 실험을 실행하면 모델 점수 매기 기 모듈에 배포됩니다.
샘플 실험에는 모델 평가를 위해 그래프를 그리는 데 사용되는 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)
미리 정의된 함수는 다음과 같습니다.
결합된 데이터 세트의 이름은 열의 이름으로 지정되며 레이블 열
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 인터페이스 | 학습되지 않은 모델 |