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.
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)
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
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).
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.