多元羅吉斯迴歸主要由二元羅吉斯迴歸推廣至多元應用,可用於迴歸多組應變數的狀況。 底下範例是透過 nnet 套件中的 multinom 函式完成,應用神經網路達成。

套件安裝

於 R 中套件 nnet 提供 glm.fit 函式。

if(!("nnet" %in% rownames(installed.packages()))) {
  install.packages("nnet")
}
library("nnet")

資料準備

使用 r 內建的 iris3 資料中 Setosa 與 Versicolor 兩類作為範例。

# 定義樣本數
sample_size = 150

# 產生資料
data <- data.frame(
  cbind(
    rbind(iris3[,,1], iris3[,,2], iris3[,,3]),
    y = rep(c("s","c","v"), rep(50,3))
  )
)
colnames(data) <- c("x1","x2","x3","x4","y")

# 資料型態轉換成小數
data$x1 <- as.numeric(data$x1)
data$x2 <- as.numeric(data$x2)
data$x3 <- as.numeric(data$x3)
data$x4 <- as.numeric(data$x4)

# 訓練與測試資料
train = sample(1:sample_size, sample_size/2)
training_data = data[train,]
testing_data = data[-train,]

模型建立

# multinom prototype
# |- formula: a formula expression as for regression models, of the form response ~ predictors
# |- data: 資料
multinom(formula, data, ...)
glm.fit <- multinom(y~., data=training_data)
## # weights:  18 (10 variable)
## initial  value 82.395922 
## iter  10 value 19.299982
## iter  20 value 0.420306
## iter  30 value 0.016893
## iter  40 value 0.002165
## iter  50 value 0.001324
## iter  60 value 0.000847
## iter  70 value 0.000792
## iter  80 value 0.000631
## iter  90 value 0.000605
## iter 100 value 0.000532
## final  value 0.000532 
## stopped after 100 iterations
summary(glm.fit)
## Call:
## multinom(formula = y ~ ., data = training_data)
## 
## Coefficients:
##   (Intercept)        x1        x2         x3        x4
## s    24.19366 -1.145227  1.241256 -0.4708065 -3.541814
## v   -99.73353 -3.102712 -7.315146  5.3329648  6.962571
## 
## Std. Errors:
##   (Intercept)        x1        x2         x3         x4
## s   3182.1959 582.23015 358.98016 1007.06579 2052.76867
## v    580.0746  21.17603  60.15523   35.15505   50.76491
## 
## Residual Deviance: 0.00106337 
## AIC: 20.00106

預測資料

predict(glm.fit, testing_data, "probs")
##                c            s             v
## 1   9.589249e-11 1.000000e+00  3.271361e-96
## 4   7.173092e-11 1.000000e+00  1.412189e-74
## 5   8.817558e-12 1.000000e+00  4.455080e-99
## 7   3.734363e-11 1.000000e+00  1.104966e-83
## 8   1.690277e-10 1.000000e+00  3.993905e-89
## 9   5.428092e-11 1.000000e+00  5.775554e-68
## 10  6.450798e-11 1.000000e+00  1.090237e-81
## 11  3.982993e-10 1.000000e+00 1.129543e-103
## 13  4.434549e-11 1.000000e+00  1.210873e-79
## 16  8.595367e-09 1.000000e+00 2.140577e-119
## 17  1.547076e-08 1.000000e+00 5.056002e-107
## 18  3.311119e-09 1.000000e+00  1.193232e-91
## 19  3.164928e-07 9.999997e-01 2.452545e-100
## 21  4.230176e-08 1.000000e+00  1.745778e-87
## 22  1.529300e-08 1.000000e+00  5.336675e-92
## 24  1.940073e-04 9.998060e-01  1.564110e-67
## 25  7.024777e-11 1.000000e+00  7.299375e-80
## 27  3.227060e-07 9.999997e-01  1.761717e-77
## 28  4.826353e-10 1.000000e+00  1.531614e-94
## 30  1.043447e-10 1.000000e+00  1.271497e-76
## 32  1.966949e-05 9.999803e-01  2.112912e-83
## 33  8.147153e-15 1.000000e+00 2.124046e-121
## 36  4.928252e-10 1.000000e+00  2.963169e-89
## 38  8.124419e-14 1.000000e+00 8.649366e-103
## 39  9.797336e-12 1.000000e+00  3.350037e-74
## 44  1.111908e-04 9.998888e-01  4.506948e-72
## 46  5.287251e-08 9.999999e-01  1.610984e-70
## 47  5.936227e-12 1.000000e+00 2.557559e-102
## 50  3.652244e-10 1.000000e+00  6.263975e-88
## 54  8.491716e-01 5.367298e-14  1.508284e-01
## 55  1.000000e+00 1.656771e-20  6.823632e-11
## 56  1.000000e+00 3.013268e-13  1.779318e-08
## 57  1.000000e+00 1.467870e-18  9.643668e-19
## 58  9.998537e-01 1.463338e-04  1.547250e-19
## 62  1.000000e+00 1.257398e-15  1.998927e-18
## 67  9.999998e-01 9.509637e-15  1.956596e-07
## 69  2.387936e-11 1.146643e-32  1.000000e+00
## 71  9.240515e-01 2.004136e-20  7.594850e-02
## 72  1.000000e+00 3.250260e-14  1.905039e-25
## 73  9.817206e-10 9.448533e-31  1.000000e+00
## 74  1.000000e+00 4.157455e-14  2.941969e-12
## 75  1.000000e+00 8.820339e-16  1.020317e-25
## 81  1.000000e+00 6.685727e-10  2.470549e-15
## 84  4.440277e-15 1.794309e-35  1.000000e+00
## 86  1.000000e+00 4.043828e-16  1.650566e-22
## 88  9.946108e-01 1.003720e-18  5.389177e-03
## 90  9.999999e-01 7.566608e-13  7.863798e-08
## 94  9.999865e-01 1.345755e-05  1.044853e-17
## 95  1.000000e+00 1.123930e-12  6.705644e-11
## 99  9.999976e-01 2.376975e-06  1.060333e-24
## 100 1.000000e+00 1.981128e-12  9.681546e-18
## 101 4.926055e-40 2.277098e-74  1.000000e+00
## 102 7.603437e-27 7.373231e-51  1.000000e+00
## 104 2.604594e-22 3.232562e-47  1.000000e+00
## 105 3.633044e-33 4.332297e-65  1.000000e+00
## 109 2.923065e-34 1.011493e-63  1.000000e+00
## 110 1.082987e-20 4.324706e-58  1.000000e+00
## 111 1.493529e-04 6.862203e-31  9.998506e-01
## 112 2.156756e-23 8.458960e-51  1.000000e+00
## 114 2.964386e-35 3.500144e-61  1.000000e+00
## 115 8.687745e-39 5.938466e-70  1.000000e+00
## 119 1.325978e-52 2.498841e-95  1.000000e+00
## 120 1.266645e-25 5.707534e-47  1.000000e+00
## 123 7.309492e-35 1.087101e-71  1.000000e+00
## 124 1.881157e-12 5.264677e-37  1.000000e+00
## 128 1.288904e-05 1.476082e-27  9.999871e-01
## 129 3.272540e-33 9.071619e-64  1.000000e+00
## 132 9.997562e-01 2.982314e-32  2.438286e-04
## 136 2.574145e-28 7.319153e-68  1.000000e+00
## 137 1.437281e-24 5.218668e-56  1.000000e+00
## 138 2.711212e-12 2.052175e-36  1.000000e+00
## 140 2.601818e-12 2.496875e-43  1.000000e+00
## 142 2.069647e-11 6.839774e-45  1.000000e+00
## 149 2.924229e-18 2.954763e-47  1.000000e+00
## 150 6.068621e-13 2.677774e-34  1.000000e+00

由上可以看出每筆測試資料與哪一個組別機率最大。