General Regression

モデル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)は無視することができます。