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 - 24ms/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 -237.0632 237.0632 11.94877 246.3099
# Kerasパッケージでの精度指標
evaluate(model, x.te, d.te$y)
## 3/3 - 0s - 11ms/step - loss: 60668.5547 - mean_absolute_error: 237.0632
## $loss
## [1] 60668.55
##
## $mean_absolute_error
## [1] 237.0632
get.accuracy(yhat = yhat.lm, y = d.te$y)
## MBE MAE MAPE RMSE
## 1 -1.683005 3.942815 0.2068178 4.884525
d0 <- read.csv('https://stats.dip.jp/01_ds/data/real_estate_price.csv')
n <- nrow(d0)
# 要約統計量
summary(d0)
## id yr yrs_old m_sta
## Min. : 1.0 Min. :2012 Min. : 0.000 Min. : 23.38
## 1st Qu.:104.2 1st Qu.:2012 1st Qu.: 9.025 1st Qu.: 289.32
## Median :207.5 Median :2013 Median :16.100 Median : 492.23
## Mean :207.5 Mean :2013 Mean :17.713 Mean :1083.89
## 3rd Qu.:310.8 3rd Qu.:2013 3rd Qu.:28.150 3rd Qu.:1454.28
## Max. :414.0 Max. :2013 Max. :43.800 Max. :6488.02
## nstores lat lon price
## Min. : 0.000 Min. :24.93 Min. :121.5 Min. : 7.60
## 1st Qu.: 1.000 1st Qu.:24.96 1st Qu.:121.5 1st Qu.: 27.70
## Median : 4.000 Median :24.97 Median :121.5 Median : 38.45
## Mean : 4.094 Mean :24.97 Mean :121.5 Mean : 37.98
## 3rd Qu.: 6.000 3rd Qu.:24.98 3rd Qu.:121.5 3rd Qu.: 46.60
## Max. :10.000 Max. :25.01 Max. :121.6 Max. :117.50
set.seed(7)
ii <- sample(1:n, size = floor(0.8*n))
d0.tr <- d0[ ii, -1] # 訓練データ(idを除く)
d0.te <- d0[-ii, -1] # テストデータ(idを除く)
d0.tr
## yr yrs_old m_sta nstores lat lon price
## 298 2012 34.9 567.03490 4 24.97003 121.5458 28.5
## 103 2013 1.1 193.58450 6 24.96571 121.5409 54.4
## 194 2013 9.7 421.47900 5 24.98246 121.5448 49.3
## 271 2013 10.8 252.58220 1 24.97460 121.5305 117.5
## 218 2012 28.0 372.62420 6 24.97838 121.5412 40.8
## 118 2013 13.6 4197.34900 0 24.93885 121.5038 13.0
## 392 2013 6.2 1939.74900 1 24.95155 121.5539 31.3
## 323 2013 12.9 187.48230 1 24.97388 121.5298 33.1
## 168 2013 28.2 330.08540 8 24.97408 121.5401 43.4
## 22 2013 10.5 279.17260 7 24.97528 121.5454 51.6
## 408 2013 5.2 2408.99300 0 24.95505 121.5596 22.3
## 59 2013 30.3 4510.35900 1 24.94925 121.4954 22.6
## 90 2013 23.0 3947.94500 0 24.94783 121.5024 25.3
## 268 2012 34.7 482.75810 5 24.97433 121.5386 41.1
## 296 2013 18.2 2179.59000 3 24.96299 121.5125 21.8
## 287 2012 5.9 90.45606 9 24.97433 121.5431 56.3
## 207 2013 22.2 379.55750 10 24.98343 121.5376 44.0
## 134 2012 18.0 373.39370 8 24.98660 121.5408 39.5
## 150 2012 34.9 179.45380 8 24.97349 121.5425 39.7
## 187 2013 20.9 2185.12800 3 24.96322 121.5124 25.7
## 21 2013 4.5 2275.87700 3 24.96314 121.5115 29.3
## 388 2013 16.2 2103.55500 3 24.96042 121.5146 25.6
## 358 2013 0.0 338.96790 9 24.96853 121.5441 44.9
## 282 2013 4.7 387.77210 9 24.98118 121.5379 44.8
## 215 2013 18.1 1783.18000 3 24.96731 121.5149 20.9
## 386 2013 18.3 82.88643 10 24.98300 121.5403 46.6
## 100 2013 6.4 90.45606 9 24.97433 121.5431 62.2
## 166 2012 13.7 1236.56400 1 24.97694 121.5539 30.6
## 248 2013 21.7 1055.06700 0 24.96211 121.5493 23.1
## 171 2013 24.0 4527.68700 0 24.94741 121.4963 14.4
## 124 2013 0.0 185.42960 0 24.97110 121.5317 45.5
## 379 2013 37.3 587.88770 8 24.97077 121.5463 37.4
## 292 2012 3.4 56.47425 7 24.95744 121.5371 54.4
## 249 2013 19.0 1009.23500 0 24.96357 121.5495 22.3
## 3 2013 13.3 561.98450 5 24.98746 121.5439 47.3
## 365 2013 35.3 614.13940 7 24.97913 121.5367 33.1
## 181 2012 26.9 4449.27000 0 24.94898 121.4962 15.5
## 88 2013 16.9 4066.58700 0 24.94297 121.5034 18.3
## 41 2013 13.6 4082.01500 0 24.94155 121.5038 15.9
## 378 2013 3.9 49.66105 8 24.95836 121.5376 56.8
## 278 2013 21.2 2185.12800 3 24.96322 121.5124 27.7
## 264 2013 3.9 2147.37600 3 24.96299 121.5128 31.7
## 376 2013 21.7 1157.98800 0 24.96165 121.5501 23.8
## 31 2013 25.9 4519.69000 0 24.94826 121.4959 22.1
## 290 2013 13.9 289.32480 5 24.98203 121.5435 44.5
## 288 2013 19.2 461.10160 5 24.95425 121.5399 32.9
## 328 2013 3.5 757.33770 3 24.97538 121.5497 36.7
## 186 2012 31.4 1447.28600 3 24.97285 121.5173 21.5
## 344 2013 33.5 563.28540 8 24.98223 121.5360 46.6
## 74 2013 13.8 4082.01500 0 24.94155 121.5038 20.0
## 174 2013 41.3 401.88070 4 24.98326 121.5446 35.1
## 315 2013 3.7 577.96150 6 24.97201 121.5472 41.6
## 240 2013 18.1 837.72330 0 24.96334 121.5477 29.7
## 114 2013 14.8 393.26060 6 24.96172 121.5381 7.6
## 343 2012 5.7 90.45606 9 24.97433 121.5431 53.5
## 32 2012 29.6 769.40340 7 24.98281 121.5341 25.0
## 195 2013 15.2 3771.89500 0 24.93363 121.5116 29.3
## 233 2012 27.1 4412.76500 1 24.95032 121.4959 17.4
## 318 2012 15.6 752.76690 2 24.97795 121.5345 37.5
## 55 2013 16.1 289.32480 5 24.98203 121.5435 51.7
## 72 2013 35.5 640.73910 3 24.97563 121.5371 40.8
## 284 2013 33.5 1978.67100 2 24.98674 121.5184 23.5
## 272 2012 17.7 451.64190 8 24.96945 121.5449 26.5
## 178 2013 33.0 181.07660 9 24.97697 121.5426 42.0
## 18 2012 17.7 350.85150 1 24.97544 121.5312 37.4
## 40 2013 16.2 289.32480 5 24.98203 121.5435 46.2
## 387 2012 0.0 185.42960 0 24.97110 121.5317 55.3
## 266 2012 15.7 815.93140 4 24.97886 121.5346 38.1
## 109 2013 31.4 592.50060 2 24.97260 121.5356 34.1
## 64 2013 2.6 533.47620 4 24.97445 121.5477 55.0
## 222 2013 9.0 1402.01600 0 24.98569 121.5276 38.5
## 389 2013 10.4 2251.93800 4 24.95957 121.5135 27.3
## 121 2013 13.3 492.23130 5 24.96515 121.5374 31.3
## 312 2013 21.3 537.79710 4 24.97425 121.5381 42.2
## 374 2013 0.0 274.01440 1 24.97480 121.5306 52.2
## 172 2013 3.6 383.86240 5 24.98085 121.5439 58.8
## 6 2012 7.1 2175.03000 3 24.96305 121.5125 32.1
## 196 2013 15.2 461.10160 5 24.95425 121.5399 34.6
## 362 2013 41.4 281.20500 8 24.97345 121.5409 63.3
## 43 2013 36.1 519.46170 5 24.96305 121.5376 34.7
## 333 2013 39.8 617.71340 2 24.97577 121.5348 39.6
## 247 2013 16.4 389.82190 6 24.96412 121.5427 40.6
## 384 2012 29.1 506.11440 4 24.97845 121.5389 40.3
## 274 2013 13.2 170.12890 1 24.97371 121.5298 29.3
## 225 2013 34.5 324.94190 6 24.97814 121.5417 46.0
## 17 2013 0.0 292.99780 6 24.97744 121.5446 70.1
## 289 2013 16.6 323.69120 6 24.97841 121.5428 51.0
## 300 2013 33.2 121.72620 10 24.98178 121.5406 46.1
## 369 2013 18.2 350.85150 1 24.97544 121.5312 43.1
## 48 2013 35.9 640.73910 3 24.97563 121.5371 61.5
## 162 2013 19.2 616.40040 3 24.97723 121.5377 39.6
## 357 2012 10.3 211.44730 1 24.97417 121.5300 45.3
## 58 2012 3.5 56.47425 7 24.95744 121.5371 53.5
## 113 2013 9.9 2102.42700 3 24.96044 121.5146 23.1
## 373 2013 33.9 157.60520 7 24.96628 121.5420 41.5
## 9 2013 31.7 5512.03800 1 24.95095 121.4846 18.8
## 335 2012 30.0 1013.34100 5 24.99006 121.5346 22.8
## 377 2013 14.7 1717.19300 2 24.96447 121.5165 30.5
## 28 2013 10.4 276.44900 5 24.95593 121.5391 33.6
## 54 2013 13.3 492.23130 5 24.96515 121.5374 38.9
## 216 2013 19.2 383.71290 8 24.97200 121.5448 48.1
## 350 2012 7.8 104.81010 5 24.96674 121.5407 47.0
## 227 2013 16.5 4082.01500 0 24.94155 121.5038 12.8
## 313 2013 35.4 318.52920 9 24.97071 121.5407 78.0
## 159 2013 11.6 390.56840 5 24.97937 121.5425 39.4
## 242 2013 13.7 250.63100 7 24.96606 121.5430 41.4
## 116 2013 20.6 737.91610 2 24.98092 121.5474 46.4
## 8 2013 20.3 287.60250 6 24.98042 121.5423 46.7
## 81 2013 11.8 533.47620 4 24.97445 121.5477 40.3
## 149 2013 16.4 3780.59000 0 24.93293 121.5120 45.1
## 112 2013 33.3 196.61720 7 24.97701 121.5422 39.4
## 252 2012 31.7 1159.45400 0 24.94960 121.5302 13.8
## 79 2012 38.2 552.43710 2 24.97598 121.5338 29.8
## 214 2013 6.2 90.45606 9 24.97433 121.5431 58.0
## 299 2013 16.7 4082.01500 0 24.94155 121.5038 16.7
## 200 2013 18.2 451.64190 8 24.96945 121.5449 31.6
## 75 2012 6.8 379.55750 10 24.98343 121.5376 54.4
## 173 2013 6.6 90.45606 9 24.97433 121.5431 58.1
## 223 2013 30.6 431.11140 10 24.98123 121.5374 48.5
## 256 2013 31.5 5512.03800 1 24.95095 121.4846 17.4
## 180 2013 14.0 438.85130 1 24.97493 121.5273 42.6
## 129 2013 41.3 124.99120 6 24.96674 121.5404 60.7
## 246 2013 7.5 639.61980 5 24.97258 121.5481 40.8
## 393 2013 42.7 443.80200 6 24.97927 121.5387 35.3
## 138 2013 13.6 319.07080 6 24.96495 121.5428 47.4
## 141 2013 16.2 289.32480 5 24.98203 121.5435 51.4
## 220 2012 29.3 529.77710 8 24.98102 121.5366 40.2
## 122 2013 13.6 492.23130 5 24.96515 121.5374 48.0
## 211 2013 5.2 390.56840 5 24.97937 121.5425 52.2
## 68 2013 8.5 104.81010 5 24.96674 121.5407 56.8
## 348 2013 17.4 6488.02100 1 24.95719 121.4735 11.2
## 339 2012 31.5 258.18600 9 24.96867 121.5433 36.3
## 142 2013 5.1 1559.82700 3 24.97213 121.5163 28.9
## 367 2012 14.2 1801.54400 1 24.95153 121.5525 24.8
## 281 2013 2.3 184.33020 6 24.96581 121.5409 45.4
## 193 2013 43.8 57.58945 7 24.96750 121.5407 42.7
## 356 2013 3.8 383.86240 5 24.98085 121.5439 60.7
## 347 2013 13.2 1712.63200 2 24.96412 121.5167 30.8
## 314 2013 8.3 104.81010 5 24.96674 121.5407 42.8
## 96 2012 8.0 104.81010 5 24.96674 121.5407 51.8
## 398 2013 13.1 1164.83800 4 24.99156 121.5341 32.2
## 165 2012 0.0 185.42960 0 24.97110 121.5317 55.2
## 351 2013 13.2 492.23130 5 24.96515 121.5374 42.3
## 60 2013 13.3 336.05320 5 24.95776 121.5344 42.4
## 66 2013 40.1 123.74290 8 24.97635 121.5433 44.3
## 267 2013 17.8 1783.18000 3 24.96731 121.5149 23.7
## 2 2012 19.5 306.59470 9 24.98034 121.5395 42.2
## 1 2012 32.0 84.87882 10 24.98298 121.5402 37.9
## 198 2013 34.4 126.72860 8 24.96881 121.5409 48.2
## 14 2012 20.4 2469.64500 4 24.96108 121.5105 23.8
## 302 2012 38.0 461.78480 0 24.97229 121.5345 35.7
## 258 2013 17.3 444.13340 1 24.97501 121.5273 43.9
## 303 2013 16.5 2288.01100 3 24.95885 121.5136 23.2
## 320 2013 34.6 272.67830 5 24.95562 121.5387 26.9
## 156 2013 13.8 4082.01500 0 24.94155 121.5038 15.6
## 317 2013 13.3 250.63100 7 24.96606 121.5430 42.0
## 95 2012 40.9 167.59890 5 24.96630 121.5403 41.0
## 57 2013 33.6 371.24950 8 24.97254 121.5406 41.9
## 260 2013 17.7 837.72330 0 24.96334 121.5477 28.8
## 94 2012 31.9 1146.32900 0 24.94920 121.5308 16.1
## 104 2012 0.0 208.39050 6 24.95618 121.5384 45.7
## 297 2012 12.5 1144.43600 4 24.99176 121.5346 34.1
## 53 2013 32.1 1438.57900 3 24.97419 121.5175 27.0
## 311 2013 16.4 1643.49900 2 24.95394 121.5517 24.7
## 144 2013 13.6 492.23130 5 24.96515 121.5374 40.1
## 230 2013 31.0 1156.41200 0 24.94890 121.5310 19.0
## 327 2013 4.1 56.47425 7 24.95744 121.5371 62.1
## 160 2012 15.5 815.93140 4 24.97886 121.5346 37.4
## 175 2013 4.3 432.03850 7 24.98050 121.5378 45.2
## 244 2013 32.8 204.17050 8 24.98236 121.5392 48.2
## 139 2013 10.0 942.46640 0 24.97843 121.5241 43.5
## 201 2013 17.4 995.75540 0 24.96305 121.5491 25.5
## 243 2012 2.0 2077.39000 3 24.96357 121.5133 33.4
## 39 2012 3.1 577.96150 6 24.97201 121.5472 47.7
## 45 2013 2.7 533.47620 4 24.97445 121.5477 53.9
## 337 2012 5.1 1867.23300 2 24.98407 121.5175 35.6
## 342 2013 13.0 750.07040 2 24.97371 121.5495 37.0
## 354 2013 4.1 2147.37600 3 24.96299 121.5128 31.3
## 380 2013 0.0 292.99780 6 24.97744 121.5446 69.7
## 56 2012 31.7 1160.63200 0 24.94968 121.5301 13.7
## 305 2013 20.0 1626.08300 3 24.96622 121.5167 29.4
## 257 2012 14.6 339.22890 1 24.97519 121.5315 26.5
## 265 2013 32.6 493.65700 7 24.96968 121.5452 40.6
## 410 2013 13.7 4082.01500 0 24.94155 121.5038 15.4
## 189 2012 34.8 190.03920 8 24.97707 121.5431 44.3
## 108 2013 12.2 1360.13900 1 24.95204 121.5484 26.6
## 46 2013 36.6 488.81930 8 24.97015 121.5449 38.3
## 326 2013 36.6 488.81930 8 24.97015 121.5449 38.1
## 197 2013 22.8 707.90670 2 24.98100 121.5471 36.6
## 205 2013 18.0 1414.83700 1 24.95182 121.5489 26.6
## 236 2012 12.9 250.63100 7 24.96606 121.5430 39.3
## 147 2012 0.0 185.42960 0 24.97110 121.5317 52.2
## 107 2013 17.2 189.51810 8 24.97707 121.5431 47.1
## 261 2013 17.0 1485.09700 4 24.97073 121.5170 30.7
## 177 2012 13.9 4573.77900 0 24.94867 121.4951 19.2
## 217 2013 37.8 590.92920 1 24.97153 121.5356 39.7
## 234 2013 39.7 333.36790 9 24.98016 121.5393 32.4
## 191 2013 35.3 616.57350 8 24.97945 121.5364 42.3
## 87 2012 1.8 1455.79800 1 24.95120 121.5490 27.0
## 30 2013 7.1 451.24380 5 24.97563 121.5469 57.1
## 157 2013 30.7 1264.73000 0 24.94883 121.5295 18.3
## 83 2013 13.2 150.93470 7 24.96725 121.5425 48.1
## 346 2012 0.0 185.42960 0 24.97110 121.5317 37.9
## 403 2012 12.7 187.48230 1 24.97388 121.5298 28.5
## 371 2012 15.9 289.32480 5 24.98203 121.5435 42.1
## 210 2012 34.8 175.62940 8 24.97347 121.5427 40.9
## 385 2012 16.1 4066.58700 0 24.94297 121.5034 12.9
## 102 2012 12.7 170.12890 1 24.97371 121.5298 32.9
## 91 2012 0.0 274.01440 1 24.97480 121.5306 45.4
## 123 2013 31.5 414.94760 4 24.98199 121.5446 32.5
## 413 2013 8.1 104.81010 5 24.96674 121.5407 52.5
## 16 2013 35.7 579.20830 2 24.98240 121.5462 50.5
## 70 2012 12.5 561.98450 5 24.98746 121.5439 42.0
## 401 2013 26.8 482.75810 5 24.97433 121.5386 35.5
## 391 2013 32.8 377.83020 9 24.97151 121.5435 38.6
## 61 2013 11.0 1931.20700 2 24.96365 121.5147 21.3
## 167 2013 0.0 292.99780 6 24.97744 121.5446 73.6
## 93 2012 20.6 2469.64500 4 24.96108 121.5105 21.8
## 154 2013 6.5 376.17090 6 24.95418 121.5371 40.9
## 226 2013 1.1 193.58450 6 24.96571 121.5409 49.0
## 155 2013 16.9 4066.58700 0 24.94297 121.5034 20.7
## 23 2012 14.7 1360.13900 1 24.95204 121.5484 24.6
## 352 2012 4.0 2180.24500 3 24.96324 121.5124 28.6
## 183 2013 13.5 2147.37600 3 24.96299 121.5128 23.6
## 106 2012 0.0 292.99780 6 24.97744 121.5446 71.0
## 85 2013 15.1 383.28050 7 24.96735 121.5446 43.7
## 5 2012 5.0 390.56840 5 24.97937 121.5425 43.1
## 291 2013 37.7 490.34460 0 24.97217 121.5347 37.0
## 390 2013 40.9 122.36190 8 24.96756 121.5423 67.7
## 360 2013 5.6 2408.99300 0 24.95505 121.5596 24.7
## 349 2012 4.6 259.66070 6 24.97585 121.5452 53.7
## 52 2013 31.3 1758.40600 1 24.95402 121.5528 20.7
## 27 2012 3.1 383.86240 5 24.98085 121.5439 56.2
## 120 2013 16.6 289.32480 5 24.98203 121.5435 59.6
## 345 2013 34.6 3085.17000 0 24.99800 121.5155 41.2
## 119 2013 25.3 1583.72200 3 24.96622 121.5171 30.6
## 179 2013 13.1 1144.43600 4 24.99176 121.5346 36.7
## 26 2013 29.3 1487.86800 2 24.97542 121.5173 27.0
## 34 2013 16.5 323.65500 6 24.97841 121.5428 49.3
## 131 2013 29.6 535.52700 8 24.98092 121.5365 37.5
## 67 2013 1.0 193.58450 6 24.96571 121.5409 50.7
## 92 2013 9.1 1402.01600 0 24.98569 121.5276 43.2
## 364 2013 32.3 109.94550 10 24.98182 121.5409 48.0
## 132 2013 4.0 2147.37600 3 24.96299 121.5128 30.7
## 86 2012 0.0 338.96790 9 24.96853 121.5441 50.8
## 307 2013 14.4 169.98030 1 24.97369 121.5298 50.2
## 275 2013 27.5 394.01730 7 24.97305 121.5399 41.0
## 221 2013 37.2 186.51010 9 24.97703 121.5426 78.3
## 361 2012 32.9 87.30222 10 24.98300 121.5402 47.1
## 254 2012 30.4 1735.59500 2 24.96464 121.5162 25.9
## 228 2012 32.4 265.06090 8 24.98059 121.5399 40.2
## 334 2012 7.8 104.81010 5 24.96674 121.5407 38.4
## 163 2012 16.0 4066.58700 0 24.94297 121.5034 11.6
## 63 2012 17.2 2175.87700 3 24.96303 121.5125 27.7
## 145 2013 11.9 1360.13900 1 24.95204 121.5484 28.4
## 382 2013 8.0 132.54690 9 24.98298 121.5398 47.3
## 396 2012 21.2 512.54870 4 24.97400 121.5384 42.5
## 158 2013 16.1 815.93140 4 24.97886 121.5346 35.6
## 338 2012 31.3 600.86040 5 24.96871 121.5465 30.9
## 185 2012 14.1 2615.46500 0 24.95495 121.5617 21.8
## 232 2012 16.2 4074.73600 0 24.94235 121.5036 14.7
## 24 2013 10.1 279.17260 7 24.97528 121.5454 47.9
## 231 2013 4.0 2147.37600 3 24.96299 121.5128 33.4
## 62 2013 5.3 259.66070 6 24.97585 121.5452 63.2
## 170 2013 8.4 1962.62800 1 24.95468 121.5548 23.5
## 332 2013 25.6 4519.69000 0 24.94826 121.4959 15.6
## 235 2013 8.0 2216.61200 4 24.96007 121.5136 23.9
## 383 2013 16.3 3529.56400 0 24.93207 121.5160 29.3
## 400 2012 12.7 170.12890 1 24.97371 121.5298 37.3
## 293 2013 17.5 395.67470 5 24.95674 121.5340 24.5
## 35 2012 15.4 205.36700 7 24.98419 121.5424 55.1
## 126 2013 1.1 193.58450 6 24.96571 121.5409 48.6
## 73 2013 32.5 424.54420 8 24.97587 121.5391 36.3
## 277 2013 19.1 461.10160 5 24.95425 121.5399 34.0
## 117 2013 30.9 6396.28300 1 24.94375 121.4788 12.2
## 269 2013 17.2 390.56840 5 24.97937 121.5425 40.1
## 286 2013 30.1 718.29370 3 24.97509 121.5364 55.3
## 206 2013 12.8 1449.72200 3 24.97289 121.5173 21.4
## 366 2012 17.3 2261.43200 4 24.96182 121.5122 29.5
## 33 2012 37.9 488.57270 1 24.97349 121.5345 34.2
## 353 2012 18.4 2674.96100 3 24.96143 121.5083 25.7
## 192 2013 13.2 750.07040 2 24.97371 121.5495 37.8
## 263 2012 15.9 289.32480 5 24.98203 121.5435 53.0
## 10 2013 17.9 1783.18000 3 24.96731 121.5149 22.1
## 304 2013 38.3 439.71050 0 24.97161 121.5342 38.4
## 7 2012 34.5 623.47310 7 24.97933 121.5364 40.3
## 208 2013 38.5 665.06360 3 24.97503 121.5369 34.2
## 310 2013 30.3 1264.73000 0 24.94883 121.5295 19.1
## 51 2013 21.7 512.54870 4 24.97400 121.5384 44.2
## 399 2013 14.7 1717.19300 2 24.96447 121.5165 23.0
## 65 2013 17.5 995.75540 0 24.96305 121.5491 25.3
## 319 2013 7.1 379.55750 10 24.98343 121.5376 49.8
## 199 2013 34.0 157.60520 7 24.96628 121.5420 39.1
## 182 2013 11.6 201.89390 8 24.98489 121.5412 55.9
## 280 2013 2.6 1554.25000 3 24.97026 121.5164 31.1
## 241 2013 11.0 1712.63200 2 24.96412 121.5167 28.8
## 36 2013 13.9 4079.41800 0 25.01459 121.5182 27.3
## 321 2012 13.5 4197.34900 0 24.93885 121.5038 18.6
## 405 2013 16.4 289.32480 5 24.98203 121.5435 41.2
## 295 2013 26.4 335.52730 6 24.97960 121.5414 38.1
## 395 2013 32.6 4136.27100 1 24.95544 121.4963 24.7
## 69 2013 30.4 464.22300 6 24.97964 121.5380 36.2
## 411 2012 5.6 90.45606 9 24.97433 121.5431 50.0
## 394 2013 16.9 967.40000 4 24.98872 121.5341 40.3
## 397 2012 37.1 918.63570 1 24.97198 121.5506 31.9
## 151 2013 35.8 170.73110 7 24.96719 121.5427 48.5
## 89 2012 8.9 1406.43000 0 24.98573 121.5276 48.0
## 375 2013 5.4 390.56840 5 24.97937 121.5425 49.5
## 203 2012 38.3 642.69850 3 24.97559 121.5371 31.5
## 105 2012 32.7 392.44590 6 24.96398 121.5425 30.5
## 309 2013 16.4 289.32480 5 24.98203 121.5435 53.0
## 359 2013 1.1 193.58450 6 24.96571 121.5409 45.1
## 84 2012 25.3 2707.39200 3 24.96056 121.5083 17.7
## 130 2013 38.5 216.83290 7 24.98086 121.5416 41.0
## 322 2012 16.9 964.74960 4 24.98872 121.5341 37.7
## 133 2013 26.6 482.75810 5 24.97433 121.5386 37.5
## 407 2013 1.9 372.13860 7 24.97293 121.5403 40.5
## 135 2012 33.4 186.96860 6 24.96604 121.5421 42.2
## 259 2013 0.0 292.99780 6 24.97744 121.5446 63.3
## 245 2013 4.8 1559.82700 3 24.97213 121.5163 21.7
## 316 2013 15.6 1756.41100 2 24.98320 121.5181 27.3
## 80 2013 18.0 1414.83700 1 24.95182 121.5489 26.5
## 273 2012 13.0 492.23130 5 24.96515 121.5374 40.5
## 127 2013 38.6 804.68970 4 24.97838 121.5348 62.9
## 49 2013 24.2 4605.74900 0 24.94684 121.4958 13.4
## 331 2013 32.0 1156.77700 0 24.94935 121.5305 12.8
## 414 2013 6.5 90.45606 9 24.97433 121.5431 63.9
## 330 2013 13.6 4197.34900 0 24.93885 121.5038 19.2
## 12 2013 6.3 90.45606 9 24.97433 121.5431 58.1
## 409 2013 18.5 2175.74400 3 24.96330 121.5124 28.1
## 204 2012 15.6 289.32480 5 24.98203 121.5435 46.1
FML <- vector("list", 7)
FML[[1]] <- formula("yr ~ yrs_old")
FML[[2]] <- formula("yr ~ yrs_old + m_sta")
FML[[3]] <- formula("yr ~ yrs_old + m_sta + nstores")
FML[[4]] <- formula("yr ~ yrs_old + m_sta + nstores + lat")
FML[[5]] <- formula("yr ~ yrs_old + m_sta + nstores + lat + lon")
FML[[6]] <- formula("yr ~ yrs_old + m_sta + nstores + lat + lon + price")
FML[[7]] <- formula("yr ~ poly(yrs_old, 7)")
ID.MODEL <- 6
yrs_old.tr <- model.matrix(FML[[ID.MODEL]], d0.tr)
yrs_old.te <- model.matrix(FML[[ID.MODEL]], d0.te)
nc <- ncol(yrs_old.tr)
me.tr <- apply(yrs_old.tr, 2, mean)
sd.tr <- apply(yrs_old.tr, 2, sd)
yrs_old.tr <- scale(yrs_old.tr, center = me.tr, scale = sd.tr)
yrs_old.te <- scale(yrs_old.te, center = me.tr, scale = sd.tr)
yrs_old.tr[, 1] <- 1
yrs_old.te[, 1] <- 1
model <-
keras_model_sequential(input_shape = c(nc)) |>
layer_dense(units = nc*2, activation = "relu") |>
layer_dense(units = nc*4, activation = "relu") |>
layer_dense(units = nc*2, activation = "relu") |>
layer_dense(units = 1, activation = "linear")
summary(model)
## Model: "sequential_1"
## ┌───────────────────────────────────┬──────────────────────────┬───────────────
## │ Layer (type) │ Output Shape │ Param #
## ├───────────────────────────────────┼──────────────────────────┼───────────────
## │ dense_4 (Dense) │ (None, 14) │ 112
## ├───────────────────────────────────┼──────────────────────────┼───────────────
## │ dense_5 (Dense) │ (None, 28) │ 420
## ├───────────────────────────────────┼──────────────────────────┼───────────────
## │ dense_6 (Dense) │ (None, 14) │ 406
## ├───────────────────────────────────┼──────────────────────────┼───────────────
## │ dense_7 (Dense) │ (None, 1) │ 15
## └───────────────────────────────────┴──────────────────────────┴───────────────
## Total params: 953 (3.72 KB)
## Trainable params: 953 (3.72 KB)
## Non-trainable params: 0 (0.00 B)
compile(model,
loss = "mse",
optimizer = optimizer_adam(learning_rate = 0.1),
metrics = c("mean_absolute_error"))
callbacks <- list(
callback_early_stopping(patience = 20, monitor = "val_loss"),
callback_model_checkpoint(filepath = "bestmodel.keras",
monitor = "val_loss", save_best_only = T),
callback_reduce_lr_on_plateau(monitor = "val_loss",
factor = 0.1, patience = 5)
)
#fit.dp <- fit(model, yrs_old.tr, d0.tr$y, verbose= 0, batch_size = 2^6,epochs= 100, validation_split = 0.2, callbacks = callbacks)