Cluster Models
クラスタ・モデルは、基本的にクラスタの集合から成ります。各々のクラスタに対して、中心ベクトルが与えられます。center-basedモデルにおいて、クラスタは中心座標のベクトルによって定義されます。ある距離測度は最も近い中心を決定するために使用されます。それは与えられた入力レコードに対して最も近いクラスタです。distribution-basedモデル(例えば人口分析のクラスタリング(demographic clustering)中の)については、クラスタがそれらの統計によって定義されます。ある近似測度similarity measureは与えられたレコードに対する最も一致するクラスタを決定するために使用されます。その時、中心ベクトルは単にクラスタを近似するだけです。
モデルは、クラスタリングのために使用された距離や近似測度についての情報を含んでいなければなりません。さらに、それは、共分散マトリックスや他の統計のような、全部のデータの分配についての情報も含まれることでしょう。CenterFields、ClusteringFieldsおよび統計の中の座標の名前は、データ・ディクショナリー中の、および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> |