Rumusan Masalah

Pada Learn by Building terkait Neural Network and Deep Learning ini, akan dilakukan pemodelan menggunakan Frameworks Deep Learning yaitu Keras untuk data Fashion-MNIST, pada alamat berikut ini: https://www.kaggle.com/zalando-research/fashionmnist.
Setelah model dibuat, selanjutnya akan dilakukan prediksi dan evaluasi model dan juga akan dilakukan tunning pada parameter model agar menghasilkan model terbaik.

Praproses Data

Fashion-MNIST adalah dataset dari Zalando’s article images yang terdiri dari dataset train (60,000 data) dan data test (10,000 data). Masing - masing data merupakan 28x28 grayscale image (panjang, 28 pixels dan lebar 28 pixels, sehingga total 784 pixels), beserta labelnya masing - masing (ada 10 label). Masing - masing pixel memiliki nilai 0 sampai 255 (semakin tinggi nilai, melambangkan semakin gelap warnanya / hitam). Jadi, untuk satu baris data / label, memiliki 784 variable / kolom yang terkait dengan masing - masing pixel, sehingga terdapat 784 + 1 = 785 kolom per baris data.

Membaca Data

mnist <- read.csv("data_input/fashionmnist/train.csv")
head(mnist)
##   label pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 pixel8 pixel9
## 1     2      0      0      0      0      0      0      0      0      0
## 2     9      0      0      0      0      0      0      0      0      0
## 3     6      0      0      0      0      0      0      0      5      0
## 4     0      0      0      0      1      2      0      0      0      0
## 5     3      0      0      0      0      0      0      0      0      0
## 6     4      0      0      0      5      4      5      5      3      5
##   pixel10 pixel11 pixel12 pixel13 pixel14 pixel15 pixel16 pixel17 pixel18
## 1       0       0       0       0       0       0       0       0       0
## 2       0       0       0       0       0       0       0       0       0
## 3       0       0     105      92     101     107     100     132       0
## 4       0     114     183     112      55      23      72     102     165
## 5       0       0       0      46       0      21      68       0       0
## 6       6       2       0       0       0       0       0       0       0
##   pixel19 pixel20 pixel21 pixel22 pixel23 pixel24 pixel25 pixel26 pixel27
## 1       0       0       0       0       0       0       0       0       0
## 2       0       0       0       0       0       0       0       0       0
## 3       0       2       4       0       1       0       0       0       0
## 4     160      28       0       0       0       1       0       0       0
## 5       0       0       0       0       0       0       0       0       0
## 6       2       3       7       4       4       5       5       0       0
##   pixel28 pixel29 pixel30 pixel31 pixel32 pixel33 pixel34 pixel35 pixel36
## 1       0       0       0       0       0       0       0       0       0
## 2       0       0       0       0       0       0       0       0       0
## 3       0       0       0       0       0       0       0       0       0
## 4       0       0       0       0       0       1       0       0      24
## 5       0       0       0       0       0       0       0       0       0
## 6       0       0       0       0       4       5       4       5      11
##   pixel37 pixel38 pixel39 pixel40 pixel41 pixel42 pixel43 pixel44 pixel45
## 1       0       0       0       0       0       0       0       0       0
## 2       0       0       0       0       0       0       0       0       0
## 3       0       0     150     227     211     171     191     236     228
## 4     188     163      93     136     153     168     252     174     136
## 5      25     187     189       0     119     173     239     112       0
## 6       2       0       0      21     231     156     134     177     194
##   pixel46 pixel47 pixel48 pixel49 pixel50 pixel51 pixel52 pixel53 pixel54
## 1       0       0       0       0       0       0       0       0       0
## 2       0       0       0       0       0       0       0       0       0
## 3     172       0       0       0       0       1       0       0       0
## 4     166     130     123     131      66       0       0       1       0
## 5     189     125       0       0       0       0       0       0       0
## 6       1       0       0       0      10       5       5       4       0
##   pixel55 pixel56 pixel57 pixel58 pixel59 pixel60 pixel61 pixel62 pixel63
## 1       0       0       0       0       0       0       0       0       0
## 2       0       0       0       0       0       0       0       0       0
## 3       0       0       0       0       0       0       0       0       0
## 4       0       0       0       0       0       2       0      10     157
## 5       0       0       0       0       0       0       0       0       0
## 6       0       0       0       0       0       4       5       3       7
##   pixel64 pixel65 pixel66 pixel67 pixel68 pixel69 pixel70 pixel71 pixel72
## 1       0       0       0       0       0       0       0       0       0
## 2       0       0       0       0       0       0       0       0       0
## 3      48     153     209     210     187     199     142     157     209
## 4     216     226     208     142      66     115     149     230     190
## 5      14     219     224     211      92      52     227     224     127
## 6       0       0      26     112     168     162     212     226     199
##   pixel73 pixel74 pixel75 pixel76 pixel77 pixel78 pixel79 pixel80 pixel81
## 1       0       0       0       0       0       0       0       0       0
## 2       0       0       0       0       0       0       0       0       0
## 3     179     199     233     138      44       0       0       0       0
## 4     196     198     172     222     107     165     211       0       0
## 5      92     196     237     136       0       0       0       0       0
## 6     146     168     124      25       0       0       0       4       5
##   pixel82 pixel83 pixel84 pixel85 pixel86 pixel87 pixel88 pixel89 pixel90
## 1       0       0       0       0       0       0       0       4       0
## 2       0       0       0       0       0       0       0       0       0
## 3       0       0       0       0       0       0       0       0       0
## 4       0       0       0       0       0       0       0       0     118
## 5       0       0       0       0       0       0       0       0       0
## 6       0       0       0       0       0       0       4       5       8
##   pixel91 pixel92 pixel93 pixel94 pixel95 pixel96 pixel97 pixel98 pixel99
## 1       0       0       0       0      62      61      21      29      23
## 2       0       0       0       0       0       0       0       0       0
## 3     120     218     215     207     198     198     223     219     214
## 4     214     174     168     109     200     124     150     143      58
## 5       0     106     238     202     205     224     225     217     218
## 6       0      15      95     142     170     144     123     156     172
##   pixel100 pixel101 pixel102 pixel103 pixel104 pixel105 pixel106 pixel107
## 1       51      136       61        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3      225      190      177      195      209      204      139        0
## 4       63       89      137       97      168      138      142      195
## 5      222      227      202      206      218        0        0        0
## 6      140      131      135      160      137      141       53        0
##   pixel108 pixel109 pixel110 pixel111 pixel112 pixel113 pixel114 pixel115
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3        1        0        0        0        0        0        0        0
## 4      156        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6        0        3        0        0        0        0        0        0
##   pixel116 pixel117 pixel118 pixel119 pixel120 pixel121 pixel122 pixel123
## 1        0        0        0        0       88      201      228      225
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0      208      200      197      202      193
## 4        0       25      140       70       80       43       71       96
## 5        0        0        0        0      166      239      216      214
## 6        5        6        0        0      165      130      120      130
##   pixel124 pixel125 pixel126 pixel127 pixel128 pixel129 pixel130 pixel131
## 1      255      115       62      137      255      235      222      255
## 2        0        0        0        0        0        0        0        0
## 3      203      207      228      245      196      197      202      193
## 4       93      151      121      197      143      107       82      101
## 5      192      181      205      204      180      187      205      208
## 6       56      124      122       68      143      111       98      132
##   pixel132 pixel133 pixel134 pixel135 pixel136 pixel137 pixel138 pixel139
## 1      135        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3      190      167      203       27        0        0        0        0
## 4      111       80      137      193      208        6        0        0
## 5      230       45        0        0        0        0        0        0
## 6      125      111      164       60        0        6        0        0
##   pixel140 pixel141 pixel142 pixel143 pixel144 pixel145 pixel146 pixel147
## 1        0        0        0        0        0        0       47      252
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0        0        0        0       89      217
## 4        0        0        0        0        0       74      194      107
## 5        0        0        0        0        0        0        0        0
## 6        0        0        0        0        3        7        0       99
##   pixel148 pixel149 pixel150 pixel151 pixel152 pixel153 pixel154 pixel155
## 1      234      238      224      215      215      229      108      180
## 2        0        0        0        0        0        1        1        0
## 3      200      211      175      189      205      199      218      216
## 4      146      178      185      182       77      185      218      210
## 5      220      235      233      213      205      201      185      184
## 6      165      135      154       98       66      130      141      114
##   pixel156 pixel157 pixel158 pixel159 pixel160 pixel161 pixel162 pixel163
## 1      207      214      224      231      249      254       45        0
## 2        0        0        0       81       21        0        1        0
## 3      181      179      185      192      198      184      198      121
## 4      175      174      235      217      217      129      180      210
## 5      200      199      223      224      232      101        0        0
## 6      143      113       71      107      147      117      176      172
##   pixel164 pixel165 pixel166 pixel167 pixel168 pixel169 pixel170 pixel171
## 1        0        0        0        0        0        0        0        1
## 2        1        0        0        0        0        0        0        0
## 3        0        0        0        0        0        0        0        0
## 4      208       89        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6        0        5        0        0        0        0        0        0
##   pixel172 pixel173 pixel174 pixel175 pixel176 pixel177 pixel178 pixel179
## 1        0        0      214      222      210      213      224      225
## 2        0        0        0        0        0        0        0        0
## 3        0        0      140      220      204      223      187      182
## 4        0      179      213      203      177      228      192      193
## 5        0        0        0        0      252      238      226      226
## 6        4        0        0      197      188      169      148      146
##   pixel180 pixel181 pixel182 pixel183 pixel184 pixel185 pixel186 pixel187
## 1      217      220      254      233      219      221      217      223
## 2        1        0        0        0        0        0       14      200
## 3      200      207      217      213      210      207      180      161
## 4      162      143      172      196      205      181      180      140
## 5      221      224      195      198      223      229      205      202
## 6      132      110      133      107      139      131      133      141
##   pixel188 pixel189 pixel190 pixel191 pixel192 pixel193 pixel194 pixel195
## 1      221      240      254        0        0        1        0        0
## 2       49        0        0        0        0        0        0        0
## 3      192      184      199      162        0        0        0        0
## 4      134      176      194      171      170       65        0        0
## 5      235      158        0        0        0        0        0        0
## 6      156      143      170      186        0        0        0        0
##   pixel196 pixel197 pixel198 pixel199 pixel200 pixel201 pixel202 pixel203
## 1        0        1        0        0        0      128      237      207
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0        0        0        0      166      218
## 4        0        0        0        0        0      184      194      229
## 5        0        0        0        0        0        0        0        9
## 6        0        0        0        0        6        0        0      225
##   pixel204 pixel205 pixel206 pixel207 pixel208 pixel209 pixel210 pixel211
## 1      224      224      207      216      214      210      208      211
## 2        0        2        1        1        1        0        1        0
## 3      203      195      185      196      189      167      181      206
## 4      209      176      198      129      227      225      140      196
## 5      228      241      125      238      228      225      212      215
## 6      130      140      169      148      110       45      117      137
##   pixel212 pixel213 pixel214 pixel215 pixel216 pixel217 pixel218 pixel219
## 1      221      208      219      213      226      211      237      150
## 2        0        0      162      184      165       20        0        1
## 3      177      176      181      165      187      179      189      183
## 4      130      179      145      109       79      182      223      164
## 5      222      250      168      141      243      197        0        0
## 6      118       53       97      147      147      154      133      202
##   pixel220 pixel221 pixel222 pixel223 pixel224 pixel225 pixel226 pixel227
## 1        0        0        0        0        0        0        2        0
## 2        1        3        4        1        0        0        0        0
## 3        0        0        0        0        0        0        0        0
## 4      195      233        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6       18        0        0        0        0        0        0        0
##   pixel228 pixel229 pixel230 pixel231 pixel232 pixel233 pixel234 pixel235
## 1        0      237      222      215      207      210      212      213
## 2        0        0        0        0        0        0        0        0
## 3        0        0      196      215      211      206      201      196
## 4       38      180      177      213      202      159      129       98
## 5        0        0        0       51      232      247       34      225
## 6        7        0       48      211      135      124      140       83
##   pixel236 pixel237 pixel238 pixel239 pixel240 pixel241 pixel242 pixel243
## 1      206      214      213      214      213      210      215      214
## 2        1        2        0        2        0      120      183      154
## 3      180      188      210      206      190      173      180      187
## 4      179      149       90      187      211       61      134       91
## 5      237      219      222      223      216      248      182      124
## 6      158      145      160      126      151      136      156      113
##   pixel244 pixel245 pixel246 pixel247 pixel248 pixel249 pixel250 pixel251
## 1      206      199      218      255       13        0        2        0
## 2      206       32        0        5        5        0        0        0
## 3      192      184      192      199        0        0        0        0
## 4       57      118      212      220      218      207        0        0
## 5      246      200        0        0        0        0        0        0
## 6      110      167      168      217       93        0        0        0
##   pixel252 pixel253 pixel254 pixel255 pixel256 pixel257 pixel258 pixel259
## 1        0        0        4        0       85      228      210      218
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0        0        0        0      212      217
## 4        0        0        0        0      114      154      142      182
## 5        0        0        0        0        0        0        0       69
## 6        0        0        0        0        6        0      104      219
##   pixel260 pixel261 pixel262 pixel263 pixel264 pixel265 pixel266 pixel267
## 1      200      211      208      203      215      210      209      209
## 2        0        0        0        0        2        0        3        0
## 3      224      211      216      201      189      184      202      210
## 4      219      130       88       81       52       54      106       93
## 5      236      255        0      218      240      219      221      222
## 6      208      166      157      130      170      137      144      155
##   pixel268 pixel269 pixel270 pixel271 pixel272 pixel273 pixel274 pixel275
## 1      210      213      211      210      217      206      213      231
## 2       76      227      151      139      158        0        0        0
## 3      194      182      173      173      176      192      195      208
## 4      110      159      222      227       83      117      253      218
## 5      214      252      153       71      248      215        0        0
## 6      160      150      160      158      120      194      220      213
##   pixel276 pixel277 pixel278 pixel279 pixel280 pixel281 pixel282 pixel283
## 1      175        0        0        0        0        0        0        0
## 2        0        0       66       23        0        0        0        0
## 3        0        0        0        0        0        0        0        0
## 4      210      206       48        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      128        0        0        0        0        0        0        0
##   pixel284 pixel285 pixel286 pixel287 pixel288 pixel289 pixel290 pixel291
## 1      217      224      215      206      205      204      217      230
## 2        0        0        0        0        0        1        0        1
## 3        0        0      222      215      228      203      212      199
## 4       18      127      208      228      185      172      240       91
## 5        0        0        0       82      248      247        0      231
## 6        6        0      133      213      235      206      169      194
##   pixel292 pixel293 pixel294 pixel295 pixel296 pixel297 pixel298 pixel299
## 1      222      215      224      233      228      232      228      224
## 2        0        0        0       55      224      162      143      121
## 3      198      191      186      228      195      191      161      178
## 4      126      208      165      154      213      214      229      215
## 5      236      219      221      221      212      253      109        0
## 6      139       76      119      178      139       99      120      199
##   pixel300 pixel301 pixel302 pixel303 pixel304 pixel305 pixel306 pixel307
## 1      207      212      215      213      229       31        0        4
## 2      204      236      144       21       74       90      190        8
## 3      177      198      194      210       29        0        0        0
## 4      175      222      204      153      130      125       39        0
## 5      247      224       19        0        0        0        0        0
## 6      167      190      226      210      152        0        0        0
##   pixel308 pixel309 pixel310 pixel311 pixel312 pixel313 pixel314 pixel315
## 1        0        1        0       21      225      212      212      203
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0        0        0        0      244      215
## 4        0        0        0        0        0        0        0       28
## 5        0        0        0        0        0        0        0      106
## 6        0        0        0        0        4        0      165      209
##   pixel316 pixel317 pixel318 pixel319 pixel320 pixel321 pixel322 pixel323
## 1      211      225      193      139      136      195      147      156
## 2        0        0        1        0        0        0       42      228
## 3      235      206      214      202      171      201      178      203
## 4        0      212      228      170      221      205      225      228
## 5      252      198        0      250      230      220      219      219
## 6      233      237      131      158      151      124      147      157
##   pixel324 pixel325 pixel326 pixel327 pixel328 pixel329 pixel330 pixel331
## 1      139      128      162      197      223      207      220      213
## 2      160      148      125      165      223      208      221      246
## 3      190      180      187      196      183      206      195      206
## 4      210      178      214       89      117      213        0        0
## 5      212      252      129        0      255      232       59        0
## 6      149      108      137      187       97      147      233      204
##   pixel332 pixel333 pixel334 pixel335 pixel336 pixel337 pixel338 pixel339
## 1      232      177        0        0        0        0        0      123
## 2      211      174      151        0        0        0        0        0
## 3       44        0        0        0        0        0        0        0
## 4        0        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      184        0        0        0        0        0        0        0
##   pixel340 pixel341 pixel342 pixel343 pixel344 pixel345 pixel346 pixel347
## 1      226      207      211      209      205      228      158       90
## 2        1        3        0        1        0        3        0        9
## 3        0        0      233      221      237      182      206      207
## 4        0        0        0        0        0      196      141       56
## 5        0        0        0      134      252      150        0      254
## 6        0        0      199      202      233      245      165       76
##   pixel348 pixel349 pixel350 pixel351 pixel352 pixel353 pixel354 pixel355
## 1      103      186      138      100      121      147      158      183
## 2        0       23      230      168      147      119      163      227
## 3      195      200      192      224      191      182      177      180
## 4      176      210      164      162       91      135      196      158
## 5      215      219      219      219      216      233      222        0
## 6      138      174      160      148      159      155      163      125
##   pixel356 pixel357 pixel358 pixel359 pixel360 pixel361 pixel362 pixel363
## 1      226      208      214      209      216      255       13        0
## 2      206      200      190      206      186      139      171       41
## 3      186      178      196      207       60        0        0        0
## 4       69      181        0        0        3        2        3        0
## 5      253      237       89        0        0        0        0        0
## 6       90      230      228      203      210        0        0        0
##   pixel364 pixel365 pixel366 pixel367 pixel368 pixel369 pixel370 pixel371
## 1        1        0        0      226      219      202      208      206
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0        0        0       16      249      224
## 4        0        0        0        0        0        0        1        0
## 5        0        0        0        0        0        0        0      163
## 6        0        0        0        0        0        0      218      196
##   pixel372 pixel373 pixel374 pixel375 pixel376 pixel377 pixel378 pixel379
## 1      205      216      184      156      150      193      170      164
## 2        0        3        4        0       16      209      185      139
## 3      229      192      215      207      198      198      192      226
## 4        0      150      190       88       50      145      194      159
## 5      253      126      115      253      211      222      220      219
## 6      238      249      204      101      143      184      171      149
##   pixel380 pixel381 pixel382 pixel383 pixel384 pixel385 pixel386 pixel387
## 1      168      188      186      200      219      216      213      213
## 2      118      181      227      209      204      210      199      225
## 3      193      192      180      176      185      196      200      217
## 4      120      136      207      230      144      171        4        0
## 5      219      213      253       54      206      243      144        0
## 6      163      173      158      103      132      255      217      205
##   pixel388 pixel389 pixel390 pixel391 pixel392 pixel393 pixel394 pixel395
## 1      211      233      148        0        0        0       45      227
## 2      157      127      190      111        0        1        3        2
## 3       87        0        0        0        0        0        0        0
## 4        1        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      222        0        0        0        0        0        0        0
##   pixel396 pixel397 pixel398 pixel399 pixel400 pixel401 pixel402 pixel403
## 1      204      214      211      218      222      221      230      229
## 2        1        3        2        3        0        0        0       67
## 3        0       53      222      223      235      205      220      200
## 4        0        0        0        0        0      187      220      182
## 5        0        0        0      205      255      149      209      234
## 6        0        0      234      193      237      255      169      139
##   pixel404 pixel405 pixel406 pixel407 pixel408 pixel409 pixel410 pixel411
## 1      221      213      224      233      226      220      219      221
## 2      214      187      139      111      191      229      203      208
## 3      151      206      198      214      199      171      161      197
## 4       72      139      199      192      232      255      244      198
## 5      219      221      220      219      219      213      244      164
## 6      199      182      181      154      171      186      181      154
##   pixel412 pixel413 pixel414 pixel415 pixel416 pixel417 pixel418 pixel419
## 1      224      223      217      210      218      213      254        0
## 2      208      196      223      188      100      128      155      112
## 3      186      218      198      216       88        0        0        0
## 4      170      189        2        0        3        0        0        0
## 5      224      240      195        0        0        0        0        0
## 6      148      242      216      208      220        0        0        0
##   pixel420 pixel421 pixel422 pixel423 pixel424 pixel425 pixel426 pixel427
## 1        0        0      157      226      203      207      211      209
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0        0        0       75      223      223
## 4        0        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        9
## 6        0        0        0        0        0        7      239      190
##   pixel428 pixel429 pixel430 pixel431 pixel432 pixel433 pixel434 pixel435
## 1      215      205      198      207      208      201      201      197
## 2        0       48      161      218      171      147      116      185
## 3      237      199      219      203      193      204      201      220
## 4        0      186      175      181       93      164      230      134
## 5        0       20      253      219      221      219      219      219
## 6      243      231      103      164      144       88      188      157
##   pixel436 pixel437 pixel438 pixel439 pixel440 pixel441 pixel442 pixel443
## 1      203      205      210      207      213      214      214      214
## 2      235      201      209      203      204      220      208      126
## 3      201      193      176      189      167      218      202      198
## 4      153      142      137       79      143      183        0        0
## 5      219      221      224      230        0        0        0        0
## 6      177      154      118      181      105      226      223      210
##   pixel444 pixel445 pixel446 pixel447 pixel448 pixel449 pixel450 pixel451
## 1      213      208      234      107        0        0      235      213
## 2      133      162      164      187        0        0       12       16
## 3      109        0        0        0        0        0        0        0
## 4        2        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      219        0        0        0        0        0        0        0
##   pixel452 pixel453 pixel454 pixel455 pixel456 pixel457 pixel458 pixel459
## 1      204      211      210      209      213      202      197      204
## 2        9        4       19       73      170      211      188      145
## 3        0       79      250      226      243      196      222      201
## 4        0        0        0        0        0       93       72      144
## 5        0        0        0        0        0       49      254      217
## 6        0       30      242      187      246      196       93      162
##   pixel460 pixel461 pixel462 pixel463 pixel464 pixel465 pixel466 pixel467
## 1      215      217      213      212      210      206      212      203
## 2      149      148      136      222      218      207      208      215
## 3      206      205      207      222      185      194      186      187
## 4      138      164      113      124       98       80       57       97
## 5      221      219      219      219      220      221      216      253
## 6      115       91      187      151      182      114       65      158
##   pixel468 pixel469 pixel470 pixel471 pixel472 pixel473 pixel474 pixel475
## 1      211      218      215      214      208      209      222      230
## 2      224      193      140      146      162      156      118      203
## 3      144      207      208      226      111        0        0        0
## 4      138      124        4        0        3        0        0        0
## 5        7        0        0        0        0        0        0        0
## 6      116      176      220      216      223        0        0        0
##   pixel476 pixel477 pixel478 pixel479 pixel480 pixel481 pixel482 pixel483
## 1        0       52      255      207      200      208      213      210
## 2       37       47      255      188      187      182      203      206
## 3        0        0        0        0        0       87      249      222
## 4        0        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        6
## 6        0        0        0        0        0       46      206      187
##   pixel484 pixel485 pixel486 pixel487 pixel488 pixel489 pixel490 pixel491
## 1      210      208      207      202      201      209      216      216
## 2      182      147      140      148      148      148      134      180
## 3      240      226      193      187      205      206      198      212
## 4        0      149      171       98       70      180      152      227
## 5        0       94      229      216      220      218      218      219
## 6      237      156      106      186      180      178      173      160
##   pixel492 pixel493 pixel494 pixel495 pixel496 pixel497 pixel498 pixel499
## 1      216      216      214      212      205      215      201      228
## 2      218      221      225      204      156      134      139      144
## 3      190      189      185      185      191      211      212      210
## 4      173      143      180      183      127      206       38        0
## 5      220      219      218      226       52        0        5        0
## 6      176      180      161      188      136      133      226      219
##   pixel500 pixel501 pixel502 pixel503 pixel504 pixel505 pixel506 pixel507
## 1      208      214      212      218       25      118      217      201
## 2      140      123       97      206       30       88      203      164
## 3      113        0        0        0        0        0        0        0
## 4        5        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      219       20        0        0        0        0        0        0
##   pixel508 pixel509 pixel510 pixel511 pixel512 pixel513 pixel514 pixel515
## 1      206      208      213      208      205      206      210      211
## 2      167      170      161      147      147      156      159      153
## 3        0       95      249      227      236      219      213      186
## 4        0        1        0        0        0      195      210      226
## 5        0        0        0        4        0      119      231      214
## 6        0       76      208      185      249      152      149      171
##   pixel516 pixel517 pixel518 pixel519 pixel520 pixel521 pixel522 pixel523
## 1      202      199      207      208      209      210      207      210
## 2      152      155      150      134      136      153      145      136
## 3      203      219      198      206      218      194      177      181
## 4      113      187      224      210      191      181      224      212
## 5      220      217      218      219      220      221      217      224
## 6      110      163      174      160      167      190      138      149
##   pixel524 pixel525 pixel526 pixel527 pixel528 pixel529 pixel530 pixel531
## 1      210      245      139      119      255      202      203      236
## 2      151      164      168      170      166      153      130      200
## 3      195      148      229      206      122        0        0        0
## 4      198      172       36        0        6        0        0        0
## 5       34        0        3        0        0        0        0        0
## 6      154      147      225      216      206       45        0        0
##   pixel532 pixel533 pixel534 pixel535 pixel536 pixel537 pixel538 pixel539
## 1      114      171      238      212      203      220      216      217
## 2       10      131      195      150      133      132      142      160
## 3        0        0        0        0        0      106      248      228
## 4        0        0        0        0        0        1        0        0
## 5        0        0        0        0        0        0        0        3
## 6        0        0        0        0        0       89      202      186
##   pixel540 pixel541 pixel542 pixel543 pixel544 pixel545 pixel546 pixel547
## 1      209      207      205      210      211      206      204      206
## 2      166      162      153      152      153      151      154      163
## 3      224      206      202      200      206      191      190      194
## 4        0      153      197      171      175      161      171      199
## 5        0      113      231      213      222      217      218      219
## 6      226      152      167      122       74      151      187      149
##   pixel548 pixel549 pixel550 pixel551 pixel552 pixel553 pixel554 pixel555
## 1      209      211      215      210      206      221      242        0
## 2      147      152      163      205      208      174      175      178
## 3      203      196      180      180      185      148      228      214
## 4      224      187      206      192      176      179       48        0
## 5      220      219      219      219       10        0        2        0
## 6      166      182      113       71      133      168      208      218
##   pixel556 pixel557 pixel558 pixel559 pixel560 pixel561 pixel562 pixel563
## 1      224      234      230      181       26       39      145      201
## 2      181      168      150      196        1      155      228      197
## 3      117        0        0        0        0        0        0        0
## 4        6        1        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      179       25        0        0        0        0        0        0
##   pixel564 pixel565 pixel566 pixel567 pixel568 pixel569 pixel570 pixel571
## 1      255      157      115      250      200      207      206      207
## 2      172      138      123      121      122      126      129      135
## 3        0      110      242      225      239      218      204      201
## 4        0        0        0        0        0      180      195      136
## 5        0        0        0        3        0       51      227      215
## 6        0      108      193      180      197      152      155      160
##   pixel572 pixel573 pixel574 pixel575 pixel576 pixel577 pixel578 pixel579
## 1      213      216      206      205      206      207      206      215
## 2      139      144      158      177      192      239      244      178
## 3      202      211      193      197      217      203      183      184
## 4      230      240      148      204      140      173      199      193
## 5      221      217      217      219      220      218      219      213
## 6      115      168      192      154      161      193      141      122
##   pixel580 pixel581 pixel582 pixel583 pixel584 pixel585 pixel586 pixel587
## 1      207      221      238        0        0      188       85        0
## 2      176      183      179      185      177      147      148      192
## 3      175      212      219      206      122        0        0        0
## 4      156      213       37        0        5        0        0        0
## 5        0        0        1        0        0        0        0        0
## 6      159      156      193      213      170       29        0        0
##   pixel588 pixel589 pixel590 pixel591 pixel592 pixel593 pixel594 pixel595
## 1        0        0        0        0       31        0      129      253
## 2        0        0       80      196      199      212      209      190
## 3        0        0        0        0        0      122      249      234
## 4        0        0        0        0        0        0        1        0
## 5        0        0        0        0        0        0        0        2
## 6        0        0        0        0        0      141      193      170
##   pixel596 pixel597 pixel598 pixel599 pixel600 pixel601 pixel602 pixel603
## 1      190      207      208      208      208      209      211      211
## 2      176      170      178      183      192      204      204      202
## 3      241      216      215      196      200      222      208      195
## 4        0      150      101       72      167      158       95      177
## 5        0        0      216      217      219      218      218      219
## 6      169      151      161      163      153      168      198      155
##   pixel604 pixel605 pixel606 pixel607 pixel608 pixel609 pixel610 pixel611
## 1      209      209      209      212      201      226      165        0
## 2      144       59        3        0       67      217      184      188
## 3      225      212      181      186      183      227      214      211
## 4      234      113      142      112       59      152       22        0
## 5      219      218      220      246        0        0        2        0
## 6      153      188      164      161      170      148      195      210
##   pixel612 pixel613 pixel614 pixel615 pixel616 pixel617 pixel618 pixel619
## 1        0        0        0        0        0        2        0        0
## 2      178      166      160      188       13        0        0        0
## 3      121        0        0        0        0        0        0        0
## 4        3        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      188       60        0        0        0        0        0        0
##   pixel620 pixel621 pixel622 pixel623 pixel624 pixel625 pixel626 pixel627
## 1        0        0       89      254      199      199      192      196
## 2        3       51      105      179      217      235      227      208
## 3        0      148      230      237      228      214      213      201
## 4        0        0        0        0        0      197      178       82
## 5        0        0        0        2        0        0      217      216
## 6        0      178      184      188      163      148      160      163
##   pixel628 pixel629 pixel630 pixel631 pixel632 pixel633 pixel634 pixel635
## 1      198      199      201      202      203      204      203      203
## 2      201      133       58        0        0        0        0        0
## 3      207      214      201      204      235      191      161      185
## 4       47       64      106      112      121      110      189      225
## 5      216      219      218      219      219      217      222      235
## 6      164      162      202      155      156      187      168      152
##   pixel636 pixel637 pixel638 pixel639 pixel640 pixel641 pixel642 pixel643
## 1      200      222      155        0        3        3        3        2
## 2       16      187      194      184      185      175      181      131
## 3      180      216      201      212      119        0        0        0
## 4      121       98       58        0        4        0        0        0
## 5        0        0        2        0        0        0        0        0
## 6      172      148      173      207      224      100        0        0
##   pixel644 pixel645 pixel646 pixel647 pixel648 pixel649 pixel650 pixel651
## 1        0        0        0        1        5        0        0      255
## 2        0        0        3        0        0        0        0        0
## 3        0        0        0        0        0      151      230      235
## 4        0        0        0        0        0        0        2        0
## 5        0        0        0        0        0        0        0        2
## 6        0        0        0        0        0      188      181      204
##   pixel652 pixel653 pixel654 pixel655 pixel656 pixel657 pixel658 pixel659
## 1      218      226      232      228      224      222      220      219
## 2        0        0        0        0        0        0        0        0
## 3      229      218      209      198      193      226      182      189
## 4        0      202      219      161      135      205      200      156
## 5        0        0      212      216      217      219      218      219
## 6      194      146      158      161      169      177      185      154
##   pixel660 pixel661 pixel662 pixel663 pixel664 pixel665 pixel666 pixel667
## 1      219      217      221      220      212      236       95        0
## 2        5        5        5        0        0        0        0        0
## 3      240      200      186      188      188      218      216      209
## 4      195      231      234      218      182      223       99        0
## 5      219      216      224      204        0        0        2        0
## 6      148      168      169      157      161      155      188      209
##   pixel668 pixel669 pixel670 pixel671 pixel672 pixel673 pixel674 pixel675
## 1        2        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3      110        0        0        0        0        0        0        0
## 4        6        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      190       62        0        0        0        0        0        0
##   pixel676 pixel677 pixel678 pixel679 pixel680 pixel681 pixel682 pixel683
## 1        0        0        0      155      194      168      170      171
## 2        0        0        0        0        0        0        0        0
## 3        0       96      237      233      237      207      200      203
## 4        0        0        4        0        0      188      152      118
## 5        0        0        0        4        0        3      217      216
## 6        0      117      198      189       80      216      201      205
##   pixel684 pixel685 pixel686 pixel687 pixel688 pixel689 pixel690 pixel691
## 1      173      173      179      177      175      172      171      167
## 2        0        0        0        0        0        0        0        0
## 3      191      213      170      186      239      209      186      173
## 4      222      214      203      233      226      193      200      173
## 5      217      219      218      220      220      218      222      209
## 6      205      209      233      189      197      211      202      200
##   pixel692 pixel693 pixel694 pixel695 pixel696 pixel697 pixel698 pixel699
## 1      161      180        0        0        1        0        1        0
## 2        0        0        0        0        0        0        0        0
## 3      186      156      199      217       84        0        0        0
## 4       53      166       97        0        6        0        0        0
## 5        0        0        2        0        0        0        0        0
## 6      201      210      150      220      197       72        0        0
##   pixel700 pixel701 pixel702 pixel703 pixel704 pixel705 pixel706 pixel707
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0        0        0       89      237      207
## 4        0        0        0        0        0        0        3        0
## 5        0        0        0        0        0        0        0        3
## 6        0        0        0        0        0      151      214      181
##   pixel708 pixel709 pixel710 pixel711 pixel712 pixel713 pixel714 pixel715
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3      121      255      193      183      193      209      224      208
## 4        2      182      152       51       89      174      183      168
## 5        0        4      214      211      213      213      215      213
## 6        6      153       82       56       30        3        0       73
##   pixel716 pixel717 pixel718 pixel719 pixel720 pixel721 pixel722 pixel723
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3      224      203      160      184      223        0      186      216
## 4      112      109      181      170      136      108       60        0
## 5      211      214      220      200        0        0        1        0
## 6       74       41       28       30       46       78       13      201
##   pixel724 pixel725 pixel726 pixel727 pixel728 pixel729 pixel730 pixel731
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3      102        0        0        0        0        0        0        0
## 4        4        0        0        0        0        0        0        0
## 5        0        0        0        0        0        0        0        0
## 6      146       39        0        0        0        0        0        0
##   pixel732 pixel733 pixel734 pixel735 pixel736 pixel737 pixel738 pixel739
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3        0      108      242      253        0      112      255      217
## 4        0        0        2        0        5      194      193      204
## 5        0        0        0        3        0        0      214      232
## 6        0        7       34       58        0        0        0        0
##   pixel740 pixel741 pixel742 pixel743 pixel744 pixel745 pixel746 pixel747
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3      211      227      245      195      194      211      220      214
## 4      104      116      241      217      196      171      249      207
## 5      229      249      245      248      252      230      237      229
## 6        0        0        0        0        0        0        0        0
##   pixel748 pixel749 pixel750 pixel751 pixel752 pixel753 pixel754 pixel755
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3       74        0      255      222      128        0        0        0
## 4      197      202       45        0        3        0        0        0
## 5        0        0        1        0        0        0        0        0
## 6        0        0        0        0        0        0        0        0
##   pixel756 pixel757 pixel758 pixel759 pixel760 pixel761 pixel762 pixel763
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3        0        0        0        0        0        0       44       12
## 4        0        0        0        0        0        0        0        1
## 5        0        0        0        0        0        0        0        0
## 6        0        0        0        0        4        0        0        0
##   pixel764 pixel765 pixel766 pixel767 pixel768 pixel769 pixel770 pixel771
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3        0        0       40      134      162      191      214      163
## 4        0        0        0       22       21       25       69       52
## 5        0        0       68      116      112      136      147      144
## 6        2        4        9        7        8        7        5        4
##   pixel772 pixel773 pixel774 pixel775 pixel776 pixel777 pixel778 pixel779
## 1        0        0        0        0        0        0        0        0
## 2        0        0        0        0        0        0        0        0
## 3      146      165       79        0        0        0       30       43
## 4       45       74       39        3        0        0        0        0
## 5      121      102       63        0        0        0        0        0
## 6        8       12        5        7        8        7        4        3
##   pixel780 pixel781 pixel782 pixel783 pixel784
## 1        0        0        0        0        0
## 2        0        0        0        0        0
## 3        0        0        0        0        0
## 4        1        0        0        0        0
## 5        0        0        0        0        0
## 6        7        5        0        0        0

Cross Validation
Membagi data menjadi data train (untuk membuat model) dan test (untuk prediksi / evaluasi).

set.seed(100)
idx <- sample(nrow(mnist), nrow(mnist)*0.8)
train <- mnist[idx,]
test <- mnist[-idx,]

Merubah data.frame menjadi matrix menggunakan fungsi data.matrix().

train <- data.matrix(train)
test <- data.matrix(test)

Memisahkan antara prediktor (variable x) dengan label (variable y) pada masing - masing data train dan test.

train_x <- train[,-1]
train_y <- train[,1]

test_x <- test[,-1]
test_y <- test[,1]

Merubah matrix menjadi array menggunakan fungsi array_reshape(). Alasan perubahan ini adalah karena keras hanya menerima bentuk array. Fungsi array_reshape() memiliki 2 parameter yaitu:
1. x = adalah data yang ingin dijadikan array
2. dim = dimensi dari datanya c(nrow,ncol)

train_x_keras <- array_reshape(train_x, c(nrow(train_x),784))
test_x_keras <- array_reshape(test_x, c(nrow(test_x), 784))

Melakukan scaling dengan cara membagi nilai setiap pixel dengan nilai maksimumnya, yaitu 255. Tujuan dari scaling ini adalah untuk mengurangi cost komputasi.

train_x_keras <- train_x_keras/255
test_x_keras <- test_x_keras/255

Merubah label jadi categorical (one-hot encoding).

train_y_keras <- to_categorical(train_y, 10)

Pemodelan

Berikut ini tahapan untuk membuat model.
1. Inisialisasi model awal dengan fungsi keras_model_sequential()

model <- keras_model_sequential()

2. Membuat arsitektur Neural Network.
Menggunakan fungsi layer_dense(), yang artinya layer yang digunakan adalah fully connected layer.
Berikut ini parameter yang ada dalam layer_dense():
1. units = banyaknya neuron dalan 1 layer
2. activation = activation function
relu -> biasa digunakan di hidden layer
softmax -> biasa digunakan di output layer (kasus multiclass)
sigmoid -> biasa digunakan di output layer (kasus binomial)
linear -> biasa digunakan di output layer (kasus regresi)
3. input_shape = banyaknya neuron di input layer, parameter ini wajib pada layer_dense pertama.

layer_dense terakhir menunjukkan output layer.
jumlah units pada layer terakhir harus sama dengan jumlah kelas.

model %>%  
  layer_dense(units = 126, activation = "relu", input_shape = ncol(train_x)) %>% 
  layer_dense(units = 64, activation = "relu") %>%
  layer_dense(units = 10, activation = "softmax")

Berikut ini adalah summary dari model. Parameter pada summary menunjukkan banyaknya weight dan bias pada layer tersebut.

summary(model)
## ___________________________________________________________________________
## Layer (type)                     Output Shape                  Param #     
## ===========================================================================
## dense (Dense)                    (None, 126)                   98910       
## ___________________________________________________________________________
## dense_1 (Dense)                  (None, 64)                    8128        
## ___________________________________________________________________________
## dense_2 (Dense)                  (None, 10)                    650         
## ===========================================================================
## Total params: 107,688
## Trainable params: 107,688
## Non-trainable params: 0
## ___________________________________________________________________________

3. Compile
Pada fungsi compile(), ada beberapa parameter yang harus diisi:
1. loss, menunjukkan cost function atau jenis error pada arsitektur neural network.
Beberapa nilai lost dan penggunaanya seperti berikut:
- categorical_crossentropy = classification multiclass
- binary_crossentropy = classification binomial
- mean_squared_error = regression

  1. optimizer, adalah cara model melakukan backpropagation.
    Ada banyak metode dalam melakukan backpropagation ini, diantaranya:
    - optimizer_sgd()
    - optimizer_adam()
    Parameter ini dapat di tunning (bisa diganti jenis optimizer untuk mendapatkan nilai accuracy yang lebih baik).

  2. metrics, adalah nilai evaluasi model yang ingin diamati.

model %>% 
  keras::compile(loss ="categorical_crossentropy",
                 optimizer = optimizer_adam(),
                 metrics = c("accuracy"))

4. Fit
Funsi fit() bertujuan untuk menjalankan model. Parameter didalamnya yaitu:
- data train x
- data test x
- epoch = banyaknya perulangan model
- batch_size = banyaknya data dalam 1 kali masuk ke model

model %>% 
  fit(train_x_keras, train_y_keras, epoch = 8, batch_size = 120)

5. Prediksi (predict())
Melakukan prediksi terhadap data test.
Berikut ini jenis - jenis prediksi:
1. predict_classes(), akan mengembalikan / menghasilkan kelas prediksinya.
2. predict_proba(), akan mengembalikan / menghasilkan nilai peluang (probability).

pred <- keras::predict_classes(object = model, test_x_keras)

6. Evaluasi Model

caret::confusionMatrix(as.factor(pred), as.factor(test_y))
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction    0    1    2    3    4    5    6    7    8    9
##          0  986    5    9   45    0    1  144    0    7    0
##          1    1 1223    1    7    2    1    1    0    1    0
##          2   28    1  982   12  101    0  163    0   13    0
##          3   24   19    8 1055   26    2   18    0    6    0
##          4    4    2  155   52 1069    0  179    0   11    0
##          5    1    0    0    0    0 1146    0   33    2   11
##          6  130    2   28   16   32    0  646    0   11    0
##          7    0    0    0    0    0   27    0 1122    2   38
##          8    9    0    3    1    3    3    8    1 1195    3
##          9    0    0    0    0    0   12    0   28    0 1123
## 
## Overall Statistics
##                                                
##                Accuracy : 0.8789               
##                  95% CI : (0.8729, 0.8847)     
##     No Information Rate : 0.1043               
##     P-Value [Acc > NIR] : < 0.00000000000000022
##                                                
##                   Kappa : 0.8654               
##                                                
##  Mcnemar's Test P-Value : NA                   
## 
## Statistics by Class:
## 
##                      Class: 0 Class: 1 Class: 2 Class: 3 Class: 4 Class: 5
## Sensitivity           0.83347   0.9768  0.82799  0.88805  0.86699  0.96141
## Specificity           0.98049   0.9987  0.97059  0.99047  0.96257  0.99565
## Pos Pred Value        0.82373   0.9887  0.75538  0.91105  0.72622  0.96060
## Neg Pred Value        0.98176   0.9973  0.98093  0.98773  0.98442  0.99574
## Prevalence            0.09858   0.1043  0.09883  0.09900  0.10275  0.09933
## Detection Rate        0.08217   0.1019  0.08183  0.08792  0.08908  0.09550
## Detection Prevalence  0.09975   0.1031  0.10833  0.09650  0.12267  0.09942
## Balanced Accuracy     0.90698   0.9878  0.89929  0.93926  0.91478  0.97853
##                      Class: 6 Class: 7 Class: 8 Class: 9
## Sensitivity           0.55738  0.94764  0.95753  0.95574
## Specificity           0.97980  0.99381  0.99712  0.99630
## Pos Pred Value        0.74682  0.94365  0.97471  0.96561
## Neg Pred Value        0.95393  0.99427  0.99508  0.99520
## Prevalence            0.09658  0.09867  0.10400  0.09792
## Detection Rate        0.05383  0.09350  0.09958  0.09358
## Detection Prevalence  0.07208  0.09908  0.10217  0.09692
## Balanced Accuracy     0.76859  0.97072  0.97732  0.97602

Tuning parameter yang dilakukan untuk mendapatkan model terbaik adalah dengan mengganti optimizer dan epoch.
1. Model I, menggunakan optimizer_sgd dan epoch = 10.
Model ini menghasilkan accuracy = 84.03 pada data test, sedangkan accuracy = 84.12 pada data train.
2. Model II, menggunakan optimizer_adam dan epoch = 8.
Model ini menghasilkan accuracy = 88.4% pada data test, sedangkan accuracy = 90.02 pada data train.
epoch = 8 dipilih karena grafik accuracy untuk data train mencapai nilai tertinggi di titik tersebut.
Jadi model terbaik adalah Model II.