7.11 一般化線形モデル
ore.odmGLM関数は一般化線形モデル(GLM)を構築しますが、これは線形モデル(線形回帰)のクラスを含み、このクラスを拡張したものです。
               
一般化線形モデルは、実際には違反されることが多い線形モデルの制限を緩和したものです。たとえば、2値(yes/noまたは0/1)応答は、クラス間で同じ分散を持ちません。
GLMはパラメトリックなモデリング手法です。パラメトリック・モデルでは、データの分散を仮定します。仮定が満たされる場合、パラメトリック・モデルはノンパラメトリック・モデルよりも効率的になります。
このタイプのモデルの作成では、どの程度仮定が満たされるかを見極めることが課題となります。このため、良質なパラメトリック・モデルを作成するには質の診断が重要です。
古典的な、線形回帰における重み付き最小二乗推定およびロジスティック回帰における反復再重み付き最小二乗推定(いずれもコレスキー分解およびマトリクス反転を使用する解決)に加えて、GLMでは、マトリクス反転が不要で高次元データに最適な共役勾配法に基づく最適化アルゴリズムを提供します。アルゴリズムの選択は内部的に処理され、ユーザーに対して透過的です。
GLMを使用して、次のような分類モデルまたは回帰モデルを構築できます。
- 
                        分類: 2項ロジスティック回帰は、GLM分類アルゴリズムです。このアルゴリズムでは、ロジット・リンク関数および2項分散関数を使用します。 
- 
                        回帰: 線形回帰は、GLM回帰アルゴリズムです。このアルゴリズムでは、ターゲット値の範囲に対する一定分散およびターゲット変換を想定していません。 
次の表に、GLMで使用されるリンク関数を示します:
| GLM関数 | デフォルトのリンク関数 | その他サポートされているリンク関数 | 
|---|---|---|
| 線形回帰(ガウス) | identity | なし | 
| ロジスティック回帰(2項) | logit | probit、cloglog、cauchitおよび2項分散 | 
リンク関数の詳細は、Oracle Machine Learning for SQLコンセプト・ガイドを参照してください
ore.odmGLM関数では、2つの異なるタイプのモデルを構築できます。一部、分類モデルにのみ適用される引数、回帰モデルにのみ適用される引数があります。
                  
ore.odmGLM関数の引数の詳細は、help(ore.odmGLM)を呼び出してください。
                  
次の例では、GLMを使用していくつかのモデルを構築します。入力ore.frameオブジェクトは、データベースにプッシュされるRデータセットです。 
                  
一般化線形モデルの設定
次の表に、一般化線形モデルに適用される設定を示します。
表7-10 一般化線形モデルの設定
| 設定名 | 設定値 | 説明 | 
|---|---|---|
| 
 | 
 | 信頼区間の信頼水準。 デフォルトの信頼水準は | 
| 
 | 
 
 | 特徴生成が二次式または三次式のどちらであるかを示します。 特徴の生成を有効にすると、アルゴリズムでは、最適な特徴生成方式がデータに基づいて自動的に選択されます。 | 
| 
 | 
 
 | GLMに対して特徴生成を有効にするかどうかの指定。デフォルトでは、特徴生成は有効化されていません。 ノート:特徴生成は、特徴選択が有効な場合にのみ有効です。 | 
| 
 | 
 
 
 
 | モデルに特徴を追加する際の、特徴選択のペナルティ基準。 特徴選択を有効にすると、アルゴリズムでは、ペナルティ基準がデータに基づいて自動的に選択されます。 | 
| 
 | 
 
 | GLMに対して特徴選択を有効にするかどうかの指定。 デフォルトでは、特徴選択は無効です。 | 
| 
 | 
 | 特徴選択を有効にすると、この設定では、最終モデルで選択可能な特徴の最大数が指定されます。 デフォルトでは、十分なメモリーを確保するために、アルゴリズムによって特徴の数が制限されます。 | 
| GLMS_PRUNE_MODEL | 
 
 | 最終モデルでの特徴のプルーニングを有効また無効にします。プルーニングは、線形回帰の場合はt検定統計に、ロジスティック回帰の場合はWald検定統計に基づきます。すべての特徴が全データに対して統計的な意味付けを持つまで、これらの特徴はループ処理でプルーニングされます。 特徴選択を有効にすると、アルゴリズムでは、プルーニングがデータに基づいて自動的に実行されます。 | 
| 
 | target_value | バイナリ・ロジスティック回帰モデルで参照クラスとして使用されるターゲット値。非参照クラスに対しては確率が生成されます。 デフォルトでは、参照クラスの場合、最も普及率の高い値(ほとんどのケース)がアルゴリズムによって選択されます。 | 
| GLMS_RIDGE_REGRESSION | 
 
 | リッジ回帰を有効または無効にします。リッジは、回帰と分類の両方のマイニング機能に適用されます。 リッジを有効にすると、 ノート:リッジは、特徴選択が指定されていない場合または明示的に無効にされている場合にのみ有効です。リッジ回帰と特徴選択を両方とも明示的に有効にすると、例外が発生します。 | 
| 
 | 
 | リッジ・パラメータ値。この設定は、アルゴリズムでリッジ回帰の使用が構成されている場合にのみ使用されます。 リッジ回帰がアルゴリズムによって内部的に有効になっている場合、リッジ・パラメータはアルゴリズムによって決定されます。 | 
| 
 | 
 
 | 行診断を有効または無効にします。 | 
| 
 | 範囲は( | GLMアルゴリズムの収束許容値の設定 デフォルト値は、システムによって決定されます。 | 
| 
 | 
 | GLMアルゴリズムの最大反復数。デフォルト値は、システムによって決定されます。 | 
| 
 | 0またはX >= 0 | SGDソルバーで使用されるバッチ内の行数。このパラメータの値によって、SGDソルバーのバッチのサイズが設定されます。0を入力すると、データ駆動のバッチ・サイズの推定値がトリガーされます。 デフォルトは | 
| 
 | 
 
 
 
 | この設定により、ユーザーがGLMソルバーを選択できます。 | 
| 
 | 
 
 | この設定により、ユーザーはスパース・ソルバーを使用できます(使用可能な場合)。デフォルト値は | 
| GLMS_LINK_FUNCTIONノート:Oracle Database 23aiでのみ使用できます。 | 
 
 
 
 
 | この設定を使用すると、ユーザーは、GLMモデルを作成するためのリンク・ファンクションを指定できます。リンク・ファンクションはマイニング機能に固有です。分類については、次のものが適用可能です。 
 回帰については、次のものが適用可能です。 
 | 
例7-10 線形回帰モデルの構築
この例では、longleyデータセットを使用して線形回帰モデルを構築します。
                  
longley_of <- ore.push(longley) longfit1 <- ore.odmGLM(Employed ~ ., data = longley_of) summary(longfit1)
この例のリスト
R> longley_of <- ore.push(longley)
R> longfit1 <- ore.odmGLM(Employed ~ ., data = longley_of)
R> summary(longfit1)
 
Call:
ore.odmGLM(formula = Employed ~ ., data = longely_of)
 
Residuals:
     Min       1Q   Median       3Q      Max 
-0.41011 -0.15767 -0.02816  0.10155  0.45539 
 
Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -3.482e+03  8.904e+02  -3.911 0.003560 ** 
GNP.deflator  1.506e-02  8.492e-02   0.177 0.863141    
GNP          -3.582e-02  3.349e-02  -1.070 0.312681    
Unemployed   -2.020e-02  4.884e-03  -4.136 0.002535 ** 
Armed.Forces -1.033e-02  2.143e-03  -4.822 0.000944 ***
Population   -5.110e-02  2.261e-01  -0.226 0.826212    
Year          1.829e+00  4.555e-01   4.016 0.003037 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
 
Residual standard error: 0.3049 on 9 degrees of freedom
Multiple R-squared:  0.9955,    Adjusted R-squared:  0.9925 
F-statistic: 330.3 on 6 and 9 DF,  p-value: 4.984e-10
例7-11 ore.odmGLMモデルの係数に対するリッジ推定の使用方法
この例では、前の例のlongley_ofのore.frameを使用します。この例では、ore.odmGLM関数を呼び出し、係数のリッジ推定を使用して指定します。
                  
longfit2 <- ore.odmGLM(Employed ~ ., data = longley_of, ridge = TRUE,
                       ridge.vif = TRUE)
summary(longfit2)この例のリスト
R> longfit2 <- ore.odmGLM(Employed ~ ., data = longley_of, ridge = TRUE,
+                         ridge.vif = TRUE)
R> summary(longfit2)
 
Call:
ore.odmGLM(formula = Employed ~ ., data = longley_of, ridge = TRUE, 
    ridge.vif = TRUE)
 
Residuals:
    Min      1Q  Median      3Q     Max 
-0.4100 -0.1579 -0.0271  0.1017  0.4575 
 
Coefficients:
               Estimate   VIF
(Intercept)  -3.466e+03 0.000
GNP.deflator  1.479e-02 0.077
GNP          -3.535e-02 0.012
Unemployed   -2.013e-02 0.000
Armed.Forces -1.031e-02 0.000
Population   -5.262e-02 0.548
Year          1.821e+00 2.212
 
Residual standard error: 0.3049 on 9 degrees of freedom
Multiple R-squared:  0.9955,    Adjusted R-squared:  0.9925 
F-statistic: 330.2 on 6 and 9 DF,  p-value: 4.986e-10
例7-12 ロジスティック回帰GLMの構築
この例では、ロジスティック回帰(分類)モデルを構築します。ここでは、infertデータセットを使用します。この例では、ore.odmGLM関数を呼び出し、logisticをtype引数(二項分布GLMを構築します)として指定します。
                  
infert_of <- ore.push(infert)
infit1 <- ore.odmGLM(case ~ age+parity+education+spontaneous+induced,
                     data = infert_of, type = "logistic")
infit1この例のリスト
R> infert_of <- ore.push(infert)
R> infit1 <- ore.odmGLM(case ~ age+parity+education+spontaneous+induced,
+                       data = infert_of, type = "logistic")
R> infit1
 
Response:
case == "1"
 
Call:  ore.odmGLM(formula = case ~ age + parity + education + spontaneous + 
    induced, data = infert_of, type = "logistic")
 
Coefficients:
     (Intercept)               age            parity   education0-5yrs  education12+ yrs       spontaneous           induced  
        -2.19348           0.03958          -0.82828           1.04424          -0.35896           2.04590           1.28876  
 
Degrees of Freedom: 247 Total (i.e. Null);  241 Residual
Null Deviance:      316.2 
Residual Deviance: 257.8        AIC: 271.8
例7-13 ロジスティック回帰GLMの構築での参照値の指定
この例では、ロジスティック回帰(分類)モデルを構築し、参照値を指定します。この例では、例7-12のinfert_ofのore.frameを使用します。
                  
infit2 <- ore.odmGLM(case ~ age+parity+education+spontaneous+induced,
                     data = infert_of, type = "logistic", reference = 1)
infit2この例のリスト
infit2 <- ore.odmGLM(case ~ age+parity+education+spontaneous+induced,
                     data = infert_of, type = "logistic", reference = 1)
infit2
Response:
case == "0"
 
Call:  ore.odmGLM(formula = case ~ age + parity + education + spontaneous + 
    induced, data = infert_of, type = "logistic", reference = 1)
 
Coefficients:
     (Intercept)               age            parity   education0-5yrs  education12+ yrs       spontaneous           induced  
         2.19348          -0.03958           0.82828          -1.04424           0.35896          -2.04590          -1.28876  
 
Degrees of Freedom: 247 Total (i.e. Null);  241 Residual
Null Deviance:      316.2 
Residual Deviance: 257.8        AIC: 271.8