오늘날 가정용 스마트미터에서부터 심해 석유 굴착 장치 등의 장비와 구조의 모니터링에 이르기까지 센서를 쉽게 접하게 되었다. 이러한 센서로부터 수집된 데이터를 모두 이해하려면 예측 분석은 개방형 표준이 필요하며, 이는 시스템이 사유 코드와 비호환성의 장애 없이 통신하도록 허용한다. PMML은 예측 분석 또는 데이터 마이닝 모델을 표현하는 데 사용되는 표준이다. PMML을 사용하면 예측 솔루션은 하나의 시스템에서 빌드되고 즉시 작업하도록 실행될 수 있는 또 다른 시스템에 배치될 수 있다.
석유 및 화학 업계의 경우, 예측 유지보수는 센서로부터 캡처된 원시 데이터가 사전처리되어 기계적 고장이 발생하기 전에 이를 발견하는 예측 솔루션을 빌드하는 데 사용되는 하나의 애플리케이션이다. 멕시코만 비극에 뒤따른 예측 분석과 개방형 표준이 안전과 프로세스 신뢰성을 보장하기 위한 또 다른 도구를 제공할 수 있다.
사실 예측 솔루션을 표현하는 표준으로서 PMML은 모델과 데이터 변환이 하나의 간결한 방법으로 함께 표현되도록 허용한다. PMML은 예측 솔루션을 구성하는 모든 계산을 표현하기 위해 사용될 때 데이터 분석, 모델 제작 및 배치 시스템들 간뿐만 아니라 회사 내에서 분석 프로세스에 참여한 모든 사람과 팀 사이에 다리가 된다. 이는 지식과 우수 사례를 전파하고 투명성을 보장하는 데 사용될 수 있으므로 굉장히 중요하다.
이 섹션은 특정 PMML 요소가 다루는 모든 예측 모델링 기술에 주목한다. 비록 무수한 다른 기술들이 매년 제안되지만, 표준의 일부가 되기 전에 커다란 데이터 마이닝 종사자(practitioner) 커뮤니티에서 입증되고 채택되어야 한다. 2009년에 릴리스된 버전 4.0 이후로, PMML은 다음 모델링 또는 통계적 기술을 위한 구체적인 요소를 제공한다.
- 연관 규칙(Association Rules):
AssociationModel요소 - 클러스터 모델(Cluster Models):
ClusteringModel요소 - 의사결정 트리(Decision Trees):
TreeModel요소 - Naïve Bayes 분류자(Classifiers):
NaïveBayesModel요소 - 신경망(Neural Networks):
NeuralNetwork요소 - 회귀(Regression):
RegressionModel및GeneralRegressionModel요소 - 규칙 세트(Rulesets):
RuleSetModel요소 - 시퀀스(Sequences):
SequenceModel요소 - 지지 벡터 머신(Support Vector Machines):
SupportVectorMachineModel요소 - 텍스트 모델(Text Models):
TextModel요소 - 시간 시리즈(Time Series):
TimeSeriesModel요소
이러한 기술을 사용하면 육안으로 명확하지 않은 히스토리 데이터로부터 패턴을 추출할 수 있다. 예를 들어, 연관 규칙은 대규모 조정 트랜잭션 데이터에서 제품 사이에 규칙 또는 관계를 찾기 위해 자주 사용된다. 수퍼마켓의 영업 데이터로 표현될 때, 연관 규칙은 항목 A와 B를 구매하고 항목 C도 구매한 고객을 찾기 위해 사용된다. 그러면 연관 규칙으로 전달된 정보는 마케팅 활동뿐만 아니라 상점 내의 제품의 배치를 구동하는 데 사용될 수 있다.
한편, 이름이 제안하는 대로 클러스터 모델은 사전에 판별된 유사성 측정치에 따라 특정 버킷으로 데이터를 클러스터하는 데 사용된다. 클러스터 모델은 클러스터 센터가 데이터 벡터로 정의되는 센터 기반이 되거나 센터가 통계로 정의되는 분배 기반이 될 수 있다. 작업을 착수할 때 클러스터 모델은 가장 인접한 센터를 통해 클러스터로 수신 데이터를 지정할 것이다.
의사결정 트리라고 하는 일반적으로 사용되는 또 다른 모델링 기술은 데이터가 의사결정 노드의 시리즈로 파티션되는 트리형 구조를 구현한다. 리프(leaf) 노드는 분류 트리의 경우에 특정 클래스를 정의한다. 의사결정 트리는 예측 의사결정 배후에 논리적 추론이 설명되어야 하는 애플리케이션이 선호하는 것이다. developerWorks 기사인 "What is PMML?"에서 신경망이라는 또 다른 기술에 주목한다. 이는 데이터 필드 사이에 관계를 추출하기 위한 비선형 방법을 제공한다(링크는 참고자료 참조). 하지만, 사용된 모델링 기술에 관계없이 목표는 분명하다. 즉, 이는 데이터에서 패턴을 찾을 수 있는 것 또는 예측하려고 하는 입력 데이터와 출력 데이터 사이에 복잡한 관계를 모델링하는 것이다.
예측 분석의 최근 경향은 하나의 문제를 해결하기 위해 모델 앙상블이라는 몇 가지
통계적 기술의 조합을 사용하는 것이다. 이 시나리오에서 각 모델은 전체 결과로 결합되는 예측을
작성한다. 백지장도 맞들면 낫다는 오래된 믿음으로 다른 기술들이 다른 수학적 관점에서부터 데이터를 살피는
것을 고려하면 이들의 결합은 예측 성과를 신장시킬 수 있다. 한 가지 문제를 해결하기 위해 하나 이상의 기술 또는 모델의
사용을 처리하기 위해 PMML은 MiningModel이라는 복수 모델 요소를 정의한다. 이는 다른 모델에서부터 나온
결과물을 결합하도록 허용하는 메소드 시리즈를 제공한다. 예제는 다수표와 가중 평균을 포함한다.
위에서 논의한 모델 요소는 고정 장치로서 역할을 하며, 이는 특정 모델링 기술이 PMML로 표현된다. 사실 각 모델 요소는 자세한 각 모델링 기술, 해당 매개변수와 구조를 표현하기 위해 필요한 모든 속성과 하위 요소를 요약한다. 하지만, 예측 솔루션의 수뇌부가 모델인 만큼 시각은 원시 및 파생 입력 필드로 모델에 공급하는 데이터이다. PMML이 수뇌부뿐만 아니라 시각을 표현할 수 있으므로, 전체 예측 솔루션을 정의하는 데 필요한 성능을 전달할 수 있다.
이러한 위업을 달성하기 위해 PMML은 많은 요소와 속성뿐만 아니라 이들의 사용을 운영하는 구체적인 순서도 정의한다. PMML 파일은 항상 데이터 설정에 사용되는 요소로 시작한다. 한 번 데이터 설정이 완수되면, PMML은 모델 자체로 이어지는 데이터 사전처리 단계의 정의를 허용한다. 이러한 세 가지 모든 단계를 데이터 설정부터 시작하여 살펴보자.
PMML은 관련된 데이터 필드를 정의하는 데 사용되는 요소의 시리즈를 지정한다. DataDictionary
요소는 모델로 사용되는 원시 입력 데이터를 모두 지정하는 데 사용된다. 목록 1은
pressure라는 숫자 필드가 DataDictionary 요소에서
표현되는 방법을 보여준다. 유형 정보 외에도 이는 올바른 값의 간격을 지정하도록 허용하는 것을 참고한다. 이 예제에서
0보다 작거나 100보다 큰 아무 값이나 올바르지 않은 것으로 간주된다.
목록 1. PMML에서
DataDictionary 요소
<DataDictionary>
<DataField name="pressure" dataType="double" optype="continuous" >
<Interval closure="closedClosed"
leftMargin="0" rightMargin="100" />
</DataField>
<!-- Other DataFields -->
</MiningSchema>
|
입력 데이터를 표현하기 위한 또 다른 PMML 요소는 MiningSchema이다. 이는
DataDictionary 요소에서 정의된 어느 원시 입력 필드나 누락되거나
올바르지 않은 값이 들어있는 경우에 해야 할 일을 정의하기 때문에 이러한 요소는
모델이 배치되고 작업이 실행될 때면 언제나 매우 중요하다. 이 요소도 아웃라이어의 처리를 허용한다
—이는 주어진 입력 필드와 연관된 극도의 값이다.
실제로는 변형된 정보를 제공하거나 아무 정보도 전혀 제공하지 않으면 모델이 빌드된 시스템과 멀리 떨어져서
센서가 오작동할 수 있다. 이러한 상황의 경우 MiningSchema 요소는 이어지는 추출 프로세스를 제공하여, 전체 솔루션의 견고함을 엄청나게 늘린다. 목록 2에서는
필드 pressure에 대한 MiningSchema 표현을 보여준다.
목록 2. PMML에서 Mining Schema 요소
<MiningSchema>
<MiningField name="pressure" usageType="active"
missingValueReplacement="35.32"
missingValueTreatment="asMean"
invalidValueTreatment="asMissing"
outliers="asExtremeValues"
lowValue="10"
highValue="70"/>
<!-- Other MiningFields -->
</MiningSchema>
|
이 예제에 따르면 수신 값이 누락되면 값 35.32로 대체되며, 이는 히스토리 데이터에서부터
계산된 대로 이 필드의 평균값을 표현한다. 또한 참고로 올바르지 않은 값(0보다 작거나
100보다 큰 수— 목록 1의
DataDictionary에서 정의됨)은 누락된 값으로 처리된다. 10보다
작거나 70보다 큰 올바른 값이 나타나더라도, 이는 아웃라이어로 취급되어 각각 값 10 또는 70으로 자동으로
대체된다.
데이터 설정이 완료되면, PMML은 데이터 사전처리 단계의 광범위한 정의를 허용한다. 이를 위해 일반 데이터 변환을 위한 요소 세트뿐만 아니라 산술 및 논리 연산의 정의를 위한 기본 제공 함수 목록을 제공한다. 데이터 사전처리 계산은 원시 입력 데이터의 예측 성능을 신장시키거나 모델 자체로 표현되는 데이터를 간단하게 준비하기 위해 사용된다. 예를 들어, 많은 모델링 기술은 입력으로 숫자 필드만 취한다. 이 경우에 어느 카테고리 입력이나 사용되기 전에 숫자 입력으로 변환되어야 할 것이다.
PMML은 사전처리와 데이터 변환을 위해 다음 요소를 제공한다.
Normalization: 지속적이고 분리된 값을 숫자에 맵핑한다.Discretization: 지속적인 값을 분리된 값에 맵핑한다.Value mapping: 분리된 값을 분리된 값에 맵핑한다.Functions: 하나 이상의 매개변수로 함수를 적용하여 값을 파생한다.
목록 3은 PMML 정규화 요소 NormContinous를 보여준다.
이 예제에서 PMML은 입력 필드 pressure의 값을 0과 1사이의 값으로
변환하는 데 사용된다. 새로운 정규화된 값이 더 나아가 새 필드인
normalized_pressure라는 이름의 파생된 필드로 지정되었음을 참고한다.
목록 3. PMML에서 정규화
<DerivedField name="normalized_pressure"
dataType="double" optype="continuous">
<NormContinuous field="pressure">
<LinearNorm norm="0" orig="10"/>
<LinearNorm norm="1" orig="70"/>
</NormContinuous>
</DerivedField>
|
이 예제에서 PMML은 입력 필드 pressure의 값을 0과 1사이의 값으로
변환하는 데 사용된다. 새로운 정규화된 값이 더 나아가 새 필드인
normalized_pressure라는 이름의 파생된 필드로 지정되었음을 참고한다.
이러한 정규화는 신경망 모델로의 입력에 사용되는 데이터 필드에 일반적으로 적용된다. 독자는 IBM®
SPSS® Statistics를 사용하여 예측 분석 모델을 빌드할 때, 자동으로 PMML 파일로 내보내기의 선택을
가진다. 신경망 모델을 빌드하는 경우, 네트워크로 사용된 모든 입력 필드가 정규화될 것이고
결과 PMML 파일은 지속적인 입력 필드 모두에 대해 요소 NormContinuous를
통합할 것이다.
목록 4는 PMML 분할(discretization) 요소 Discretize를 보여준다.
목록 4. PMML에서 분할
<DerivedField name="categorical_pressure"
dataType="string" optype="categorical">
<Discretize field="pressure">
<DiscretizeBin binValue="low">
<Interval closure="openClosed" rightMargin="25" />
</DiscretizeBin>
<DiscretizeBin binValue="normal">
<Interval closure="openClosed"
leftMargin="25" rightMargin="50" />
</DiscretizeBin>
<DiscretizeBin binValue="high">
<Interval closure="openOpen" leftMargin="50" />
</DiscretizeBin>
</Discretize>
</DerivedField>
|
이 예제에서 숫자 입력 필드 pressure는 세 개의 카테고리로
바이너리된다(low, normal 및
high). 이는 categorical_pressure라는 이름의 새 파생 필드로
지정된다. 첫 번째 바이너리는
최대 25까지 값을 low로 맵핑한다. 두 번째는 25보다 크고
50과 같거나 작은 값을 normal로 맵핑한다. 세 번째이자 마지막 바이너리는
50보다 큰 값을 high로 맵핑한다.
요소 Discretize가 목록 1의 DataDictionary
요소와 동일한 방식으로 Interval 요소를 사용하는
DiscretizeBin 하위요소 세트를 정의하는 것을 참고한다. 내부에서 특화된 제네릭 요소의 재사용은
PMML에서 일반적인 테마이다. 이렇게 하면 언어의 가독성이 더 높아지고, 분석 도구의 경우 가져오고 내보내기에
더 간편해진다.
목록 5는 PMML 맵핑 요소 MapValues를 보여준다. 이 예제에서
위에 작성된 파생 필드 categorical_pressure는 맵핑 변환에 입력 필드로서
사용되며, 이는 grouped_pressure라는 필드를 작성한다. 이는 파생 필드가 다른 파생 필드에서부터
작성되도록 허용하므로 PMML의 훌륭한 특성이다.
목록 5. PMML에서 맵핑
<DerivedField name="grouped_pressure"
dataType="integer" optype="categorical">
<MapValues outputColumn="group">
<FieldColumnPair column="C1" field="categorical_pressure" />
<InlineTable>
<row>
<C1>low</C1>
<group>1</group>
</row>
<row>
<C1>normal</C1>
<group>1</group>
</row>
<row>
<C1>high</C1>
<group>2</group>
</row>
</InlineTable>
</MapValues>
</DerivedField>
|
이 경우에
MapValues 요소가 입력 카테고리를 그룹화하는 것을 참고한다.
이는 InlineTable 요소를 사용하여 카테고리
low 및 normal을 그룹 1에 지정하고 카테고리
high를 그룹 2에 지정한다.
또한, PMML은 제네릭 IF-THEN-ELSE 함수로 산술 및 논리 연산 모두를 위한 기본 제공 함수를
많이 정의한다. 다른 함수와 결합될 때, 이는 사전처리 태스크의 거의 모든 종류에 대해 강력한 표현
매체를 제공한다(목록 6 참조).
목록 6.
IF-THEN-ELSE 함수IF categorical_pressure = "high" THEN system_pressure = 0.3 * pressure ELSE system_pressure = 2 ^ (1 + log (0.34* pressure + 1) |
목록 6a는 목록 6에서 연산의 PMML 등가물을 보여준다.
목록 6a. PMML에서 제네릭 변환 정의하기
<DerivedField name="system_pressure"
dataType="string" optype="categorical">
<Apply function="if">
<Apply function="equal">
<FieldRef field="categorical_pressure" />
<Constant>high</Constant>
</Apply>
<!-- THEN -->
<Apply function="*">
<Constant>0.3</Constant>
<FieldRef field="pressure" />
</Apply>
<!-- ELSE -->
<Apply function="pow">
<Constant>2</Constant>
<Apply function="+">
<Constant>1</Constant>
<Apply function="log">
<Apply function="*">
<Constant>0.34</Constant>
<Apply function="+">
<FieldRef field="pressure" />
<Constant>1</Constant>
</Apply>
</Apply>
</Apply>
</Apply>
</Apply>
</Apply>
</DerivedField>
|
데이터 변환이 완벽하게 정의되면, 예측 솔루션의 수뇌부인 모델 자체를 표현할 시간이다. 각 모델링 기술에 대한 PMML 표현은 자체 구조 및 매개변수 세트에 매우 의존적이다. 이전에 설명한 대로, PMML은 예측 분석에서 가장 널리 사용되는 기술을 표현하기 위해 광범위한 요소 목록을 제공한다.
목록 7에서 묘사된 예제는 PMML에서 신경망 요소를 설정하는 것을 보여준다. 신경 계층, 신경 단위 및 연결 가중치는 나타나지 않는다. (PMML에서 신경 계층 및 신경 단위를 표현하는 방법은 기사 "What is PMML?"을 참조).
목록 7. PMML에서 신경망 요소 설정하기
<NeuralNetwork modelName="ElementAnalyzer" functionName="classification" activationFunction="tanh" numberOfLayers="2"> |
NeuralNetwork 요소는 네 가지 속성으로 구성된다.
첫 번째는 modelName이며, 모델 이름을 지정하는 데 사용된다(간단하지
않은가?). 두 번째인 functionName은 모델의 목적을 식별하며, 이 경우에 이는
회귀와는 대조적으로 분류이다. 세 번째인 activationFunction은
처리 수신 데이터가 신경망에서 가장 일반적으로 사용되는 S자 모양 함수인
tanh일 때 네트워크 신경 단위가 사용한 활성 함수를 지정한다. 마지막으로 네 번째
속성인 numberOfLayers는 네트워크가 두 가지 계층으로 정의되는 것을 지정하며,
이는 하나의 숨겨진 계층의 존재뿐만 아니라 출력 계층의 존재도 시사한다. 참고로 입력 계층은 고려되지 않았다.
확인한 대로 PMML은 어려운 일이 아니다. 이러한 특정 요소를 조사하는 것에서부터 모델의 구조와 그것이 무슨 내용인지에 대한 훌륭한 생각을 가질 수 있다. 즉, 이는 다른 요소를 분류하는 데 사용된 신경망이다. 목록 8은 동일한 문제에 대해 의사결정 트리의 정의를 보여준다.
목록 8. PMML에서 의사결정 트리 요소 설정하기
<TreeModel modelName="ElementAnalyzer" algorithmName="CART" functionName="classification"> |
참고로 독자는 속성 algorithmName에서부터 이러한 특정 트리가 CART(Classification And
Regression Tree)로 훈련되었음을 학습한다. 예를 들어, IBM SPSS Statistics에서 빌드된 트리는 간편하게 PMML
파일로 내보낼 수 있는 의사결정 트리를 제작하기 위해 CART에서부터 혜택을 누릴 수 있다.
정보화 시대는 트랜잭션과 센서로부터 캡처된 대규모 데이터의 가용성이라는 축복을 가져다 주었다. 이를 통해 솔루션을 빌드하여 악성 활동, 실패 및 사고들이 발생하거나 해를 끼치기 전에 예측할 수 있다. 전적으로 이러한 솔루션의 혜택을 누리고 있다면, PMML과 같은 개방형 표준과 쌍을 이루어야 한다. 애플리케이션과 시스템이 증가되면서 동일한 언어를 말하도록 해야 한다. PMML이 데이터 변환 및 모델을 표현하는 데 사용되면서, 이는 원시 데이터로부터 예측까지 완성된 예측 솔루션을 공유하기 위한 경로가 된다.
교육
- What is PMML?(Alex Guazzelli 저, developerWorks, 2010년 7월):
PMML의 이러한 소개글에서 예측 분석과 개방형 표준의 성능을 탐색해보자.
- PMML: PMML 모델링
기술에 대한 Alex Guazzelli의 knol을 읽어보자.
- PMML in Action: Unleashing the Power of Open Standards for Data Mining and Predictive Analytics(Alex Guazzelli, Wen-Ching Lin, Tridivesh Jena, 2010년 5월 CreateSpace): PMML을 효과적으로 살펴봄으로써 예측 모델을 표현하는 방법을 배운다.
- Data Mining Group(DMG): PMML(Predictive Model Markup Language)과 같은 데이터 마이닝 표준을 개발하는, 이러한 벤더 주도형 독립 컨소시엄에서 다양한 참고자료를
탐구하자.
- Zementis
PMML Resources 페이지: 클러스터 모델(Cluster Models), 의사결정 트리(Decision Trees),
Naïve Bayes 분류(Classifiers), 신경망(Neural Network) 모델, 회귀 모델(Regression
Models), 점수표 및 지지 벡터 머신(Support Vector Machines) 등의 모든 PMML 예제를 검토하자.
- Wikipedia의 PMML 페이지: PMML의 개요와 스펙에 대한 링크 등을 확인할 수 있다.
- Wikipedia의 Predictive analytics 페이지: 이러한 통계 분석 분야에 공통으로 사용되는 통계 기술과 애플리케이션 및 유형에 관해 읽어보자.
- Wikipedia의 Data Mining 페이지: 이 페이지를 방문하여 데이터에서 패턴을 추출하는 프로세스에 관해 자세히 읽어보자.
- developerWorks Industries 영역: 특정 산업에 적합한 개발자용 최신 기술 자료를 모두 얻자.
- 산업용 라이브러리: 기술 문서와 팁, 튜토리얼, 표준 및 IBM Redbooks는 developerWorks 산업용 라이브러리를 참고하자.
- My developerWorks: developerWorks와 관련된 경험을 개인화할 수 있다.
- developerWorks 기술 행사 및 웹 캐스트: 이러한 세션에 참가하여 최신 기술에 대한 정보를 얻을 수 있다.
- Twitter의 developerWorks 페이지: 오늘 가입하여 developerWorks 트윗을 팔로우하자.
- developerWorks 팟캐스트: 소프트웨어 개발자의 흥미로운 인터뷰와 토론을 확인할 수 있다.
제품 및 기술
- IBM SPSS Statistics 18(이전 SPSS Statistics): 고급 통계 분석 기능을 직접 사용해보자. 통계와 관련하여 초보이건 숙련자이건 관계없이
이러한 포괄적인 도구 세트를 이용하면 원하는 모든 작업을 수행할 수 있다.
- ADAPA: 혁신적인 예측 분석 의사결정 관리 플랫폼인 ADAPA를 사용해보자. 이 플랫폼은 클라우드에서 서비스로 사용하거나 현장에서 사용할 수 있다. 이 플랫폼은
데이터 마이닝 모델과 비즈니스 로직을 전개하여 실제로 사용할 수 있도록 하는 빠르고 안전하고 확장 가능한 환경을 제공한다.
- IBM WebSphere Application Server: IBM WebSphere Application Server를 사용하여 애플리케이션 인프라 비용을 줄이면서 강건하고 민첩하며 재사용 가능한
SOA 비즈니스 애플리케이션과 모든 유형의 서비스를 작성하고 배치, 관리하자.
- IBM 제품 평가판: IBM SQA Sandbox의 온라인 시험판을 다운로드하거나 살펴보고
DB2®, Lotus®, Rational®, Tivoli® 및 WebSphere® 애플리케이션 개발 도구 및 미들웨어 제품을 사용해 볼 수 있다.
토론
- PMML(Predictive Model Markup Language) 그룹: LinkedIn에서 PMML 관련 토론에 참여하자.
- developerWorks 포럼 & 블로그를 통해 developerWorks 커뮤니티에 참여하자.

Alex Guazzelli 박사는 Zementis. Inc. 분석 부문 부사장으로 PMML 기반의 의사결정 플랫폼인 ADAPA를 기반으로 핵심 기술과 예측 솔루션을 개발하는 작업을 책임지고 있다. Guazzelli 박사는 University of Southern California에서 전산학 박사학위를 받았으며 최근에는"PMML in Action: Unleashing the Power of Open Standards for Data Mining and Predictive Analytic"라는 책을 공동 저술했다.