if (!require(keras3))
{
install.packages("keras3")
library(keras3)
install_keras() # r-kerasという仮想環境にKerasがインストールされる。
# install_keras(tensorflow = "gpu") # GPU演算用(NVIDIA GPUとcuDNNが必要)
}
## 要求されたパッケージ keras3 をロード中です
if (!require(plotly)) install.packages("plotly")
## 要求されたパッケージ plotly をロード中です
## 要求されたパッケージ ggplot2 をロード中です
##
## 次のパッケージを付け加えます: 'plotly'
## 以下のオブジェクトは 'package:ggplot2' からマスクされています:
##
## last_plot
## 以下のオブジェクトは 'package:stats' からマスクされています:
##
## filter
## 以下のオブジェクトは 'package:graphics' からマスクされています:
##
## layout
set.seed(5) # 乱数シード
n <- 24*7*2 # 時間数(全14日)
x <- 1:n # 時刻
x2 <- x^2
x3 <- 100*sin(2*pi*x/24)
f <- function(x) 100 + 0.1*x + 0.02*x2 + x3
y <- f(x) + rnorm(n, sd = 5)
d <- data.frame(y, x, x2, x3)
d
## y x x2 x3
## 1 121.797627 1 1 2.588190e+01
## 2 157.201797 2 4 5.000000e+01
## 3 164.913219 3 9 7.071068e+01
## 4 187.673254 4 16 8.660254e+01
## 5 206.149787 5 25 9.659258e+01
## 6 198.305460 6 36 1.000000e+02
## 7 195.911751 7 49 9.659258e+01
## 8 185.505684 8 64 8.660254e+01
## 9 171.801810 9 81 7.071068e+01
## 10 153.690541 10 100 5.000000e+01
## 11 135.540056 11 121 2.588190e+01
## 12 100.071103 12 144 1.224606e-14
## 13 73.396132 13 169 -2.588190e+01
## 14 54.532328 14 196 -5.000000e+01
## 15 29.930522 15 225 -7.071068e+01
## 16 19.422529 16 256 -8.660254e+01
## 17 7.900852 17 289 -9.659258e+01
## 18 -2.639834 18 324 -1.000000e+02
## 19 13.731504 19 361 -9.659258e+01
## 20 22.100683 20 400 -8.660254e+01
## 21 44.711882 21 441 -7.071068e+01
## 22 66.589347 22 484 -5.000000e+01
## 23 94.337905 23 529 -2.588190e+01
## 24 117.453805 24 576 -2.449213e-14
## 25 144.976949 25 625 2.588190e+01
## 26 164.652591 26 676 5.000000e+01
## 27 195.083623 27 729 7.071068e+01
## 28 212.576410 28 784 8.660254e+01
## 29 213.027172 29 841 9.659258e+01
## 30 216.736023 30 900 1.000000e+02
## 31 220.492158 31 961 9.659258e+01
## 32 215.831011 32 1024 8.660254e+01
## 33 206.867981 33 1089 7.071068e+01
## 34 182.605518 34 1156 5.000000e+01
## 35 161.278013 35 1225 2.588190e+01
## 36 134.277869 36 1296 3.673819e-14
## 37 100.150432 37 1369 -2.588190e+01
## 38 72.677636 38 1444 -5.000000e+01
## 39 54.798393 39 1521 -7.071068e+01
## 40 48.684419 40 1600 -8.660254e+01
## 41 48.877719 41 1681 -9.659258e+01
## 42 35.467884 42 1764 -1.000000e+02
## 43 44.314523 43 1849 -9.659258e+01
## 44 65.995799 44 1936 -8.660254e+01
## 45 72.006477 45 2025 -7.071068e+01
## 46 99.731117 46 2116 -5.000000e+01
## 47 118.563053 47 2209 -2.588190e+01
## 48 148.578777 48 2304 -4.898425e-14
## 49 175.180262 49 2401 2.588190e+01
## 50 204.653944 50 2500 5.000000e+01
## 51 235.146921 51 2601 7.071068e+01
## 52 246.821171 52 2704 8.660254e+01
## 53 263.182697 53 2809 9.659258e+01
## 54 260.760826 54 2916 1.000000e+02
## 55 262.031579 55 3025 9.659258e+01
## 56 250.297775 56 3136 8.660254e+01
## 57 245.157202 57 3249 7.071068e+01
## 58 222.516955 58 3364 5.000000e+01
## 59 201.081450 59 3481 2.588190e+01
## 60 179.166376 60 3600 2.388660e-13
## 61 148.955181 61 3721 -2.588190e+01
## 62 137.354152 62 3844 -5.000000e+01
## 63 112.077470 63 3969 -7.071068e+01
## 64 104.199267 64 4096 -8.660254e+01
## 65 90.607128 65 4225 -9.659258e+01
## 66 92.013069 66 4356 -1.000000e+02
## 67 89.375772 67 4489 -9.659258e+01
## 68 111.168948 68 4624 -8.660254e+01
## 69 125.047405 69 4761 -7.071068e+01
## 70 153.601669 70 4900 -5.000000e+01
## 71 181.017609 71 5041 -2.588190e+01
## 72 209.751929 72 5184 -7.347638e-14
## 73 241.497047 73 5329 2.588190e+01
## 74 267.081839 74 5476 5.000000e+01
## 75 292.778335 75 5625 7.071068e+01
## 76 308.945798 76 5776 8.660254e+01
## 77 327.740010 77 5929 9.659258e+01
## 78 330.085451 78 6084 1.000000e+02
## 79 330.258451 79 6241 9.659258e+01
## 80 319.788115 80 6400 8.660254e+01
## 81 312.522759 81 6561 7.071068e+01
## 82 283.968488 82 6724 5.000000e+01
## 83 276.839550 83 6889 2.588190e+01
## 84 249.399586 84 7056 8.572244e-14
## 85 230.496518 85 7225 -2.588190e+01
## 86 202.968452 86 7396 -5.000000e+01
## 87 201.305485 87 7569 -7.071068e+01
## 88 174.710300 88 7744 -8.660254e+01
## 89 170.348555 89 7921 -9.659258e+01
## 90 168.390800 90 8100 -1.000000e+02
## 91 182.757653 91 8281 -9.659258e+01
## 92 186.565404 92 8464 -8.660254e+01
## 93 214.354491 93 8649 -7.071068e+01
## 94 240.623653 94 8836 -5.000000e+01
## 95 269.067824 95 9025 -2.588190e+01
## 96 295.838040 96 9216 -9.796851e-14
## 97 322.028985 97 9409 2.588190e+01
## 98 349.179054 98 9604 5.000000e+01
## 99 375.717900 99 9801 7.071068e+01
## 100 396.306042 100 10000 8.660254e+01
## 101 400.735648 101 10201 9.659258e+01
## 102 423.956556 102 10404 1.000000e+02
## 103 422.451555 103 10609 9.659258e+01
## 104 414.364957 104 10816 8.660254e+01
## 105 401.421450 105 11025 7.071068e+01
## 106 389.789057 106 11236 5.000000e+01
## 107 364.417578 107 11449 2.588190e+01
## 108 334.251737 108 11664 1.102146e-13
## 109 318.870543 109 11881 -2.588190e+01
## 110 309.400758 110 12100 -5.000000e+01
## 111 282.044797 111 12321 -7.071068e+01
## 112 283.589357 112 12544 -8.660254e+01
## 113 283.088127 113 12769 -9.659258e+01
## 114 272.018243 114 12996 -1.000000e+02
## 115 272.653819 115 13225 -9.659258e+01
## 116 298.112115 116 13456 -8.660254e+01
## 117 306.994343 117 13689 -7.071068e+01
## 118 342.598600 118 13924 -5.000000e+01
## 119 369.500243 119 14161 -2.588190e+01
## 120 398.989841 120 14400 -4.777320e-13
## 121 436.656187 121 14641 2.588190e+01
## 122 464.304224 122 14884 5.000000e+01
## 123 479.001235 123 15129 7.071068e+01
## 124 498.306286 124 15376 8.660254e+01
## 125 526.888835 125 15625 9.659258e+01
## 126 531.570418 126 15876 1.000000e+02
## 127 529.872415 127 16129 9.659258e+01
## 128 533.298019 128 16384 8.660254e+01
## 129 509.598626 129 16641 7.071068e+01
## 130 493.792933 130 16900 5.000000e+01
## 131 488.944650 131 17161 2.588190e+01
## 132 451.787358 132 17424 -2.205647e-13
## 133 434.993343 133 17689 -2.588190e+01
## 134 421.999804 134 17956 -5.000000e+01
## 135 410.954187 135 18225 -7.071068e+01
## 136 399.195858 136 18496 -8.660254e+01
## 137 393.927815 137 18769 -9.659258e+01
## 138 389.311545 138 19044 -1.000000e+02
## 139 406.971130 139 19321 -9.659258e+01
## 140 420.893271 140 19600 -8.660254e+01
## 141 437.029347 141 19881 -7.071068e+01
## 142 467.333233 142 20164 -5.000000e+01
## 143 508.299274 143 20449 -2.588190e+01
## 144 533.907092 144 20736 -1.469528e-13
## 145 559.356661 145 21025 2.588190e+01
## 146 588.827983 146 21316 5.000000e+01
## 147 618.090448 147 21609 7.071068e+01
## 148 638.333492 148 21904 8.660254e+01
## 149 648.436508 149 22201 9.659258e+01
## 150 663.037006 150 22500 1.000000e+02
## 151 672.443025 151 22801 9.659258e+01
## 152 667.641395 152 23104 8.660254e+01
## 153 651.603794 153 23409 7.071068e+01
## 154 643.761680 154 23716 5.000000e+01
## 155 618.809228 155 24025 2.588190e+01
## 156 608.511295 156 24336 5.144702e-13
## 157 581.107620 157 24649 -2.588190e+01
## 158 571.061832 158 24964 -5.000000e+01
## 159 548.592730 159 25281 -7.071068e+01
## 160 542.328034 160 25600 -8.660254e+01
## 161 524.820693 161 25921 -9.659258e+01
## 162 552.311273 162 26244 -1.000000e+02
## 163 551.554576 163 26569 -9.659258e+01
## 164 575.853860 164 26896 -8.660254e+01
## 165 587.734734 165 27225 -7.071068e+01
## 166 614.423096 166 27556 -5.000000e+01
## 167 648.397145 167 27889 -2.588190e+01
## 168 680.686530 168 28224 -1.714449e-13
## 169 713.903620 169 28561 2.588190e+01
## 170 742.571608 170 28900 5.000000e+01
## 171 765.429940 171 29241 7.071068e+01
## 172 796.201385 172 29584 8.660254e+01
## 173 806.299649 173 29929 9.659258e+01
## 174 814.157494 174 30276 1.000000e+02
## 175 826.415101 175 30625 9.659258e+01
## 176 825.382715 176 30976 8.660254e+01
## 177 822.852119 177 31329 7.071068e+01
## 178 796.132647 178 31684 5.000000e+01
## 179 789.183337 179 32041 2.588190e+01
## 180 763.025036 180 32400 -1.715804e-13
## 181 758.346329 181 32761 -2.588190e+01
## 182 727.261134 182 33124 -5.000000e+01
## 183 721.119618 183 33489 -7.071068e+01
## 184 713.789373 184 33856 -8.660254e+01
## 185 700.085050 185 34225 -9.659258e+01
## 186 709.132893 186 34596 -1.000000e+02
## 187 720.540424 187 34969 -9.659258e+01
## 188 737.157335 188 35344 -8.660254e+01
## 189 766.312262 189 35721 -7.071068e+01
## 190 785.158308 190 36100 -5.000000e+01
## 191 826.175789 191 36481 -2.588190e+01
## 192 858.311185 192 36864 -1.959370e-13
## 193 887.587190 193 37249 2.588190e+01
## 194 924.372841 194 37636 5.000000e+01
## 195 949.772076 195 38025 7.071068e+01
## 196 981.217887 196 38416 8.660254e+01
## 197 996.553679 197 38809 9.659258e+01
## 198 1004.291009 198 39204 1.000000e+02
## 199 1005.258269 199 39601 9.659258e+01
## 200 1010.234585 200 40000 8.660254e+01
## 201 998.262287 201 40401 7.071068e+01
## 202 984.804496 202 40804 5.000000e+01
## 203 975.307747 203 41209 2.588190e+01
## 204 948.844341 204 41616 5.634544e-13
## 205 936.497587 205 42025 -2.588190e+01
## 206 921.373908 206 42436 -5.000000e+01
## 207 910.025238 207 42849 -7.071068e+01
## 208 904.160313 208 43264 -8.660254e+01
## 209 896.089709 209 43681 -9.659258e+01
## 210 906.701884 210 44100 -1.000000e+02
## 211 921.020083 211 44521 -9.659258e+01
## 212 936.623132 212 44944 -8.660254e+01
## 213 960.608053 213 45369 -7.071068e+01
## 214 984.958723 214 45796 -5.000000e+01
## 215 1024.236671 215 46225 -2.588190e+01
## 216 1052.581059 216 46656 -2.204291e-13
## 217 1088.648685 217 47089 2.588190e+01
## 218 1129.373915 218 47524 5.000000e+01
## 219 1154.266348 219 47961 7.071068e+01
## 220 1179.619748 220 48400 8.660254e+01
## 221 1196.566747 221 48841 9.659258e+01
## 222 1207.713504 222 49284 1.000000e+02
## 223 1223.598568 223 49729 9.659258e+01
## 224 1210.668607 224 50176 8.660254e+01
## 225 1197.819506 225 50625 7.071068e+01
## 226 1193.512140 226 51076 5.000000e+01
## 227 1170.178520 227 51529 2.588190e+01
## 228 1160.102042 228 51984 5.879466e-13
## 229 1141.417584 229 52441 -2.588190e+01
## 230 1113.509705 230 52900 -5.000000e+01
## 231 1117.699405 231 53361 -7.071068e+01
## 232 1117.965900 232 53824 -8.660254e+01
## 233 1109.697213 233 54289 -9.659258e+01
## 234 1115.387724 234 54756 -1.000000e+02
## 235 1128.755161 235 55225 -9.659258e+01
## 236 1160.405568 236 55696 -8.660254e+01
## 237 1183.347025 237 56169 -7.071068e+01
## 238 1202.949871 238 56644 -5.000000e+01
## 239 1238.910230 239 57121 -2.588190e+01
## 240 1281.848391 240 57600 -9.554640e-13
## 241 1313.123840 241 58081 2.588190e+01
## 242 1344.892509 242 58564 5.000000e+01
## 243 1375.690250 243 59049 7.071068e+01
## 244 1409.077235 244 59536 8.660254e+01
## 245 1414.201845 245 60025 9.659258e+01
## 246 1431.501935 246 60516 1.000000e+02
## 247 1443.775286 247 61009 9.659258e+01
## 248 1440.575031 248 61504 8.660254e+01
## 249 1429.836597 249 62001 7.071068e+01
## 250 1427.045095 250 62500 5.000000e+01
## 251 1409.710869 251 63001 2.588190e+01
## 252 1393.945503 252 63504 -9.810403e-14
## 253 1380.418875 253 64009 -2.588190e+01
## 254 1363.752705 254 64516 -5.000000e+01
## 255 1346.070636 255 65025 -7.071068e+01
## 256 1342.006018 256 65536 -8.660254e+01
## 257 1347.156216 257 66049 -9.659258e+01
## 258 1352.819305 258 66564 -1.000000e+02
## 259 1374.819040 259 67081 -9.659258e+01
## 260 1391.245874 260 67600 -8.660254e+01
## 261 1410.531034 261 68121 -7.071068e+01
## 262 1449.548925 262 68644 -5.000000e+01
## 263 1488.709842 263 69169 -2.588190e+01
## 264 1517.336449 264 69696 4.411293e-13
## 265 1557.255929 265 70225 2.588190e+01
## 266 1602.707147 266 70756 5.000000e+01
## 267 1627.165794 267 71289 7.071068e+01
## 268 1647.187829 268 71824 8.660254e+01
## 269 1662.706167 269 72361 9.659258e+01
## 270 1681.343132 270 72900 1.000000e+02
## 271 1690.733879 271 73441 9.659258e+01
## 272 1688.555469 272 73984 8.660254e+01
## 273 1684.934825 273 74529 7.071068e+01
## 274 1686.246620 274 75076 5.000000e+01
## 275 1675.174981 275 75625 2.588190e+01
## 276 1651.137485 276 76176 6.369308e-13
## 277 1629.679219 277 76729 -2.588190e+01
## 278 1624.236470 278 77284 -5.000000e+01
## 279 1615.459368 279 77841 -7.071068e+01
## 280 1608.785068 280 78400 -8.660254e+01
## 281 1611.353189 281 78961 -9.659258e+01
## 282 1614.817829 282 79524 -1.000000e+02
## 283 1628.422587 283 80089 -9.659258e+01
## 284 1659.752058 284 80656 -8.660254e+01
## 285 1680.172685 285 81225 -7.071068e+01
## 286 1710.362003 286 81796 -5.000000e+01
## 287 1757.197882 287 82369 -2.588190e+01
## 288 1787.765070 288 82944 -2.939055e-13
## 289 1834.439389 289 83521 2.588190e+01
## 290 1857.568303 290 84100 5.000000e+01
## 291 1892.337058 291 84681 7.071068e+01
## 292 1924.495505 292 85264 8.660254e+01
## 293 1945.493233 293 85849 9.659258e+01
## 294 1958.522750 294 86436 1.000000e+02
## 295 1966.861510 295 87025 9.659258e+01
## 296 1964.836245 296 87616 8.660254e+01
## 297 1969.422868 297 88209 7.071068e+01
## 298 1960.801534 298 88804 5.000000e+01
## 299 1944.738359 299 89401 2.588190e+01
## 300 1931.364929 300 90000 -4.911978e-14
## 301 1922.288826 301 90601 -2.588190e+01
## 302 1905.223286 302 91204 -5.000000e+01
## 303 1905.581815 303 91809 -7.071068e+01
## 304 1892.811019 304 92416 -8.660254e+01
## 305 1886.514281 305 93025 -9.659258e+01
## 306 1899.334894 306 93636 -1.000000e+02
## 307 1925.209187 307 94249 -9.659258e+01
## 308 1939.650792 308 94864 -8.660254e+01
## 309 1968.996370 309 95481 -7.071068e+01
## 310 2005.802396 310 96100 -5.000000e+01
## 311 2035.334467 311 96721 -2.588190e+01
## 312 2084.273172 312 97344 -1.028940e-12
## 313 2120.399083 313 97969 2.588190e+01
## 314 2147.882954 314 98596 5.000000e+01
## 315 2187.048197 315 99225 7.071068e+01
## 316 2223.348243 316 99856 8.660254e+01
## 317 2244.233730 317 100489 9.659258e+01
## 318 2252.384431 318 101124 1.000000e+02
## 319 2256.963250 319 101761 9.659258e+01
## 320 2268.427131 320 102400 8.660254e+01
## 321 2261.812703 321 103041 7.071068e+01
## 322 2262.753267 322 103684 5.000000e+01
## 323 2246.221383 323 104329 2.588190e+01
## 324 2235.472959 324 104976 6.859151e-13
## 325 2214.429291 325 105625 -2.588190e+01
## 326 2202.549684 326 106276 -5.000000e+01
## 327 2203.741182 327 106929 -7.071068e+01
## 328 2196.721495 328 107584 -8.660254e+01
## 329 2194.286446 329 108241 -9.659258e+01
## 330 2207.225463 330 108900 -1.000000e+02
## 331 2222.099434 331 109561 -9.659258e+01
## 332 2249.980663 332 110224 -8.660254e+01
## 333 2279.697782 333 110889 -7.071068e+01
## 334 2310.429897 334 111556 -5.000000e+01
## 335 2354.479766 335 112225 -2.588190e+01
## 336 2387.173719 336 112896 -3.428898e-13
ii <- 1:(24*11) # 11日分のインデックス
d.tr <- d[ ii, ] # 訓練データを抽出(前11日)
d.te <- d[-ii, ] # 試験データを抽出(後3日)
vline <- list(type = "line",
line = list(color = "blue", dash = "dash"),
x0 = ii[length(ii)], x1 = ii[length(ii)],
y0 = 0, y1 = max(d$y))
plot_ly(type = "scatter", mode = "markers") |>
add_trace(x = d$x, y = d$y, mode = 'markers', name = "観測値") |>
add_trace(x = x, y = f(x), mode = 'lines', name = "真値") |>
layout(title = "青破線の左側:訓練領域,右側:予測領域", shapes = list(vline))
# モデル候補
FML <- vector("list", 4)
FML[[1]] <- formula("y ~ x")
FML[[2]] <- formula("y ~ x + x2")
FML[[3]] <- formula("y ~ x + x2 + x3")
FML[[4]] <- formula("y ~ poly(x, 4)")
# 選択モデル番号
ID.MODEL <- 3
# 回帰モデルから計画行列を作成
x.tr <- model.matrix(FML[[ID.MODEL]], d.tr)
x.te <- model.matrix(FML[[ID.MODEL]], d.te)
nc <- ncol(x.tr) # カラム数
me.tr <- apply(x.tr, 2, mean) # 訓練データの説明変数ごとの平均
sd.tr <- apply(x.tr, 2, sd) # 訓練データの説明変数ごとの標準偏差
x.tr <- scale(x.tr, center = me.tr, scale = sd.tr) # 標準化訓練データ
x.te <- scale(x.te, center = me.tr, scale = sd.tr) # 標準化試験データ
x.tr[, 1] <- 1 # 切片は標準化できない(NaNなる)ので1で置換
x.te[, 1] <- 1 # 切片は標準化できない(NaNなる)ので1で置換
# 深層学習モデル
model <-
keras_model_sequential(input_shape = c(nc)) |> # 入力層
layer_dense(units = nc*2, activation = "relu") |> # 中間層(ReLU)
layer_dense(units = nc*4, activation = "relu") |> # 中間層(ReLU)
layer_dense(units = nc*2, activation = "relu") |> # 中間層(ReLU)
layer_dense(units = 1, activation = "linear") # 出力層(線形)
# モデル概要
summary(model)
## Model: "sequential"
## ┌───────────────────────────────────┬──────────────────────────┬───────────────
## │ Layer (type) │ Output Shape │ Param #
## ├───────────────────────────────────┼──────────────────────────┼───────────────
## │ dense (Dense) │ (None, 8) │ 40
## ├───────────────────────────────────┼──────────────────────────┼───────────────
## │ dense_1 (Dense) │ (None, 16) │ 144
## ├───────────────────────────────────┼──────────────────────────┼───────────────
## │ dense_2 (Dense) │ (None, 8) │ 136
## ├───────────────────────────────────┼──────────────────────────┼───────────────
## │ dense_3 (Dense) │ (None, 1) │ 9
## └───────────────────────────────────┴──────────────────────────┴───────────────
## Total params: 329 (1.29 KB)
## Trainable params: 329 (1.29 KB)
## Non-trainable params: 0 (0.00 B)
# 高速演算のためのコンパイル(PCが素早く理解できる機械語に翻訳)
compile(model,
loss = "mse", # mean-squared-erros(2乗誤差平均)
optimizer = optimizer_adam(learning_rate = 0.1), # 最適化アルゴリズム
metrics = c("mean_absolute_error")) # 評価指標:絶対値誤差平均
# コールバック設定
callbacks <- list(
# 早期停止(検証データでの損失値の改善が20エポック以上なかったら停止)
callback_early_stopping(patience = 20, monitor = "val_loss"),
# 検証データでの損失が改善されない限りモデルを上書きしない設定
# (early_stoppingとセットで使用する)
callback_model_checkpoint(filepath = "bestmodel.keras",
monitor = "val_loss", save_best_only = T),
# 検証データでの損失が改善せず停滞した時(判定:5エポック)
# に局所解を抜け出すため学習率を0.1倍に下げる設定。
callback_reduce_lr_on_plateau(monitor = "val_loss",
factor = 0.1, patience = 5)
)
# フィッティング
fit.dp <- fit(model, # 深層学習モデル
x.tr, # 計画行列
d.tr$y, # 目的変数
verbose = 0, # 1:出力表示(低速),0:出力表示抑制
batch_size = 2^6, # バッチサイズ(要調整)
epochs = 100, # エポック数(早期停止設定時設定不要)
validation_split = 0.2, # 検証用データ割合(訓練には不使用)
callbacks = callbacks) # コールバック設定
plot(fit.dp)

# 予測
yhat <- predict(model, x.te)
## 3/3 - 0s - 128ms/step
# 重回帰モデルとの比較
fit <- lm(FML[[ID.MODEL]], data = d.tr)
yhat.lm <- predict(fit, newdata = d.te)
# 予測結果のグラフ
plot_ly(type = "scatter", mode = "markers") |>
add_trace(x = d$x, y = d$y, mode = "markers", name = "観測値") |>
add_trace(x = d.te$x, y = yhat, mode = "markers", name = "予測値(DNN)") |>
add_trace(x = d.te$x, y = yhat.lm, mode = "lines", name = "予測値(重回帰)") |>
layout(shapes = list(vline))
# 精度評価関数
get.accuracy <- function(yhat, y)
{
data.frame(MBE = mean(yhat - y),
MAE = mean(abs(yhat - y)),
MAPE = mean(abs((yhat - y) / y)) * 100,
RMSE = sqrt(mean((yhat - y)^2))
)
}
get.accuracy(yhat = yhat, y = d.te$y)
## MBE MAE MAPE RMSE
## 1 -316.2873 316.2873 16.0048 328.0075
# Kerasパッケージでの精度指標
evaluate(model, x.te, d.te$y)
## 3/3 - 0s - 18ms/step - loss: 107588.8906 - mean_absolute_error: 316.2873
## $loss
## [1] 107588.9
##
## $mean_absolute_error
## [1] 316.2873
get.accuracy(yhat = yhat.lm, y = d.te$y)
## MBE MAE MAPE RMSE
## 1 -1.683005 3.942815 0.2068178 4.884525