PMML 모델 내보내기 - RDD 기반 API
PMML 모델 내보내기 - RDD 기반 API (PMML Model Export)
spark.mllib가 학습한 모델을 PMML(Predictive Model Markup Language) 형식으로 내보내는 방법을 정리한 문서예요. 어떤 모델이 내보내기 가능한지, 그리고 model.toPMML을 호출해 문자열·파일 분산 파일 시스템 등 다양한 대상으로 내보내는 방법을 확인해 볼게요.
출처: 문서
본문
spark.mllib 지원 모델
spark.mllib는 모델을 PMML(Predictive Model Markup Language)로 내보내는 것을 지원해요.
아래 표는 PMML로 내보낼 수 있는 spark.mllib 모델과 이에 대응하는 PMML 모델을 정리한 내용이에요.
| spark.mllib 모델 | PMML 모델 |
|---|---|
KMeansModel |
ClusteringModel |
LinearRegressionModel |
RegressionModel (functionName="regression") |
RidgeRegressionModel |
RegressionModel (functionName="regression") |
LassoModel |
RegressionModel (functionName="regression") |
SVMModel |
RegressionModel (functionName="classification" normalizationMethod="none") |
Binary LogisticRegressionModel |
RegressionModel (functionName="classification" normalizationMethod="logit") |
예제 (Examples)
지원되는 model(위 표 참고)을 PMML로 내보내려면 간단히 model.toPMML을 호출하면 돼요.
PMML 모델을 문자열(model.toPMML 위 예제와 동일)로 내보내는 것뿐 아니라, 다른 형식으로도 내보낼 수 있어요.
API에 대한 자세한 내용은 KMeans Scala 문서와 Vectors Scala 문서를 참고하세요.
다음은 KMeansModel을 만들고 PMML 형식으로 출력하는 완전한 예제예요:
import org.apache.spark.mllib.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors
// 데이터를 로드하고 파싱하기
val data = sc.textFile("data/mllib/kmeans_data.txt")
val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
// KMeans를 사용해 데이터를 두 개의 클래스로 클러스터링
val numClusters = 2
val numIterations = 20
val clusters = KMeans.train(parsedData, numClusters, numIterations)
// PMML 형식 문자열로 내보내기
println(s"PMML Model:\n ${clusters.toPMML()}")
// 로컬 파일로 PMML 형식으로 내보내기
clusters.toPMML("/tmp/kmeans.xml")
// 분산 파일 시스템의 디렉터리로 PMML 형식으로 내보내기
clusters.toPMML(sc, "/tmp/kmeans")
// OutputStream으로 PMML 형식으로 내보내기
clusters.toPMML(System.out)
전체 예제 코드는 Spark 저장소의 examples/src/main/scala/org/apache/spark/examples/mllib/PMMLModelExportExample.scala 에서 찾을 수 있어요.
지원되지 않는 모델의 경우 .toPMML 메서드를 찾을 수 없거나 IllegalArgumentException이 발생하게 돼요.
더 알아보기 (Learn more)
- 아파치 스파크 PMML 모델 내보내기 (원문)
- MLlib Clustering — MLlib 클러스터링 가이드
- MLlib (원문) — MLlib 전체 가이드