多元羅吉斯迴歸主要由二元羅吉斯迴歸推廣至多元應用,可用於迴歸多組應變數的狀況。 底下範例是透過 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
由上可以看出每筆測試資料與哪一個組別機率最大。