Regression

回帰関数は従属(dependent)変数(目標フィールド)と1つ以上の独立変数の関係を決定するために使用されます。従属変数はあなたが予\測したい値です。一方、独立変数は予\測をする上で基になる変数です。

RegressionModelは3つのタイプの回帰モデルを定義します:線形回帰、多項回帰、またlogistic回帰。

modelType属性は、用いられる回帰のタイプを示します。

線形と、ステップワイズ多項式(stepwise-polynomial)回帰は、値の連続スペクトルをもつ数の従属変数に対してデザインされています。それらのモデルはただ一つの回帰テーブルを含んでいます。こういう場合は、属性normalizationMethodおよびtargetCategoryは、使用されません。

ロジスティックスの回帰はcategoricalな従属変数のために設計されています。これらのモデルは、各々のtargetCategoryに対して1つの回帰テーブルを含んでいなければなりません。normalizationMethodは、予\測が確率に変換されるかどうか、どのように変換されるかを記述します。

線形ステップワイズ回帰について、回帰定式は次のとおりです:

Dependent variable = intercept(遮蔽定数) + Sum(合計)i (coefficient(係数)i * independent variable(独立変数)i ) + error(エラー)

ロジスティックスの回帰については、定式は次のとおりです:

y = intercept + Sumi (coefficienti * independent variablei )
p = 1/(1+exp(-y))

pは予\測された値です。多くの場合、pは、関心のあるカテゴリーに属する個別事象(individual)の信頼度や確率として、targetCategoryによって定義されるように、解釈するとが出来ます。多数の回帰方程式がありえます。nクラス/カテゴリーをもつ、形式のn方程式があります。

y_j = intercept_j + Sumi (coefficient_ji * independent variablei )

softmax関数は、カテゴリーjに対する信頼度を計算することができます。

p_j = exp(y_j) / (sum[i in 1..n](exp(y_i)) )

simplemaxと呼ばれる別の方法は単純な商(quotient)を使用します。

p_j = y_j / (sum[i in 1..n](y_i) )

これらの信頼度は統計確率に似ています。しかし、それらは値y_iをpost-processingよって、確率のように見えるだけです。


<!ELEMENT RegressionModel (Extension*, MiningSchema?, ModelStats?, 
					RegressionTable+, Extension*) >
<!ATTLIST RegressionModel
	modelName 		CDATA 				#IMPLIED
	functionName 		CDATA 				#REQUIRED
	algorithmName 		CDATA 				#IMPLIED
	modelType 		(linearRegression |
				stepwisePolynomialRegression | 
				logisticRegression)		#REQUIRED
	targetFieldName 	%FIELD-NAME; 			#REQUIRED
	normalizationMethod 	(none | simplemax | softmax) 	"none"
>

<!ELEMENT RegressionTable (NumericPredictor*), (CategoricalPredictor*))>
<!ATTLIST RegressionTable
	intercept 		%REAL-NUMBER; 			#REQUIRED
	targetCategory 		CDATA 				#IMPLIED
>

<!ELEMENT NumericPredictor EMPTY>
<!ATTLIST NumericPredictor
	name 			%FIELD-NAME; 			#REQUIRED
	exponent 		%INT-NUMBER; 			#REQUIRED
	coefficient 		%REAL-NUMBER;			#REQUIRED
	mean 			%REAL-NUMBER; 			#IMPLIED
>
<!ELEMENT CategoricalPredictor EMPTY>
<!ATTLIST CategoricalPredictor
	name 			%FIELD-NAME; 			#REQUIRED
	value 			CDATA 				#REQUIRED
	coefficient 		%REAL-NUMBER; 			#REQUIRED
>

RegressionModel:XML回帰モデルのルート要素。回帰モデルの各実例はこの要素ではじめなければなりません。

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

functionName:回帰または分類になります。

algorithmName:モデルを作成する間に使用されたアルゴリズムについて記述する任意の文字列になります。

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

targetFieldName:目標フィールド(レスポンス変数とも呼ばれます)の名前。

RegressionTable:すべての予\測の変数あるいは独立変数の値をリストするテーブル。 モデルが数のフィールドを予\測するために使用されるなら、ただ一つだけのRegressionTableが存在し、また、属性targetCategoryはおそらくmissingである。モデルがcategoricalフィールドを予\測するために使用されるなら、2つ以上のRegressionTablesがあり、また、各々は一意な値で定義された属性targetCategoryを持たなければならない。

NumericPredictor:数値の独立変数を定義します。有効な属性のリストは、変数の名前、使用される指数、この変数の値に掛けられる係数からなる。独立変数がmissing値を含んでいるならば、mean属性はmissing値を中間値に置き換えるために使われます。

CategoricalPredictor:categoricalな独立変数を定義します。属性のリストは、変数の名前、の属性、この変数の値に掛けられる係数からなる。categoricalな値を持つ回帰分析を行うために、なんらかの手段が、計算を可能\にするために適用されなければなりません。独立値の指定された値が現れたならば、variable_name(value)項 は、1と置き換えられます。したがって、係数に1を掛けます。値が生じない場合、variable_name(value)項 は、0と置き換えられ、積、係数variable_name(value)は0となる。従って、積は実行中の分析で無視されます。入力値がmissingなら、variable_name(v)は任意の「v」に対して0になります。

:

次の回帰式が未収保険金の件数を予\測するために使用されます:

number_of_claims = 132.37 + 7.1*age + 0.01*salary + 41.1*car_location(\'carpark\') + 325.03*car_location(\'street\')

値carpark(駐車場)が、特定のレコード中のcar location(自動車位置)に対して指定されたならば、次の定式を得るでしょう:

number of claims = 132.37 + 7.1 age + 0.01 salary + 41.1 * 1 + 325.03 * 0


線形回帰サンプル

これは、独立変数age、salary、car locationの値の事前知識を基に未収保険金の件数を予\測する線形回帰方程式です。car locationは単なるcategoricalな変数です。その値属性は、二つの可能\な値carpark(駐車場) と street(路上)を取ります。

number of claims = 132.37 + 7.1 age + 0.01 salary + 41.1 car location( carpark ) + 325.03 car location( street )

対応するXMLモデルは次のとおりです:


<RegressionModel
	functionName="regression"
	modelName="Sample for linear regression"
	modelType="linearRegression"
	targetFieldName="number of claims">

	<RegressionTable intercept="132.37">
		<NumericPredictor name="age" 
				exponent="1" coefficient="7.1"/>
		<NumericPredictor name="salary" 
				exponent="1" coefficient="0.01"/>
		<CategoricalPredictor name="car location"
				value="carpark" coefficient="41.1"/>
		<CategoricalPredictor name="car location"
				value="street" coefficient="325.03"/>
	</RegressionTable>

</RegressionModel>

ステップワイズ多項回帰サンプル

これは、独立変数salary と car location の値の事前の知識に基づいて未収保険金の件数を予\測するステップワイズ多項回帰方程式です。car locationはcategoricalな変数です。その値属性は、二つの可能\な値carpark(駐車場) と street(路上)を取ります。

number of claims = 3216.38 - 0.08 salary + 9.54E-7 salary**2 - 2.67E-12 salary**3 + 93.78 car location( carpark ) + 288.75 car location( street )


<RegressionModel
	functionName="regression"
	modelName="Sample for stepwise polynomial regression"
	modelType="stepwisePolynomialRegression"
	targetFieldName="number of claims">

	<RegressionTable intercept="3216.38">
		<NumericPredictor name="salary" 
				exponent="1" coefficient="-0.08"/>
		<NumericPredictor name="salary" 
				exponent="2" coefficient="9.54E-7"/>
		<NumericPredictor name="salary" 
				exponent="3" coefficient="-2.67E-12"/>
		<CategoricalPredictor name="car location"
				value="carpark" coefficient="93.78"/>
		<CategoricalPredictor name="car location"
				value="street" coefficient="288.75"/>
	</RegressionTable>

</RegressionModel>

ロジスティックス回帰サンプル:

y_clerical = 46.418 -0.132*age +7.867E-02*work -20.525*sex(\'0\') +0*sex(\'1\') -19.054*minority(\'0\') +0*minority(\'1\')

y_professional = 51.169 -0.302*age +.155*work -21.389*sex(\'0\') +0*sex(\'1\') -18.443*minority(\'0\') + 0*minority(\'1\')

y_trainee = 25.478 -.154*age +.266*work -2.639*sex(\'0\') +0*sex(\'1\') -19.821*minority(\'0\') +0*minority(\'1\')

下記のモデルは、いかなる正規化も定義しません。したがって、p_j=y_j。

0*minority(\'1\')のような項が余分であるが、「0」と「1」のような異なるインデックスをもつ同じフィールドを利用することは妥当であることに注意しましょう。 が、RegresstionTableが、同じ名前もつ多数の数的Predictorを持つべきではないし、名前と値とが同じであるペアを持った多数のcategoricalなPredictorを持つべきではない。

対応するXMLモデルは次のとおりです:


<RegressionModel
	functionName="classification"
	modelName="Sample for logistic regression"
	modelType="logisticRegression"
	normalizationMethod="none"
	targetFieldName="jobcat">

	<RegressionTable intercept="46.418"
			targetCategory="clerical">
		<NumericPredictor name="age" exponent="1"
				coefficient="-0.132"/>
		<NumericPredictor name="work" exponent="1"
				coefficient="7.867E-02"/>

		<CategoricalPredictor name="sex" value="0"
				coefficient="-20.525"/>
		<CategoricalPredictor name="sex" value="1" 
				coefficient="0"/>
		<CategoricalPredictor name="minority" value="0"
				coefficient="-19.054"/>
		<CategoricalPredictor name="minority" value="1" 
				coefficient="0"/>
	</RegressionTable>

	<RegressionTable intercept="51.169"
			targetCategory="professional">
		<NumericPredictor name="age" exponent="1"
				coefficient="-0.302"/>
		<NumericPredictor name="work" exponent="1"
				coefficient=".155"/>

		<CategoricalPredictor name="sex" value="0"
				coefficient="-21.389"/>
		<CategoricalPredictor name="sex" value="1" 
				coefficient="0"/>
		<CategoricalPredictor name="minority" value="0"
				coefficient="-18.443"/>
		<CategoricalPredictor name="minority" value="1" 
				coefficient="0"/>
	</RegressionTable>

	<RegressionTable intercept="25.478"
			targetCategory="trainee">
		<NumericPredictor name="age" exponent="1"
				coefficient="-.154"/>
		<NumericPredictor name="work" exponent="1"
				coefficient=".266"/>

		<CategoricalPredictor name="sex" value="0"
				coefficient="-2.639"/>
		<CategoricalPredictor name="sex" value="1" 
				coefficient="0"/>
		<CategoricalPredictor name="minority" value="0"
				coefficient="-19.821"/>
		<CategoricalPredictor name="minority" value="1" 
				coefficient="0"/>
	</RegressionTable>

</RegressionModel>