1. ホーム
  2. のらマネージャーのブログ
  3. PMML日本語化

PMML日本語化

Association Rules

2003年7月 5日 14:30

Association Ruleモデルは、あるアイテム集合を他のアイテム集合へと結び付けて考える際の規則をあらわしています。たとえば、ある製品が、他の製品の集合と組み合わせて購入されるようなことを表\現できます。

Association Ruleモデルの属性定義は、値が、同じタイプの要素の集合(同一のXMLドキュメントに含まれる)の中で一意でなければならないという意味論的制約を表\現するために、エンティティELEMENT-IDを使います。


<!ENTITY 		%ELEMENT-ID 		"CDATA">

Association Ruleモデルは4つの大きな部分から成ります:


<!ELEMENT AssociationModel (Extension*, MiningSchema,
	Item+, Itemset+, AssociationRule+, Extension*)>

<!ATTLIST AssociationModel
	modelName 		CDATA 			#IMPLIED
	functionName 		%MINING-FUNCTION; 	#REQUIRED
	algorithmName 		CDATA 			#IMPLIED
	numberOfTransactions 	%INT-NUMBER; 		#REQUIRED
	maxNumberOfItemsPerTA 	%INT-NUMBER; 		#IMPLIED
	avgNumberOfItemsPerTA 	%REAL-NUMBER; 		#IMPLIED
	minimumSupport 		%PROB-NUMBER; 		#REQUIRED
	minimumConfidence 	%PROB-NUMBER; 		#REQUIRED
	lengthLimit 		%INT-NUMBER; 		#IMPLIED
	numberOfItems 		%INT-NUMBER; 		#REQUIRED
	numberOfItemsets 	%INT-NUMBER; 		#REQUIRED
	numberOfRules 		%INT-NUMBER; 		#REQUIRED
>

属性記述(Attribute description):

numberOfTransactions:入力データに含まれていたトランザクション(アイテムのかご)の数。

maxNumberOfItemsPerTA:最大のトランザクションに含まれていたアイテムの数。

avgNumberOfItemsPerTA:トランザクションに含まれていたアイテムの平均数。

minimumSupport:すべての規則によって満たされた最小の相対的サポート値(#supporting transactions / #total transactions)。

minimumConfidence:すべての規則によって満たされた最小の信頼度(confidence value)。確信は(support (rule) / support(antecedent))として計算されます。

lengthLimit:規則の数を制限するために使われる規則に含まれていたアイテムの最大の数。

numberOfItems:入力データに含まれていた異なるアイテムの数。

numberOfItemsets:モデルに含まれていたアイテム集合(itemsets)の数。

numberOfRules:モデルに含まれていた規則の数。

アイテム集合(itemsets)に含まれていたアイテム:


<!ELEMENT Item EMPTY>

<!ATTLIST Item
	id 			%ELEMENT-ID; 		#REQUIRED
	value 			CDATA 			#REQUIRED
	mappedValue 		CDATA 			#IMPLIED
	weight 			%REAL-NUMBER; 		#IMPLIED
>

属性記述(Attribute description):

id:アイテムを一意に識別する識別子(identification)。

value:入力データに入るようなアイテムの値。

mappedValue:オプション、オリジナルのアイテム値が写像される値。
○例えば、オリジナルの値がEANまたはSKUのコードなら、これは製品名が相当します。

weight:アイテムの重さ。例えばアイテムの価格や値。


規則に含まれているItemsets


<!ELEMENT Itemset (Extension*, ItemRef+)>
<!ATTLIST Itemset
	id 			%ELEMENT-ID; 		#REQUIRED
	support 		%PROB-NUMBER; 		#IMPLIED
	numberOfItems 		%INT-NUMBER; 		#IMPLIED
>

属性記述(Attribute description):

id:itemsetを一意に識別する識別子(identification)。

support:itemsetの相対的なサポート

numberOfItems:このitemsetに含まれていたアイテムの数

Subelements:タイプ・アイテムの要素への点へのアイテム参照。


<!ELEMENT ItemRef EMPTY>

<!ATTLIST ItemRef
	itemRef 		%ELEMENT-ID; 		#REQUIRED
>

属性記述(Attribute description):

itemRef:アイテム要素のid値

Rules:formの要素
<antecedent itemset> => <consequent itemset>


<!ELEMENT AssociationRule ( Extension* )>

<!ATTLIST AssociationRule
	support 	%PROB-NUMBER; 		#REQUIRED
	confidence 	%PROB-NUMBER; 		#REQUIRED
	antecedent 	%ELEMENT-ID; 		#REQUIRED
	consequent 	%ELEMENT-ID; 		#REQUIRED
>

属性定義(Attribute definitions):

support:規則の相対的なサポート
confidence : 規則の信頼度
antecedent : 規則の前提(antecedent)であるitemsetのid値
consequent : 規則の結果(consequent)であるitemsetのid値

:

私たちが次のデータをもつ4つのトランザクションを行っていると仮定しましょう:
t1: クラッカー、コーラ、水
t2: クラッカー、水
t3: クラッカー、水
t4: クラッカー、コーラ、水


<?xml version="1.0" ?>
<PMML version="2.0" >
<Header copyright="www.dmg.org"
	description="example model for association rules"/>
<DataDictionary numberOfFields="2" >
<DataField name="transaction" optype="categorical" />
<DataField name="item" optype="categorical" />
</DataDictionary>
<AssociationModel
	functionName="associationRules"
	numberOfTransactions="4" numberOfItems="3"
	minimumSupport="0.6" minimumConfidence="0.5"
	numberOfItemsets="3" numberOfRules="2">
	<MiningSchema>
		<MiningField name="transaction"/>
		<MiningField name="item"/>
	</MiningSchema>

<!-- We have three items in our input data -->
<Item id="1" value="Cracker" />
<Item id="2" value="Coke" />
<Item id="3" value="Water" />

<!-- and two frequent itemsets with a single item -->

<Itemset id="1" support="1.0" numberOfItems="1">
   <ItemRef itemRef="1" />
</Itemset>

<Itemset id="2" support="1.0" numberOfItems="1">
   <ItemRef itemRef="3" />
</Itemset>

<!-- and one frequent itemset with two items. -->

<Itemset id="3" support="1.0" numberOfItems="2">
   <ItemRef itemRef="1" />
   <ItemRef itemRef="3" />
</Itemset>


<!-- Two rules satisfy the requirements -->

<AssociationRule support="1.0" confidence="1.0"
                 antecedent="1" consequent="2" />

<AssociationRule support="1.0" confidence="1.0"
                 antecedent="2" consequent="1" />

</AssociationModel>
</PMML>

Cluster Models

2003年7月 5日 14:28

クラスタ・モデルのためのPMMLモデルは2つの異なるクラスで定義されます。これらはcenter-basedクラスタモデルとdistribution-basedクラスタモデルです。 両方のモデルは、toplevelタイプとして、DTD要素ClusteringModelを持っています。それらは多くの他の要素タイプを共有しています。

クラスタ・モデルは、基本的にクラスタの集合から成ります。各々のクラスタに対して、中心ベクトルが与えられます。center-basedモデルにおいて、クラスタは中心座標のベクトルによって定義されます。ある距離測度は最も近い中心を決定するために使用されます。それは与えられた入力レコードに対して最も近いクラスタです。distribution-basedモデル(例えば人口分析のクラスタリング(demographic clustering)中の)については、クラスタがそれらの統計によって定義されます。ある近似測度similarity measureは与えられたレコードに対する最も一致するクラスタを決定するために使用されます。その時、中心ベクトルは単にクラスタを近似するだけです。

モデルは、クラスタリングのために使用された距離や近似測度についての情報を含んでいなければなりません。さらに、それは、共分散マトリックスや他の統計のような、全部のデータの分配についての情報も含まれることでしょう。CenterFieldsClusteringFieldsおよび統計の中の座標の名前は、データ・ディクショナリー中の、およびtransformation dictionary中のフィールドの名前と整合していなければなりません。


<!ELEMENT ClusteringModel ( Extension*, MiningSchema, ModelStats?,
			ComparisonMeasure, ClusteringField*,
			CenterFields?, Cluster+, Extension* ) >
<!ATTLIST ClusteringModel
	modelName 		CDATA 			#IMPLIED
	functionName 		%MINING-FUNCTION; 	#REQUIRED
	algorithmName 		CDATA 			#IMPLIED
	modelClass 		( centerBased |
				distributionBased ) 	#REQUIRED
	numberOfClusters 	%INT-NUMBER; 		#REQUIRED
>
<!ELEMENT CenterFields ( DerivedField+ ) >

属性modelClassは、クラスタが中心ベクトルによって定義されるかどうか、また、それらが統計によって定義されるかどうか指定します。後者は人口分析のクラスタリング(demographic clustering)によって使用されます。

中心ベクトルの中で使用されるフィールドは、正規化されます。特に、これは、categoricalな入力フィールドを、中心ベクトル中の数値へと写像することを許します。DerivedFieldと正規化についてのDTDを参照してください。

MiningSchemaの中のMiningField情報は個々のactiveな変数をあらわしていなければなりません。数値の変数については、それが、outliersの処理を指定します。supplementaryなマイニングフィールドがあるかもしれないことに注意してください。これらのフィールドの統計はモデルの一部です。しかし、それらはモデルを適用するためには要求されません。

個々のactiveなMiningFieldについては、タイプUnivariateStats(ModelStatsを参照)の要素が、(背景)集団(population)全体に関する情報を保持します。 これは、可能\なフィールド値とintervalの境界を含む、(要求されている)DiscrStatsあるいはContStatsを含んでいる。オプションとして、統計情報は背景データに対して含まれています。

クラスタはその中心ベクトルによって、あるいは統計量によって定義されます。中心ベクトルは%NUM-ARRAYによってインプリメントされます;各区画(Partition)はクラスタに対応し、クラスタを記述するためにフィールド統計を保持します。クラスタの定義は統計と同様に中心ベクトルも含んでいるでしょう。ClusteringModelの中の属性modelClassは、現実にクラスタを定義するためにどれが使用されるか定義します。


<!ELEMENT Cluster (Extension*, (%NUM-ARRAY;)?, Partition?, Covariances?)>
<!ATTLIST Cluster
	name 			CDATA 			#IMPLIED
>

%NUM-ARRAY;はクラスタのための中心座標を含んでいます。入力フィールドとそれらの座標の対応は、CenterFieldsによって定義されます。上記参照。正規化手法に依存して、categoricalなフィールドは、一つ以上の座標を持つことが出来ることに注意してください。

ある正規化が入力フィールドに対して定義される場合、中心座標は正規化された値を使用して定義されます。

数値のフィールドに対しては、オリジナル領域の中で値も、使用することができます。 categoricalな値に対しては、しかしながら、中心ベクトルが指標(indicator)値0.0あるいは1.0を含むためには要求されません。0.0と1.0の間で、任意の値も取りうる。これらは、ある種の事実上の中心点を定義して、categoricalな値の分配を示します。クラスタ・モデルが中間値を備えた統計を含んでいる場合、中心座標は対応する中間値に必ずしもindenticalではありません。違いが、入力価値の正常化の種類に依存しているかもしれません。

共分散マトリックスは、coordinate-by-coordinate分散(対角セル) と、共分散(対角でないセル)を有します。


<!ELEMENT Covariances ( Matrix ) >

共分散マトリックスは対称でなければなりません。そうすると、非対角共分散セルの半分が格納されなければなりません。missing共分散セルは対称性を用いて再構\成されます。列(row)/行(colum)のシーケンスは、MiningSchemaの中のシーケンスに対応します。共分散がTransformationDictionaryに定義される内部フィールドについての情報を含まないことに注意してください。


<!ELEMENT ClusteringField ( Extension*, Comparisons? ) >
<!ATTLIST ClusteringField
	field 			%FIELD-NAME; 		#REQUIRED
	fieldWeight		%REAL-NUMBER; 		#IMPLIED
	similarityScale 	%REAL-NUMBER; 		#IMPLIED
	compareFunction 	%COMPARE-FUNCTION; 	#IMPLIED
>

field(フィールド)は(名前によって) MiningFieldあるいはDerivedFieldを参照します。

fieldWeightはフィールドに対する重要な要因です。このフィールド重量(weight)は比較(comparison)測度を計算するために比較(comparison)関数の中で使用されます。デフォルト値は1.0です。

similarityScaleは類似性(similarity)が0.5になるような距離です。

compareFunctionは、類似性(similarity)/距離を定義するために、2つのフィールド値とsをとる機能\、およびです。それは、ComparisonMeasureの中のcompareFunctionの一般的詳細を無視することができます。

距離と類似性の計算は以下です。


<!ELEMENT Comparisons ( Extension*, Matrix ) >

比較(Comparisons)は、ClusteringModelの中の属性modelClassに依存して、類似値(similarity values)か距離値(distance values)を含んでいるマトリックスです。列および行の順序は、そのフィールドでの離散値あるいはintervalの順序に対応します。

行列

クラスタ・モデル内に使用されるいくつかの種類の行列があります。例えば、共分散と類似性について記述するための行列など。スペースを節約するために、行列を量の少ない行列である対角行列などとして格納することができます。


<!ELEMENT Matrix ( (%NUM-ARRAY;)+ | MatCell+ )? >
<!ATTLIST Matrix
	kind 		( diagonal | symmetric | any ) "any"
	numberOfRows 		%INT-NUMBER; 		#IMPLIED
	numberOfCols	 	%INT-NUMBER; 		#IMPLIED
	diagDefault 		%REAL-NUMBER; 		#IMPLIED
	offDiagDefault 		%REAL-NUMBER; 		#IMPLIED
>

行列は配列のシーケンスとして表\わされるかもしれません。行列が対角なら、内容は対角値を表\わす数のただ一つの配列です。そうでなければ、各々の配列は、行列中の1列の要素を含んでいます。行列の種類が任意(any)ある場合、値がすべて与えられます。行列が対称なら、第1の配列は、行列要素M(0,0)を含み、第2の配列はM(1,0), M(1,1)、と繰り返しになります(それは左が小さくなる三角形になります)。他の要素は対称性によって定義されます。

量の少ない行列も、MatCellの一覧表\として、コンパクトな形式で表\わされるでしょう。各々のMatCellは、一つのセルの数の値を含んでいます。この場合、対角は、行列表\現のための重要性を持っていません。


<!ELEMENT MatCell (#PCDATA)>
<!ATTLIST MatCell
	row 		%INT-NUMBER; 		#REQUIRED
	col 		%INT-NUMBER; 		#REQUIRED
>

行列要素M(i,j)の評価は以下のように進めます。:

1.要素は、row=i and col=jを持つMatCell中か、行列のi番目の配列のj番目の要素で、明示的に与えられます。

2.行列の属性種は対称です。また、要素M(j,i)は明示的に与えられます。

3.デフォルト値は、i=jなら属性diagDefaultで、あるいは属性offDiagDefaultで、与えられます。

4.値はこのステップでは、いかなる値も計算されません。デフォルトの振る舞い、もしくは補足情報がより高いレベルで与えられる場合のみ、計算が行われるでしょう。

距離あるいは近似測度(Distance or Similarity Measure)

2つのレコードがそのとき比較される時、距離あるいは類似性のどちらかに感心があります。どちらの場合も、「内部(inner)」関数および「外部(outer)」関数の組み合わせで、測度が計算されます。内部関数は2つの単一のフィールド値を比較し、また、外部関数は、すべてのフィールド上の集合(aggregation)を計算します。

各フィールドは比較関数を持っています。これはClusteringModelの中のデフォルトとして定義されるか、ClusteringField毎にそれを定義することができます。2のフィールド値xおよびyを与えると、内部関数には次のようなものがあります:

absDiff:絶対値の差

c(x,y) = |x-y|

gaussSim:gaussian類似性

c(x,y) = exp(-ln(2)*z*z/(s*s)) 但し、z=x-y, sはClusteringField中の(この事例で要請されている)属性similarityScaleの値。

デルタ(delta):

c(x,y) = 0 、但し、x=yならば1

等価(equal):

c(x,y) = 1 、但し、x=yならば0

テーブル(table):

c(x,y) = lookup in similarity matrix


<!ENTITY % COMPARE-FUNCTION "(absDiff | gaussSim | delta 
	| equal | table)" >

ComparisonMeasure

ClusteringModel毎に、1つの集合(aggregation)関数があります:ComparisonMeasureの中の属性種類に依存して、aggregated値が0である(距離測度に関して)か、より大きな値が最適な適合(optimal fit)を示す(類似性の測度)ならば、aggregated値は最適です。

次のaggregation関数はPMMLによって定義されます。WiはClusteringFieldの中のfieldWeightです。XiとYiはフィールド値です。

euclidean(ユークリッド): kind=distance

D = (sum( Wi * c(Xi,Yi)^2 ))^(1/2)

squaredEuclidean, aka squared: kind=distance

D = sum( Wi * c(Xi,Yi)^2)

ユークリッドとsquaredEuclideanは、クラスターを割り振るために、最小値もしくは最大値だけが必要とされるので、本質的に等価です。

chebychev, aka maximum: kind=distance

D = max (Wi*c(Xi,Yi)) over all i

cityBlock, aka sum:

D = sum (Wi*c(Xi,Yi))

minkovski: p-parameter>0

D = (sum |Xi-Yi|^p)^(1/p)

二値データもしくはcategoricalデータに対して、個物(individual)XとYの二つを各々の属性についてそれらの値を比較し、そして

a11 = (Xi=1 and Yi=1である回数)

a10 = (Xi=1 and Yi=0である回数)

a01 = (Xi=0 and Yi=1である回数)

a00 = (Xi=0 and Yi=0である回数)

simpleMatching: kind=similarity, min=0, max=1

D = ( a11 + a00 ) / ( a11 + a10 + a01 + a00 )

jaccard: kind=similarity

D = ( a11 ) / ( a11 + a10 + a01 )

tanimoto: kind=similarity, min=0, max=1

D = ( a11 + a00 ) / ( a11 + 2*(a10+a01) + a00 )

binarySimilarity: kind=similarity, min=0, max=1, c.. and d.. are parameters > 0.

c11*a11 + c10*a10 + c01*a01 + c00*a00
D = ―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\―\
d11*a11 + d10*a10 + d01*a01 + d00*a00


<!ELEMENT ComparisonMeasure (Extension*,
	( euclidean | squaredEuclidean | chebychev |
	cityBlock | minkowski | simpleMatching |
	jaccard | tanimoto | binarySimilarity ) )
>



<!ATTLIST ComparisonMeasure
	kind 			(distance |similarity) 	#REQUIRED
	compareFunction 	%COMPARE-FUNCTION; 	#IMPLIED
	minimum 		%NUMBER; 		#IMPLIED
	maximum 		%NUMBER; 		#IMPLIED
>

<!ELEMENT 	euclidean 		EMPTY>
<!ELEMENT 	squaredEuclidean	EMPTY>
<!ELEMENT 	cityBlock 		EMPTY>
<!ELEMENT 	chebychev 		EMPTY>
<!ELEMENT 	minkowski 		EMPTY>
<!ATTLIST 	minkowski p-parameter %NUMBER; 		#REQUIRED>
<!ELEMENT 	simpleMatching 		EMPTY>
<!ELEMENT 	jaccard 		EMPTY>
<!ELEMENT 	tanimoto 		EMPTY>
<!ELEMENT 	binarySimilarity 	EMPTY>
<!ATTLIST 	binarySimilarity
	c00-parameter 		%NUMBER; 		#REQUIRED
	c01-parameter 		%NUMBER; 		#REQUIRED
	c10-parameter 		%NUMBER; 		#REQUIRED
	c11-parameter 		%NUMBER; 		#REQUIRED
	d00-parameter 		%NUMBER; 		#REQUIRED
	d01-parameter 		%NUMBER; 		#REQUIRED
	d10-parameter 		%NUMBER; 		#REQUIRED
	d11-parameter 		%NUMBER; 		#REQUIRED
>

ComparisonMeasureの中の属性「最小」および「最大」はscoring関数の中で使用されません。それらは、比較関数中の最大と最小の可能\な値を記述していて、単なる情報です。

適合

Center-basedクラスタリング:

・比較関数「absDiff」(すなわち「ComparisonMeasure」の中の属性「compareFunction」の値)はコアなものですが、他の比較関数はそうではありません。

・aggregation関数「squaredEuclidean」はコアなものですが、他のaggregation関数はそうではありません。

Distribution-basedクラスタリング:

・比較関数「gaussSim」、「equal」および「table」はコアなものですが、他の比較関数はそうではありません。

・aggregation関数「cityBlock」はコアなものですが、他のaggregation関数はそうではありません。

center-basedクラスタリング・モデルの例


<?xml version="1.0" ?>
<PMML version="2.0">
	<Header copyright="dmg.org"/>
	<DataDictionary numberOfFields="3">
		<DataField name="marital status" optype="categorical">
			<Value value="s"/>
			<Value value="d"/>
			<Value value="m"/>
		</DataField>
		<DataField name="age" optype="continuous"/>
		<DataField name="salary" optype="continuous"/>
	</DataDictionary>
	<ClusteringModel modelName="Mini Clustering" 
		functionName="clustering"
		modelClass="centerBased" 
		numberOfClusters="2">
		<MiningSchema>
			<MiningField name="marital status"/>
			<MiningField name="age"/>
			<MiningField name="salary"/>
		</MiningSchema>
	<ClusteringField field="marital status" 
				compareFunction="squaredEuclidean"/>
	<ClusteringField field="age" 
				compareFunction="squaredEuclidean"/>
	<ClusteringField field="salary" 
				compareFunction="squaredEuclidean"/>
	<CenterFields>
		<DerivedField name="c1">
			<NormContinuous field="age">
				<LinearNorm orig="45" norm="0"/>
				<LinearNorm orig="82" norm="0.5"/>
				<LinearNorm orig="105" norm="1"/>
			</NormContinuous>
		</DerivedField>
		<DerivedField name="c2">
			<NormContinuous field="salary">
				<LinearNorm orig="39000" norm="0"/>
				<LinearNorm orig="39800" norm="0.5"/>
				<LinearNorm orig="41000" norm="1"/>
			</NormContinuous>
		</DerivedField>
		<DerivedField name="c3">
			<NormDiscrete field="marital status" value="m"/>
		</DerivedField>
		<DerivedField name="c4">
			<NormDiscrete field="marital status" value="d"/>
		</DerivedField>
		<DerivedField name="c5">
			<NormDiscrete field="marital status" value="s"/>
		</DerivedField>
	</CenterFields>
	<Cluster name="marital status is d or s">
		<Array n="5" type="real">
			0.524561 0.486321 0.128427 0.459188 0.412384</Array>
	</Cluster>
	<Cluster name="marital status is m">
		<Array n="5" type="real">
			0.69946 0.419037 0.591226 0.173521 0.235253</Array>
	</Cluster>
	</ClusteringModel>
</PMML>

General Regression

2003年7月 5日 14:22

モデルDTDおよびタグ記述(Model DTD and Tag Description)


<!ELEMENT GeneralRegressionModel (Extension*, ParameterList, FactorList?,
				CovariateList?, PPMatrix?, PCovMatrix?,
				ParamMatrix, Extension*)>

<!ATTLIST GeneralRegressionModel
	targetVariableName 	%FIELD-NAME; 		#REQUIRED
	modelType 		(regression | generalLinear |
				logLinear | multinomialLogistic) #REQUIRED
	modelName 		CDATA 			#IMPLIED
	functionName 		%MINING-FUNCTION; 	#REQUIRED
	algorithmName 		CDATA 			#IMPLIED
>

<!ELEMENT ParameterList (Parameter+)>
<!ELEMENT Parameter EMPTY>
<!ATTLIST Parameter
	name 			CDATA 			#REQUIRED
	label 			CDATA 			#IMPLIED
>

<!ELEMENT FactorList (Predictor*)>
<!ELEMENT CovariateList (Predictor*)>
<!ELEMENT Predictor EMPTY>
<!ATTLIST Predictor
	name 			%FIELD-NAME; 		#REQUIRED
>

<!ELEMENT PPMatrix (PPCell+)>
<!ATTLIST PPCell
	value 			CDATA 			#REQUIRED
	predictorName 		%FIELD-NAME; 		#REQUIRED
	parameterName 		CDATA 			#REQUIRED
	targetCategory 		CDATA 			#IMPLIED
>

<!ELEMENT PCovMatrix (PCovCell+)>
<!ELEMENT PCovCell EMPTY>
<!ATTLIST PCovCell
	pRow 			CDATA 			#REQUIRED
	pCol 			CDATA 			#REQUIRED
	tRow 			CDATA 			#REQUIRED
	tCol 			CDATA 			#REQUIRED
	value 			%REAL-NUMBER; 		#REQUIRED
	targetCategory 		CDATA 			#IMPLIED
>

<!ELEMENT ParamMatrix (PCell+)>
<!ELEMENT PCell EMPTY>
<!ATTLIST PCell
	targetCategory 		CDATA 			#REQUIRED
	parameterName 		CDATA 			#REQUIRED
	beta 			%REAL-NUMBER; 		#REQUIRED
	df 			%INT-NUMBER; 		#IMPLIED
>

GeneralRegressionModel:一般的な回帰モデルの始まりを示します。名前が示すように、これは多数の回帰モデルをサポートすることを意図しています。

ParameterList:パラメーターをすべてリストします。各パラメーターは必要な名前と、オプションのラベルを含んでいます。パラメーター名はモデル中で一意で、できるだけ(パラメーター名がドキュメントに頻繁に現われるので)簡潔であるべきです。ラベルは、もし出てきたら、パラメーターのPredictorとの相関性についてのヒントを与えるという意味がある。

FactorList:要因名のリスト。この特定の回帰の特質が要因(たとえば、線形回帰)がサポートされなければ、存在しません。存在する場合、そのリストは空であったり空でなかったりするでしょう。リスト中の各々の名前はディクショナリ中の名前と一致しなければなりません。要因は、categoricalな変数であると仮定されます。

CovariateList:共分散(covariate)名前のリスト。共分散がない場合、存在しない。リスト中の各々の名前はディクショナリ中の名前と一致しなければなりません。共分散は連続変数として仮定されるでしょう。

targetVariableName:目標変数(レスポンス変数とも呼ばれる)の名前。ディクショナリからの名前と一致しなければなりません。

modelType:使用する回帰モデルのタイプを指定します。この情報はスコアリングの間に適切な数式を選択するために使用されるでしょう。サポートされた回帰アルゴリズムがリストされます。

modelName:これは回帰モデルの名前を指定する一意のidentifierです。

PPMatrix:Predictor-to-Parameter相関行列。それは各Predictor(要因あるいは共分散)の行および各パラメーターの列をもつ長方形の行列です。行列はセルのシーケンスとして表\わされ、各々のセルは、Predictorとパラメーターの間の相関を表\わす数を含んでいます。セル値は以下のように計算されます:

~各Predictor変数vおよび各パラメーターpに対して、vとpの間に相関がない場合、相関セル値は欠損値である。

~共分散Predictorとパラメーターの間に相関がある場合、セル値は、共分散が依存性の表\記で現れる指数に対してセットされます。例:変数jobcatを仮定することは要因で、workは共分散。パラメータ[jobcat=professional] * work * work は共分散workと相関している。そして、workは表\記中で2乗で現れているので、セル中に入っているべき数は2です。

~要因変数とパラメーターの間に相関性があるなら、セル値は、相関性を決定するPredictor値にセットされます。例:要因変数jobcatのカテゴリーの仮定は次のとおりです:professional(専門家), clerical(事務員), skilled(熟練), unskilled(未熟)。 (jobcat, jobcat=skilled)に対応するマトリックスの中のセルは、skilledの値を持つ。

空のセルは出力されたモデル・ファイルの中に記載されることは要求されません。モデル解析のxmlファイルから欠損値と決定されたセルはすべて空であると仮定されるでしょう。空のセルがマトリックスにかなりの無駄なマークアップをするので、これは出力モデルファイルのサイズを縮小するでしょう。

IMPLIED targetCategory属性に注意してください。これは異なるレスポンス値に対する異なるpp-行列の使用ができるように許されます。PPCellがこの属性を含んでいるなら、特にそのレスポンス・レベルに対して、完全なPPMatrixはPMMLドキュメントから再構\築されうることが期待される。レスポンス・レベルに対する確率(また他の統計)を得るためにscoring中に使用されるのはその行列です。デフォルトでは、すべての目標カテゴリーはPPMatrixを共有します。 それゆえ、targetCategory属性はいくつかあるいはすべての目標カテゴリーのデフォルトを無視するために使用することができます。

PPCell:PPMatrixの中のセル。その列(row)名、カラム名および上に記述されるような情報を持っています。

PCovMatrix:パラメーター評価共分散の行列。PCovCellからなり、それらはパラメーター名(pRow)の列情報、目標変数値(tRow)の列情報、パラメーター名(pCol)のカラム情報および目標変数値(tCol)のカラム情報によって、位置づけられている。行列が主対角軸に関して対称である(tRow and tColの交換は値が変更されず、pRow and pColの対に対しても同様である)ことに注目しましょう。それゆえ、行列の半分だけ出力だけされば十\分である。

ParamMatrix:パラメーター・行列。関連する統計(自由度)を持つパラメーター値を含んでいるテーブル。1次元は目標変数のカテゴリーを持ち、それ以外はパラメーター名を持ちます。テーブルは各々のセルを指定していくことによって表\わされます。パラメーター名には、各々の名前が一意に一つのパラメータを識別すべきであるという事以外の制限はない。

PCell:ParamMatrixの中のセル。targetCategoryとparameterNameの属性は、パラメーター・行列中のセルの位置を決定します。含まれていた情報は次のとおりです:beta(実際のパラメーター値、要求されたもの)、df(自由度、オプション)。

一般回帰サンプル

変数に関する情報は以下です:

Name      Type    Number of    Categories (numeric coding in parentheses)
  categories    

JOBCAT    Target      7       Clerical(1), Office trainee(2), Security officer(3),
	                      College trainee(4), Exempt employee(5),
	                      MBA trainee(6), and Technical(7)
SEX       Factor      2       Males(0), and Females(1)
MINORITY  Factor      2       White(0), and Nonwhite(1)
AGE       Covariate
WORK      Covariate

パラメーター評価は以下のように表\示されます:

PPMatrixは次のとおりです:

Parameter                         SEX    MINORITY   AGE    WORK
Intercept
[SEX = 0]                          0
[SEX = 1]                          1
[MINORITY = 0]([SEX = 0])                   0        0
[MINORITY = 1]([SEX = 0])                   0        1
[MINORITY = 0]([SEX = 1])                   1        0
[MINORITY = 1]([SEX = 1])                   1        1
AGE                                                  1
WORK                                                         1

このPredictor-to-Parameterコンビネーション写像は各々の目標変数カテゴリーに対して同じです。対応するXMLモデルは次のとおりです:


<GeneralRegressionModel 
	targetVariableName="jobcat" 
	modelType="multinomial-logistic"
	functionName="regression"
>

<ParameterList>
	<Parameter name="p0" label="Intercept"/>
	<Parameter name="p1" label="[SEX=0]"/>
	<Parameter name="p2" label="[SEX=1]"/>
	<Parameter name="p3" label="[MINORITY=0]([SEX=0])"/>
	<Parameter name="p4" label="[MINORITY=1]([SEX=0])"/>
	<Parameter name="p5" label="[MINORITY=0]([SEX=1])"/>
	<Parameter name="p6" label="[MINORITY=1]([SEX=1])"/>
	<Parameter name="p7" label="age"/>
	<Parameter name="p8" label="work"/>
</ParameterList>

<FactorLis>
	<Predictor name="sex" />
	<Predictor name="minority" />
</FactorList>

<CovariateList>
	<Predictor name="age" />
	<Predictor name="work" />
</CovariateList>

<PPMatrix>
	<PPCell value="1" predictorName="sex" parameterName="p1"/>
	<PPCell value="2" predictorName="sex" parameterName="p2"/>
	<PPCell value="1" predictorName="sex" parameterName="p3"/>
	<PPCell value="1" predictorName="sex" parameterName="p4"/>
	<PPCell value="2" predictorName="sex" parameterName="p5"/>
	<PPCell value="2" predictorName="sex" parameterName="p6"/>
	<PPCell value="1" predictorName="minority" parameterName="p3"/>
	<PPCell value="2" predictorName="minority" parameterName="p4"/>
	<PPCell value="1" predictorName="minority" parameterName="p5"/>
	<PPCell value="2" predictorName="minority" parameterName="p6"/>
	<PPCell value="1" predictorName="age" parameterName="p7"/>
	<PPCell value="1" predictorName="work" parameterName="p8"/>
</PPMatrix>


<ParamMatrix>
	<PCell targetCategory="1" parameterName="p0" beta="26.836" df="1"/>
	<PCell targetCategory="1" parameterName="p1" beta="-.719" df="1"/>
	<PCell targetCategory="1" parameterName="p3" beta="-19.214" df="1"/>
	<PCell targetCategory="1" parameterName="p5" beta="-.114" df="1"/>
	<PCell targetCategory="1" parameterName="p7" beta="-.133" df="1"/>
	<PCell targetCategory="1" parameterName="p8" beta="7.885E-02" 
		df="1"/>
	<PCell targetCategory="2" parameterName="p0" beta="31.077" df="1"/>
	<PCell targetCategory="2" parameterName="p1" beta="-.869" df="1"/>
	<PCell targetCategory="2" parameterName="p3" beta="-18.99" df="1"/>
	<PCell targetCategory="2" parameterName="p5" beta="1.01" df="1"/>
	<PCell targetCategory="2" parameterName="p7" beta="-.3" df="1"/>
	<PCell targetCategory="2" parameterName="p8" beta=".152" df="1"/>
	<PCell targetCategory="3" parameterName="p0" beta="6.836" df="1"/>
	<PCell targetCategory="3" parameterName="p1" beta="16.305" df="1"/>
	<PCell targetCategory="3" parameterName="p3" beta="-20.041" df="1"/>
	<PCell targetCategory="3" parameterName="p5" beta="-.73" df="1"/>
	<PCell targetCategory="3" parameterName="p7" beta="-.156" df="1"/>
	<PCell targetCategory="3" parameterName="p8" beta=".267" df="1"/>
	<PCell targetCategory="4" parameterName="p0" beta="8.816" df="1"/>
	<PCell targetCategory="4" parameterName="p1" beta="15.264" df="1"/>
	<PCell targetCategory="4" parameterName="p3" beta="-16.799" df="1"/>
	<PCell targetCategory="4" parameterName="p5" beta="16.48" df="1"/>
	<PCell targetCategory="4" parameterName="p7" beta="-.133" df="1"/ >
	<PCell targetCategory="4" parameterName="p8" beta="-.16" df="1"/>
	<PCell targetCategory="5" parameterName="p0" beta="5.862" df="1"/>
	<PCell targetCategory="5" parameterName="p1" beta="16.437" df="1"/>
	<PCell targetCategory="5" parameterName="p3" beta="-17.309" df="1"/>
	<PCell targetCategory="5" parameterName="p5" beta="15.888" df="1"/>
	<PCell targetCategory="5" parameterName="p7" beta="-.105" df="1"/>
	<PCell targetCategory="5" parameterName="p8" beta="6.914E-02" 
		df="1"/>
	<PCell targetCategory="6" parameterName="p0" beta="6.495" df="1"/>
	<PCell targetCategory="6" parameterName="p1" beta="17.297" df="1"/>
	<PCell targetCategory="6" parameterName="p3" beta="-19.098" df="1"/>
	<PCell targetCategory="6" parameterName="p5" beta="16.841" df="1"/>
	<PCell targetCategory="6" parameterName="p7" beta="-.141" df="1"/>
	<PCell targetCategory="6" parameterName="p8" beta="-5.058E-02" 
		df="1"/>
</ParamMatrix>

</GeneralRegressionModel>

Scoringアルゴリズム

私たちは、上記の例を使って、scoringプロセスのステップを例証しましょう。得点するプロセスで続くべきステップを例証するために上記の例を使用するでしょう。次の事例(観察)はスコアされます:

obs = (sex=1 minority=0 age=25 work=4)

1.モデルファイル解析をしてください。辞書、PPMatrixおよびパラメーター・行列を再構\築してください。

2.ある事例でスコアするためには、ベクトルx(モデル中のパラメーターの数と等しい長さのx)を以下のように構\築してください。

~PP相関性行列の列iが空の場合、xi=1をセットします。

~PP相関性行列の列が空でなく、要因値あるいは要因値の集合に対応している場合、スコアされる事例がこの列にマッチしているならxiに1をセットし、そうでないならxiに0をセットする。

~PP相関性行列の列iが空でなく、共分散cに対応する場合、列は独立変数cに対応するカラムに、ただ一つの0でないエントリーを含んでいるべきです。 rをこのエントリーの値にしてください;それは相関指数です。したがって、xi=xrを(この事例で出てくる値cを使って)セットしてください。

3.今、各レスポンスcatefory(目標変数の値)jについては、βjは、そのレスポンス・カテゴリーのためのパラメーター評価のベクトルです。(kが最後のレスポンス・カテゴリーであるなら、規約によって βk=0 となることを忘れてはいけません。)rj= <x,βj > and sj= exp ri とセットします。そうすると、私たちの事例がカテゴリーjに落ちる確率はpj= sj/ (s1 + ... + sk)

4.最も高い確率で落ちるカテゴリーに各々の事例を割り振りしたくても、rjの計算の後にいかなる計算も必要としない。rj値が最も高いカテゴリーが、あなたの欲するものである。実際の確率(たとえば、ある事例に、51%のgoodカテゴリーを割り振るかそれとも99%のgoodカテゴリーを割り振るかを知るための確率)を計算したければ、私たちは、オーバーフローを回避するために小さな工夫をします。すなわち、pjはexp (r1-rj ) +... + exp (rk-rj)の逆数です。任意のiに対してri-rj> 700なら、指数関数はオーバーフローするでしょう。しかし、このケースでPjは、それに0をセットできるほど小さい。分母がせいぜい1であることを項exp (rj-rj)が保証するので、分母中の小さな値(Underflow)は無視することができます。

Trees

2003年7月 4日 14:18

PMMLの中の(決定)木モデル、分類または予測の構造を定義することを考慮に入れます。各ノードは、ノードあるいは分岐するノードのいずれかを選ぶために規則を定義する論理的な述語表現を保持します。


<!ELEMENT TreeModel (Extension*, MiningSchema, ModelStats?, 
		Node, Extension*)>

<!ATTLIST TreeModel
	modelName 		CDATA 				#IMPLIED
	functionName 		%MINING-FUNCTION; 		#REQUIRED
	algorithmName 		CDATA 				#IMPLIED
	splitCharacteristic 	(binarySplit | multiSplit) 	"multiSplit"
>

定義:

TreeModel:決定木モデル用の定義を始めます。

Node(ノード):この要素は、決定木モデルに分岐(split)や葉(leaf)を定義するためのカプセル化です。すべてのノードは、それ自体あるいはその枝のいずれかを選ぶために規則を識別する述語を含んでいます。述語は他の入れ子(nested)の述語から構\成された表\現かもしれません。

modelName:TreeModel要素中のmodelNameの中の値はモデルを識別する、PMMLファイルの文脈中の一意な名前です。MMLモデルの一般的な構\造を参照。

splitCharacteristic:決定木モデルが1ノード当たりちょうど2つの子、あるいは1ノード当たり多数のchildrensを持っているかどうか示します。多数の場合には、それが、各ノードが2つ以上の子ノードを持っているかもしれないことを意味します。


ノードは次のものから成ります:


<!ENTITY % PREDICATE "( SimplePredicate | CompoundPredicate 
			SimpleSetPredicate | True | False ) " >

<!ELEMENT Node ( Extension*, (%PREDICATE;), ScoreDistribution*, Node* )>
<!ATTLIST Node
	score 		CDATA 			#REQUIRED
	recordCount 	%NUMBER; 		#IMPLIED
>

定義:

score:ノードのスコアの値はそのノードを選択するレコードの予\測値として役立ちます。

recordCount:ノード中のrecordCountの値は、ScoreDistribution要素中のrecordCount値のベースサイズとして使われます。これらの数は、モデルを構\築/学習するために使用されたレコードの数を必ずしも決定するわけではない。しかしながら、それらは、親ノードと比較された時のノードの相対的なサイズと同様に、スコア分配での与えられた値の相対的なサイズも決定することを可能\にします。


述語

各ノードは1つの%PREDICATE;を持っています;それは、SimplePredicate、述語の集合、CompoundPredicate、True、あるいはFalse を持ちうる。


<!ELEMENT SimplePredicate EMPTY>
<!ATTLIST SimplePredicate
	field 		%FIELD-NAME; 			#REQUIRED
	operator 	(equal | notEqual |
			lessThan | lessOrEqual |
			greaterThan | greaterOrEqual) 	#REQUIRED 
	value 		CDATA 				#REQUIRED
>

サブノード中の述語は左から右に評価されます。アプリケーションアルゴリズムは、述語が真である第一のノードを選択します。典型的に、rightmostなノードは述語<True/>をちょうど含んでいます。

定義:

SimplePredicate:この要素は単純な、boolean表\記の形のルールを定義することからなり、そのルールは、フィールド、二値比較演算子(booleanOperator)、値からなる。

field:SimplePredicate要素のこの属性はMiningSchemaのminingField要素のうちの1つの名前エントリーです。

operator:SimplePredicateのこの属性は6つのあらかじめ定義された比較オペレーターのうちの一つです。

Operator Math Symbol
equal =
notEqual !=
lessThan <
lessOrEqual <=
greaterThan >
greaterOrEqual>=
value - SimplePredicate要素のこの属性は評価/比較するための情報です。

数学上、規則は「フィールドbooleanOperator値」として表\現されます。すなわち、フィールドは左のオペランドで、値は右のオペランドです。次のサンプルは「年齢 < 30」との等価物を表\わします。


<SimplePredicate field="age" operator="lessThan" 
			value="30" >

<SimplePredicate value="30" operator="lessThan" 
			field="age" >

<SimplePredicate operator="lessThan" value="30" 
			field="age" >


合成述語


<!ELEMENT CompoundPredicate ( %PREDICATE; , (%PREDICATE;)+ >
<!ATTLIST CompoundPredicate
	booleanOperator 	(or|and|xor|surrogate) 		#REQUIRED >

定義:

CompoundPredicate:エンティティ%PREDICATE;で定義されるような2つ以上の要素を組み合わせるためのカプセル化要素(encapsulating element)。booleanOperatorであるこの要素に関連した属性は、以下の論理的な(ブール)オペレーターのうちの1つをとることができます:and、or、xor、surrogate。

booleanOperator:オペレーターand、or、xor、は、通常の意味で、関連する二値オペレーターです。評価の順序は1つの合成述語内におけるどの述語にも無関係です。表\現「surrogate(a,b)」は「もしaが知らないという事ではないならばa、そうでなければb(\'if not unknown(a) then a else b\')」と等価です。

オペレーター「and」は、すべての述語が真であるなら、真である。

オペレーター「or」は、述語のうちどれか一つが真なら、真である。

オペレーター「xor」は2つ命題(arguments)の時のみ使用されます。それぞれの述語が、異なる値(1つが真で1つが偽)を持つ場合でも、それは、真になります。

オペレーター「surrogate」は代理述語(surrogate predicates)を考慮に入れます。それらは、欠損値が、代替述語(alternative predicate)が利用可能\なような親述語の評価に現れる場面で利用されます。

単集合述語


<!ELEMENT SimpleSetPredicate ( %ARRAY; ) >
<!ATTLIST SimpleSetPredicate
	field 			%FIELD-NAME; 	#REQUIRED
	booleanOperator 	(isIn|isNotIn) 	#REQUIRED 
>

定義:

SimpleSetPredicate:フィールド値が集合の要素かどうかチェックします。値の集合は配列によって指定されます。booleanOperatorであるこの要素に関連した属性は、次のブールのオペレーターのうちの1つをとることができます:isIn、isNotIn。

値の集合は内容の中で配列によって指定されます。booleanOperatorであるこの要素に関連した属性は、次のブールのオペレーターのうちの1つをとることができます:isIn、isNotIn。

オペレーターisInは、フィールド値が配列中の値のリストに含まれているなら、真を示します。

オペレーターisNotInは、フィールド値が配列中の値のリストに含まれていないなら、真を示します。


<!ELEMENT True EMPTY>

定義:

True:ブール定数(boolean constant)TRUEを識別する述語要素。


<!ELEMENT False EMPTY>

定義:

False:ブール定数(boolean constant)FALSEを識別する述語要素。


サブ述語(Sub-predicates)(合成述語の枝(siblings))は、ともにグループ化され、共に評価されるべきである。例えば、

( (temperature > 60) and (temperature < 100) and (outlook(景色)=overcast(くもり)) )


<CompoundPredicate booleanOperator="and" >
	<SimplePredicate field="temperature" operator="greaterThan" 
				value="60" />
	<SimplePredicate field="temperature" operator="lessThan" 
				value="100" />
	<SimplePredicate field="outlook" operator="equal" 
				value="overcast"/>
</CompoundPredicate>

合成述語の枝が合成述語である場合、合成述語のそれぞれが共に評価される。例えば、 ( ( (temperature < 90) and (temperature > 50) ) or (humidity(湿度) >=80) )


<CompoundPredicate booleanOperator="or" >
	<CompoundPredicate booleanOperator="and" >
		<SimplePredicate field="temperature" operator="lessThan"
				value="90" />
		<SimplePredicate field="temperature" operator="greaterThan"
				value="50" />
	</CompoundPredicate>
	<SimplePredicate field="humidity" operator="greaterOrEqual"
			value="80" />
</CompoundPredicate>

欠損値値の述語

論理表\記の任意のフィールドの値が欠損していることもありうる。SimplePredicate

FieldOperatorValue (フィールド・オペレーター値)

は、フィールドの値が欠損値なら、評価は「Unknown(未知)」になります。DataDictionaryおよびMiningSchemaが欠損値を扱う方法上の定義、例えば、それを代替値(substitute)に置き換えるといったやり方を含むかもしれないことには注意を払いましょう。その場合では、代替値(substituted value)が述語を評価するために使用されます。

オペレーター「and」「or」をもつCompoundPredicateの結果は次のテーブルで決定される:

P Q P and Q P or Q
TrueTrueTrueTrue
TrueFalseFalseTrue
TrueUnknownUnknownTrue
FalseTrueFalseTrue
FalseFalseFalseFalse
FalseUnknownFalseUnknown
UnknownTrueUnknownTrue
UnknownFalseFalseUnknown
UnknownUnknownUnknownUnknown

オペレーター「surrogate」は、欠損値をもつ論理表\現を扱う特別の手段を提供します。それは述語のシーケンスに適用されます。述語の順序、一番目の述語はprimaryで、2番目の述語はsurrogates。評価順序は左から右です。primaryな述語が「Unknown」の場合、cascadedな述語が適用されます。したがって、代理述語は決定しない(undetermined)述語に、解答を与えます。(値を与えるということ:舟)

例:


<CompoundPredicate booleanOperator="surrogate" >
	<CompoundPredicate booleanOperator="and" >
		<SimplePredicate field="temperature" operator="lessThan"
				value="90" />
		<SimplePredicate field="temperature" operator="greaterThan"
				value="50" />
	</CompoundPredicate>
	<SimplePredicate field="humidity" operator="greaterOrEqual"
			value="80" />
	<False/>
</CompoundPredicate>

primaryな述語は( (temperature < 90) and (temperature > 50) )です。もし、これに、真偽の評価が与えられるなら、これは代理述語の結果です。 temperatureのフィールドが欠損していて、primaryな述語にUnknownの評価が与えられるなら、評価は第2述語(湿度>=80)へと続きます。もし湿度の値が欠損しているなら、最終結果は偽です。


ScoreDistribution

分類木構\造中のPredictor値をリストする方法。


<!ELEMENT ScoreDistribution EMPTY>
<!ATTLIST ScoreDistribution 
value CDATA #REQUIRED
recordCount %NUMBER; #REQUIRED
>

属性定義 (Attribute Definitions)

ScoreDistribution:分類モデルの中でノードが予\測するスコアのセグメントを表\わすノードの要素。ノードが一覧表\を保持するなら、一覧表\の各エントリーは1つのScoreDistribution要素中に格納されます。

value:ScoreDistributionのこの属性は分類モデル中のラベルです。

recordCount:ScoreDistributionのこの属性は値属性に関連したサイズ(レコードの数の中の)です。

ノードが最終ノードとして選択され、そして、このノードがいかなる「score」属性を持たないなら、最も高いrecordCountとScoreDistributionが、どの値が予\測される値として選択されるかを決定する。ノードが、(recordCount_i)が上界である一つ以上のエントリーが存在するようなScoreDistribution要素のシーケンスを含んでいる場合、一番始めのエントリーが選択されます。

注:ノードが属性「score」を持つ場合、この属性値は、ScoreDistributionから予\測された値の計算を無視(override)します。


:

surrogate(代理)を使用する方法

CARTアルゴリズムでは、代理(surrogate)分岐(split)に、この概念があります。ある物がレコードを分類しているとします。彼/彼女は、第一の分岐が「salary <= 35000」であるノードにレコードを落とします(drops the record to)。さらに、普通に起こりうる話として、レコードのsalaryに欠損値が入っているとします。cascade-like fashionにおいて、与えられたレコードが分類できるようになるまで、代理規則(surrogate rules)のシーケンスの適用によって、CARTはこの状況を処理します。0以上の代理分岐が利用可能\かもしれません。私たちの例において、代理として、「age <=28」、「homeowner==0」を持ちます。もし、ageが欠損してないなら、レコードはage値にそって分類されます。もし、ageがmissingなら、homeownerを確認します。もし、「homeowner」もmissingなら、我々は代理(surrogates)を使い果たしてしまい、XMLドキュメントで指定されているように、TrueかFalseを適用します。例えば [(salary <= 35000) surrogate (True)] は、「salaryが欠損してなければ、salaryによってレコードを分類し、salaryが欠損しているなら、どんな場合でも述語は真を返す。」ということを意味している。


例 TreeModel


<?xml version="1.0" ?>
<PMML version="1.1" >
<Header copyright="www.dmg.org" description="A very small 
		binary tree model to show structure."/>
	<DataDictionary numberOfFields="5" >
		<DataField name="temperature" optype="continuous"/>
		<DataField name="humidity" optype="continuous"/>
		<DataField name="windy" optype="categorical" >
			<Value value="true"/>
			<Value value="false"/>
		</DataField>
		<DataField name="outlook" optype="categorical" >
			<Value value="sunny"/>
			<Value value="overcast"/>
			<Value value="rain"/>
		</DataField>
		<DataField name="whatIdo" optype="categorical" >
			<Value value="will play"/>
			<Value value="may play"/>
			<Value value="no play"/>
		</DataField>
	</DataDictionary>
	<TreeModel modelName="golfing" functionName="classification">
		<MiningSchema>
			<MiningField name="temperature"/>
			<MiningField name="humidity"/>
			<MiningField name="windy"/>
			<MiningField name="outlook"/>
			<MiningField name="whatIdo" usageType="predicted"/>
		</MiningSchema>
	<Node score="will play">
		<True/>
		<Node score="will play">
			<SimplePredicate field="outlook" operator="equal" 
				value="sunny"/>
		<Node score="will play">
			<CompoundPredicate booleanOperator="and" >
				<SimplePredicate field="temperature" 
					operator="lessThan" value="90" />
				<SimplePredicate field="temperature" 
					operator="greaterThan" value="50" />
			</CompoundPredicate>
			<Node score="will play" >
				<SimplePredicate field="humidity" 
				operator="lessThan" value="80" />
			</Node>
			<Node score="no play" >
				<SimplePredicate field="humidity" 
				operator="greaterOrEqual" value="80" />
			</Node>
		</Node>
		<Node score="no play" >
			<CompoundPredicate booleanOperator="or" >
				<SimplePredicate field="temperature" 
					operator="greaterOrEqual" value="90"/>
				<SimplePredicate field="temperature" 
					operator="lessOrEqual" value="50" />
			</CompoundPredicate>
		</Node>
	</Node>
	<Node score="may play" >
		<CompoundPredicate booleanOperator="or" >
			<SimplePredicate field="outlook" 
				operator="equal" value="overcast" />
			<SimplePredicate field="outlook" 
				operator="equal" value="rain" />
		</CompoundPredicate>
		<Node score="may play" >
			<CompoundPredicate booleanOperator="and" >
				<SimplePredicate field="temperature" 
					operator="greaterThan" value="60" />
				<SimplePredicate field="temperature" 
					operator="lessThan" value="100" />
				<SimplePredicate field="outlook" 
					operator="equal" value="overcast" />
				<SimplePredicate field="humidity" 
					operator="lessThan" value="70" />
				<SimplePredicate field="windy" 
					operator="equal" value="false" />
			</CompoundPredicate>
		</Node>
		<Node score="no play" >
			<CompoundPredicate booleanOperator="and" >
				<SimplePredicate field="outlook" 
					operator="equal" value="rain" />
				<SimplePredicate field="humidity" 
					operator="lessThan" value="70" />
			</CompoundPredicate>
		</Node>
	</Node>
</Node>
</TreeModel>
</PMML>

得点手続き(Scoring Procedure)

私たちは、得点プロセス(scoring process)で続くステップを例証するために上記の例を使用しましょう。

入力データは以下であると仮定されます:

temperature=75, humidity=55, windy="false", outlook="overcast"

1) ルートノードを選択してください。その述語は定数Trueです。

2) ルートノード(子ノードの順序はドキュメントにおいてtop-downです)で第1の子ノードを選択します。このノード(outlook="sunny")の述語を評価します。そうすると、この述語は偽になります。親ノードに返って、第2の子を選択します。第2の子の述語は(outlook="overcast" or outlook="rain")です。入力 outlook="overcast" で、この述語は真です。このノードでとどまります。

3) currectノードの第1の子を選んでください。以下の述語を評価します。 (temperature > 60 and temperature < 100 and outlook="overcast" and humidity <70 windy="false").
述語は真である。したがって、このノードを選択してください。

4) 最後の選択されたノードが子ノードを持たないので、葉(leaf)ノードが、予\測されたフィールド「whatIdo」に対するスコア値を含みます。最後に、「whatIdo」に対する返されたスコア値は「may play」 である。

適合

次のアイテムがTreeModelのコアではない特徴です:

(a)要素ScoreDistribution

(b)要素CompoundPredicateでの属性booleanOperatorの オペレーター「xor」と「surrogate」

Taxonomies and Hierarchies

2003年7月 4日 14:14

categoricalなフィールドの値は階層で組織化する(organized)ことができます。非常に身近な例は製品グループ、および市、郡、県、国のような地理的な階層です。階層も分類あるいは分類グラフとして知られています。

PMMLの中の階層の表\現は親/子供関係に基づきます。平板状(tabular)のフォーマットはこれらの関係にデータを供給するために使用されます。

分類は、1つ以上の親/子供テーブルのシーケンスから構\築されます。実価は外部テーブルに格納することができます。そのようなテーブルは、テーブル用の1種のURLをインプリメントするTableLocatorによって、参照されます。平板状のデータはさらにPMMLドキュメントそれ自身の一部でありえます。その場合では、要素InlineTableTableLocatorの代わりに使用されます。以下に、私たちはこれらのテーブル参照の例を示しましょう。しかしながら、内容の実際の定義はPMMLの範囲の外にあります。XMLの中のデータ・ベース・テーブルの表\現に対処する他の標準は、今後利用可能\になる予\定です。PMMLの中の現在の定義は、もっと今後、改良されるフレームワークであるように意図されます。


<!ELEMENT Taxonomy ( ChildParent+ ) >
<!ATTLIST Taxonomy
	name 			CDATA 		#REQUIRED
>

<!ENTITY % TABLE "( TableLocator | InlineTable ) " >


<!ELEMENT ChildParent ( %TABLE; ) >
<!ATTLIST ChildParent
	childField 		CDATA 		#REQUIRED
	parentField 		CDATA 		#REQUIRED
	parentLevelField 	CDATA 		#IMPLIED
	isRecursive 		(no | yes) 	"no"
>

<!ELEMENT TableLocator (Extension*) >
<!ELEMENT InlineTable (Extension*) >

属性記述(Attribute Description)

childField:レコード毎に子値(child value)を含んでいるフィールド名を定義します。

parentField:レコード毎に親値(parent value)を含んでいるフィールド名を定義します。

parentLevelField:親のレベル数を含んでいるフィールド名を定義します。最低のレベルの子は通常レベル0メンバーと呼ばれます。すなわち、親のレベル数は1でスタートします。レベルが子供/親データそれ自身から導出されうるので、parentLevelFieldはオプションです。

isRecursive:再帰的(recursive)なテーブルは1つのテーブルに完全な分類を定義することができます。すなわち、親フィールドでの値も子フィールドの中で使用することができます。

TableLocatorは、アプリケーションがあるテーブルを見つけるのを助けるすべての記述を含んでいるでしょう。PMML 2.0はまだ内容を定義しません。PMMLユーザは自分の拡張を使用しなければなりません。同じことはInlineTableなことに当てはまります。


:

ZIP code、Cityおよびstatesを持った階層を以下のように定義してみましょう。


<Taxonomy name="ZIP-City-State">

<ChildParent childColumn="ZIP code" parentColumn="City">
	<TableLocator x-dbname="myDB" x-tableName="ZIP_City" />
</ChildParent>

<ChildParent childColumn="cities" parentColumn="states">
	<TableLocator x-dbname="myDB" x-tableName="Cities_States" />
</ChildParent>

<ChildParent childColumn="State" parentColumn="Country">
	<TableLocator x-dbname="myDB" x-tableName="AllStates" />
</ChildParent>

</Taxonomy>

実際のデータは、ロケータによって与えられるような名前を備えたテーブルに存在するだろう。

ZIP_City | ZIP code    | City
===================================
         | CA 95126    | San Jose
         | CA 95020    | Gilroy
         | CA 90806    | Long Beach
         | IL 60463    | Oak Lawn
         | MA 02149    | Everett


Cities_States | cities     | states
===================================
              | San Jose   | CA
              | Gilroy     | CA
              | Long Beach | CA
              | Oak Lawn   | IL
              | Everett    | MA


AllStates | State | Country
===========================
          | CA    | USA
          | IL    | USA
          | MA    | USA

3つの異なるテーブルに子/親データを格納する必要がないことに注意してください。さらに、私たちは、statesのためのカラムを含めるためにテーブルZIP_Cityを拡張することができました。これは「City, State ZIP」を持つ典型的なアドレス・フォーマット(typical address format)に近いものになるでしょう。

階層は、2つのテーブルで以下のように表\わされうる:レベル0アイテムの1つのテーブル、それらの親、上位の要素/カテゴリーレベルの他のテーブル、それらの親用テーブル。後者のテーブルは、親カラムの値が子カラムにも現れるという意味で、再帰的でしょう。付加的な属性「isRecursive」は、ルートレベルまでの親/子供関係を定義するテーブルにフラグを立てることを意図しています。再帰的なテーブルがそのとき要素分類(Taxonomy)の内容に現われるなら、それはシーケンスの最後のテーブルでなければなりません。


TableLocatorInlineTable

要素TableLocatorInlineTableは、他の標準化グループがこれらの問題を手がけているので、まだ完全には定義されません。PMML 2.0のためのこれらの要素の予\備(preliminary)定義は次の例のようにすることが出来るでしょう。


<Taxonomy name="ZIP-City-State">

<ChildParent childColumn="ZIP code" parentColumn="City">
	<TableLocator x-dbname="myDB" x-tableName="ZIP_City" />
</ChildParent>

<ChildParent childColumn="member" parentColumn="group" isRecursive="yes" >
	<InlineTable><Extension extender="MySystem">
		<row member="San Jose" group="CA"/>
		<row member="Gilroy" group="CA"/>
		<row member="Long Beach" group="CA"/>
		<row member="Oak Lawn" group="IL"/>
		<row member="Everett" group="MA"/>
		<row member="CA" group="USA"/>
		<row member="IL" group="USA"/>
		<row member="MA" group="USA"/>
	</Extension></InlineTable>
</ChildParent>

</Taxonomy>

アイリンクへのお問い合わせ

お問い合わせメールフォームはこちら

2016年12月移転 北海道旭川市神楽1条7丁目4−8 お問合わせはメール・SNSアカウントで mail
  • twitter
  • facebook
  • google
  • noimage
  • noimage
  • noimage