I
Kata Pengantar
Puji dan syukur diucapkan kepada Allah SWT atas selesainya buku yang berjudul Seri Pemrograman: Supervise Learning dengan R.Metode atau teknik matematika, statistik atau machine learning yang dibahas pada buku ini adalah telah umum digunakan. Sehingga buku ini tidak akan membahas tentang konsep metode dan teknik tersebut. Buku hanya fokus membahas implementasi setiap metode dan teknik pada lingkungan R.
Topik machine learning yang dibahas pada buku ini hanya fokus kepada supervised learning pada umumnya dan klasifikasi pada khususnya. Setiap teknik klasifikasi yang dibahas disertai contoh masalah dan penyelesaian langkah demi langkah sehingga dapat diikuti oleh pembaca dengan mudah.
Selain membahas teknik-teknik supervised learning - klasifikasi, buku ini juga membahas teknik yang digunakan untuk mengukur kinerja teknik klasifikasi yang digunakan. Sehingga pembaca dapat memiliki pengetahuan yang lengkap untuk menyelesaikan masalah klasifikasi pada lingkungan R.
Akhir kata, selamat membaca dan semoga buku ini bermanfaat bagi para pemula untuk mempelajari machine learning pada umumnya dan supervised learning - klasifikasi dengan R pada khususnya. Kritik dan saran akan sangat berarti dan dapat ditujukan via email.
Banjarmasin, Desember 2016
M Reza Faisal ([email protected])
II
Daftar Isi
Kata Pengantar ... I
Daftar Isi ... II
Daftar Gambar ... VII
1 Pendahuluan ...12
Bagaimana Manusia Belajar Mengenali? ... 12
Kenapa Komputer Perlu Mempunyai Kemampuan Belajar Seperti
Manusia? ... 12
Machine Learning ... 13
Domain Model ... 13 Definisi ... 14 Istilah-Istilah ... 14 Tipe ... 15 Langkah-Langkah Implementasi ... 17Machine Learning & Data Mining ... 17
2 Pengantar Pemrograman R ...18
Installasi ... 18
Comprehensive R Archive Network (CRAN)... 18
Microsoft R Archive Network (MRAN) ... 23
Tool Pemrograman ... 27
RGui ... 27
RStudio ... 30
R Tools for Visual Studio ... 34
3 Fungsi-Fungsi Dasar R ...37
Package ... 37
Installasi Package ... 37
Memuat Package ... 38
Working Directory ... 38
Mendapatkan Working Directory ... 38
Menentukan Working Directory ... 39
Dataset ... 39
III
write.csv() ... 40
write.table() ... 40
Membaca File Text ... 41
read.csv() ... 41
read.table() ... 41
Membaca File Excel... 41
Akses Database ... 42
Akses Database MySQL ... 42
Akses Database SQL Server ... 42
Menampilkan Data ... 43
head() ... 43 tail() ... 44 View() ... 44 obyek$rowName ... 45Memfilter Data ... 46
obyek[,x:y] ... 46 obyek[x:y,] ... 46 obyek[x1:y1, x2:y2]... 46 obyek[which(), ] ... 46Menggabung Data ... 47
rbind() ... 47 cbind() ... 47Explorasi Data ... 48
dim()... 48 names() ... 48 str() ... 48 table() ... 48 summary() ... 49Grafik ... 49
plot() ... 49 scatterplot3() ... 51 plot3d() ... 52 hist() ... 53 density() ... 54 pie() ... 54IV
barplot() ... 55
boxplot() ... 56
par() ... 57
Visualisasi Data ... 58
Principal Component Analysis (PCA) ... 58
Visualisasi 2D ... 59 Visualisasi 3D ... 61
Help... 61
4 Pengantar Klasifikasi ...63
Definisi ... 63
Data 63
Langkah-Langkah Pengembangan ... 66
Pengenalan Data ... 66 Pembagian Data ... 66Implementasi Algoritma Klasifikasi ... 68
Pengukuran Kinerja Algoritma Klasifikasi ... 69
5 Pengenalan & Pembagian Data ...75
Pengenalan Data ... 75
Dataset Iris ... 75
Dataset Titanic ... 79
Dataset Yeast... 81
Pembagian Data ... 84
Persiapan Working Directory ... 85
Data untuk Klasifikasi Binary Class ... 85
Data untuk Klasifikasi Multi Class ... 88
6 Rancangan Aplikasi Klasifikasi ...89
Apa Langkah Selanjutnya? ... 89
Rancangan Aplikasi ... 89
Rancangan Aplikasi 1 ... 89 Rancangan Aplikasi 2 ... 90 Rancangan Aplikasi 3 ... 917 K-Nearest Neighbors (KNN) ...93
Cara Kerja ... 93
Persiapan ... 93
V
Sintaks ... 94
Implementasi ... 94
Aplikasi 1 ... 94 Aplikasi 2 ... 96 Aplikasi 3 ... 101Catatan ... 107
8 Naïve Bayes ...108
Cara Kerja ... 108
Persiapan ... 111
Sintaks ... 111
Implementasi ... 113
Aplikasi 1 ... 113 Aplikasi 2 ... 115 Aplikasi 3 ... 117Catatan ... 120
9 Support Vector Machine (SVM) ...121
Cara Kerja ... 121
Persiapan ... 122
Sintaks ... 122
Implementasi ... 123
Aplikasi 1 ... 124 Aplikasi 2 ... 125 Aplikasi 3 ... 128Catatan ... 132
10 Decision Tree ...133
Cara Kerja ... 133
Persiapan ... 138
Sintaks ... 138
Implementasi ... 138
Aplikasi 1 ... 138 Aplikasi 2 ... 141 Aplikasi 3 ... 144Catatan ... 148
VI
11 Klasifikasi Kelas Tidak Seimbang ...149
Definisi & Efek Kelas Tidak Seimbang ... 149
KNN ... 150
Naïve Bayes ... 151
SVM... 152
Decision Tree ... 153
Solusi Masalah ... 154
Dataset Class Tidak Seimbang ... 155
Solusi Pendekatan Data ... 156
Undersampling ... 156
Oversampling ... 162
Gabungan Undersampling & Oversampling ... 166
Solusi Pendekatan Algoritma ... 171
Bootstrap Aggregating (Bagging) ... 171
Boosting ... 172
Stacking ... 172
Catatan ... 173
12 Referensi ...174
VII
Daftar Gambar
Gambar 1. Data, metode statistik dan kekuatan komputasi computer (sumber: MachineLearning with R). ... 14
Gambar 2. Dataset iris. ... 15
Gambar 3. Halaman download R-3.3.2 for Windows. ... 18
Gambar 4. Window Select Setup Language. ... 19
Gambar 5. Window Setup - Welcome. ... 19
Gambar 6. Window Setup - Informasi lisensi. ... 19
Gambar 7. Windows Setup - Lokasi folder installasi... 20
Gambar 8. Window Setup - Pemilihan komponen. ... 20
Gambar 9. Window Setup - Pemilihan opsi startup. ... 21
Gambar 10. Window Setup - Memilih lokasi folder Start Menu. ... 21
Gambar 11. Window Setup - Pemilihan task tambahan. ... 22
Gambar 12. Windows Setup - Proses installasi. ... 22
Gambar 13. Window informasi akhir proses installasi. ... 23
Gambar 14. Window Microsoft R Open 3.3.1 Setup – Welcome. ... 23
Gambar 15. Window Microsoft R Open 3.3.1 Setup – Informasi lisensi. ... 24
Gambar 16. Window Microsoft R Open 3.3.1 Setup – Install Math Kernel Library. ... 24
Gambar 17. Window Microsoft R Open 3.3.1 – Lisensi Math Kernel Library. ... 25
Gambar 18. Window Microsoft R Open 3.3.1 Setup – Folder installasi. ... 25
Gambar 19. Window Microsoft R Open 3.3.1 Setup – Memulai installasi. ... 26
Gambar 20. Window Microsoft R Open 3.3.1 Setup – proses installasi selesai. ... 26
Gambar 21. RGui. ... 27
Gambar 22. R Console. ... 28
Gambar 23. Window R Editor. ... 28
Gambar 24. Menyimpan file script R. ... 29
Gambar 25. Eksekusi file script R. ... 29
Gambar 26. Window R Graphics. ... 30
Gambar 27. Window RStudio Setup - Welcome. ... 30
Gambar 28. Window RStudio Setup - Lokasi installasi. ... 31
Gambar 29. Window RStudio Setup - Memilih lokasi folder Start Menu. ... 31
Gambar 30. Window RStudio Setup - proses installasi. ... 32
Gambar 31. Window RStudio Setup - detail proses installasi. ... 32
VIII
Gambar 33. Antarmuka RStudio. ... 33
Gambar 34. Fitur auto complete kode. ... 34
Gambar 35. Window Plots untuk menampilkan grafik. ... 34
Gambar 36. Installasi R Tool 0.5 for Visual Studio 2015. ... 35
Gambar 37. Proses installasi R Tool 0.5 for Visual Studio. ... 35
Gambar 38. Proses installasi R Tool 0.5 for Visual Studio 2015 selesai. ... 36
Gambar 39. Antarmuka R Tool for Visual Studio. ... 36
Gambar 40. Proses installasi package pada R Tool for Visual Studio 2015. ... 37
Gambar 41. Proses installasi package pada RStudio. ... 38
Gambar 42. Daftar dataset pada RStudio. ... 39
Gambar 43. Daftar dataset pada R Tools for Visual Studio. ... 40
Gambar 44. Output fungsi View() pada R Tool for Visual Studio. ... 44
Gambar 45. Output fungsi View() pada RStudio. ... 45
Gambar 46. Output fungsi View() pada RGui. ... 45
Gambar 47. Grafik plot(iris[,1], iris[,2]) ... 50
Gambar 48. Grafik plot(cars). ... 51
Gambar 49. Grafik plot(iris). ... 51
Gambar 50. Grafik scatterplot3d(). ... 52
Gambar 51. Grafik plot3d(). ... 53
Gambar 52. Grafik hist(mtcars[,1]) ... 54
Gambar 53. Grafik density. ... 54
Gambar 54. Grafik pie() ... 55
Gambar 55. Grafik pie dataset iris. ... 55
Gambar 56. Grafik barplot vertical. ... 56
Gambar 57. Grafik barplot horizontal... 56
Gambar 58. Grafik fungsi boxplot(). ... 56
Gambar 59. Fungsi par() untuk membuat 2 grafik dalam 1 kolom. ... 57
Gambar 60. Fungsi par() untuk membuat 3 grafik dalam 1 kolom. ... 57
Gambar 61. Fungsi par() untuk membuat 4 grafik dalam 2 baris dan 2 kolom. ... 58
Gambar 62. Grafik visualisasi 2D dengan fungsi biplot(). ... 60
Gambar 63. Grafik 2 dimensi fungsi pca2d(). ... 60
Gambar 64. Grafik 3 dimensi fungsi pca3d() ... 61
Gambar 65. Output fungsi help() pada R Tools for Visual Studio. ... 62
Gambar 66. Output fungsi help() pada RStudio. ... 62
IX
Gambar 68. Data dibagi menjadi data training dan testing. ... 67
Gambar 69. Membagi data menjadi 2. ... 67
Gambar 70. Data dibagi 5 bagian. ... 67
Gambar 71. Data proses pertama. ... 67
Gambar 72. Data proses kedua. ... 68
Gambar 73. Data proses ketiga. ... 68
Gambar 74. Data proses keempat. ... 68
Gambar 75. Data proses keempat. ... 68
Gambar 76. 5-fold cross validation data iris. ... 68
Gambar 77. 5-fold cross validation data contoh. ... 68
Gambar 78. Kasus klasifikasi binary class. ... 70
Gambar 79. Precision & recall. ... 72
Gambar 80. Kurva Receiver Operation Characteristics (ROC) ... 73
Gambar 81. Dataset iris ditampilkan dengan fungsi View(). ... 75
Gambar 82. Sebaran data iris dalam 2 dimensi. ... 77
Gambar 83. Sebaran data iris dalam 3 dimensi. ... 77
Gambar 84. Sebaran data obyek iris2class pada ruang 2 dimensi. ... 78
Gambar 85. Sebaran data obyek iris2class pada ruang 3 dimensi. ... 78
Gambar 86. Dataset Titanic. ... 80
Gambar 87. Web UCI Machine Learning Repository. ... 81
Gambar 88. Isi file yeast.data. ... 81
Gambar 89. Output fungsi View(yeast). ... 82
Gambar 90. Sebaran data yeast pada ruang 2 dimensi... 84
Gambar 91. Sebaran data yeast pada ruang 3 dimensi... 84
Gambar 92. Pembagian dataset iris2class. ... 85
Gambar 93. Output dari kode program iris2class.5fold.crossvalidation.R ... 86
Gambar 94. Pembagian data titanic. ... 86
Gambar 95. Output dari kode program titanic.kfold.crossvalidation.R ... 87
Gambar 96. Pembagian data iris. ... 88
Gambar 97. Alur proses aplikasi 1. ... 90
Gambar 98. Alur proses aplikasi 2. ... 90
Gambar 99. Alur proses aplikasi 3. ... 91
Gambar 100. Cara kerja algoritma K-Nearest Neighbors (KNN). ... 93
Gambar 101. Grafik ROC Aplikasi 2 KNN. ... 100
X
Gambar 103. Grafik ROC Aplikasi 2 Naïve Bayes. ... 117
Gambar 104. Grafik ROC gabungan Aplikasi 3 Naïve Bayes. ... 119
Gambar 105. Sebaran instance class Women & Men. ... 121
Gambar 106. Hyperplane pada SVM. ... 121
Gambar 107. Hyperplane optimal. ... 122
Gambar 108. Kurva ROC kasus klasifikasi Titanic dengan SVM. ... 127
Gambar 109. Grafik ROC kasus klasifikasi Iris dengan SVM. ... 128
Gambar 110. Kurva ROC kasus dataset Titanic pada aplikasi 3. ... 129
Gambar 111. Kurva ROC kasus dataset Irispada aplikasi 3. ... 130
Gambar 112. Kurva ROC kasus dataset Iris pada kasus multiclass classification. ... 131
Gambar 113. Decision tree (pohon keputusan) data cuaca. ... 133
Gambar 114. Pohon tahap 1. ... 135
Gambar 115. Pohon tahap 2. ... 136
Gambar 116. Pohon tahap 3. ... 136
Gambar 117. Pohon tahap akhir. ... 137
Gambar 118. Decision tree dataset Iris. ... 139
Gambar 119. Decision tree dataset Titanic. ... 141
Gambar 120. Kurva ROC aplikasi 2 fungsi J48() dataset Iris. ... 143
Gambar 121. Kurva ROC aplikasi 2 fungsi J48() kasus Titanic. ... 144
Gambar 122. Kurva ROC aplikasi 3 dengan fungsi J48() dan cross validation kasus dataset Iris. ... 145
Gambar 123. Kurva ROC aplikasi 3 dengan fungsi J48() dan cross validation kasus dataset Titanic. ... 146
Gambar 124. Decision tree dataset iris 3 class. ... 147
Gambar 125. Sebaran dataset hacide... 150
Gambar 126. Kurva ROC klasifikasi dataset hacide dengan KNN. ... 151
Gambar 127. Kurva ROC klasifikasi dataset hacide dengan Naïve Bayes. ... 152
Gambar 128. Kurva ROC klasifikasi dataset hacide dengan SVM. ... 153
Gambar 129. Kurva ROC klasifikasi dataset hacide dengan Decision Tree. ... 154
Gambar 130. Kurva ROC untuk kasus klasifikasi dengan KNN dan undersampling. ... 157
Gambar 131. Kurva ROC untuk kasus klasifikasi dengan Naïve Bayes dan undersampling.159 Gambar 132. Kurva ROC untuk kasus klasifikasi dengan SVM dan undersampling. ... 160
Gambar 133. Kurva ROC untuk kasus klasifikasi dengan decision tree dan undersampling 161 Gambar 134. Kurva ROC untuk kasus klasifikasi dengan KNN dan oversampling. ... 163
Gambar 135. Kurva ROC untuk kasus klasifikasi dengan Naïve Bayes dan oversampling. .. 164
XI
Gambar 137. Kurva ROC untuk kasus klasifikasi dengan decision tree dan oversampling. . 166
Gambar 138. Kurva ROC untuk kasus klasifikasi dengan KNN dan gabungan oversampling dan undersampling. ... 167
Gambar 139. Kurva ROC untuk kasus klasifikasi dengan Naïve Bayes dan gabungan oversampling dan undersampling. ... 168
Gambar 140. Kurva ROC untuk kasus klasifikasi dengan SVM dan gabungan oversampling dan undersampling. ... 169
Gambar 141. Kurva ROC untuk kasus klasifikasi dengan decision tree dan gabungan oversampling dan undersampling. ... 170
Gambar 142. Skema teknik bagging. ... 171
Gambar 143. Skema teknik boosting. ... 172
12
1
Pendahuluan
Bagaimana Manusia Belajar Mengenali?
Anak kecil mempunyai keingintahuan yang sangat tinggi. Saat seorang anak kecil dan orang tuanya duduk di depan rumah maka anak kecil tersebut mungkin akan bertanya tentang apa saja yang lewat di depan rumahnya.
Saat mobil lewat, sang anak bertanya: “Itu apa?”. “Itu mobil nak”, jawab sang orang tua. Pertanyaan serupa mungkin diulang-ulang oleh sang anak sampai puluhan mobil lewat di depan rumahnya. Sampai suatu saat hal itu tidak akan ditanyakan lagi oleh sang anak. Karena sang anak telah mengenal ciri-ciri bermacam-macam mobil yang telah lewat di depan rumahnya.
Suatu saat mungkin sang anak akan memiliki pertanyaan lain. Tetapi pertanyaannya masih berkaitan tentang mobil. Sang anak bertanya: “Itu mobil ya?”. Sang orang tua akan menjawab: “Iya nak” ketika yang lewat adalah mobil. Dan menjawab: “Bukan nak” ketika yang lewat bukan mobil.
Hal yang sama mungkin akan terjadi lagi ketika sang anak melihat sepeda motor. Dan kembali sang anak akan berhenti bertanya ketika sang anak telah mengenal ciri-ciri bermacam-macam sepeda motor yang dia lihat. Ketika proses belajar pengenalan mobil dan sepeda motor selesai, maka sang anak akan dengan gampang mengklasifikasikan mana mobil dan sepeda motor.
Cerita di atas adalah contoh sederhana supervised learning. Karena data tentang setiap mobil memiliki labelnya. Jika data tentang setiap mobil adalah setiap pertanyaan tentang mobil, maka label adalah jawaban sang orang tua.
Kenapa Komputer Perlu Mempunyai
Kemampuan Belajar Seperti Manusia?
Tetapi masalah yang dihadapi manusia tidak hanya masalah menentukan dan membedakan sepeda motor dan mobil saja. Banyak hal-hal serupa yang ingin diketahui oleh manusia sebagai contoh adalah bagaimana membedakan email spam dan email bukan spam. Jika manusia belajar mengidentifikasi email spam dan bukan seperti bagaimana sang anak di atas belajar, maka dengan mudah dapat membedakan email spam dan bukan.
Tetapi masalahnya tidak mungkin untuk mempekerjakan manusia untuk memfilter email spam yang jumlahnya jutaan bahkan milyaran lebih email pada Yahoo! Mail atau Gmail. Karena manusia mempunyai kebatasan dalam hal kecepatan melakukan menghadapi jumlah yang banyak, selain itu keterbatasan stamina untuk bekerja dalam waktu yang lama atau tanpa istirahat.
Selain masalah filter email spam juga ada masalah lain seperti: 1. Menentukan penipuan transaksi di bank.
13 2. Pada bidang bioinformatika terdapat masalah seperti klasifikasi kanker, DNA,
genome dan lain-lain.
3. Klasifikasi lahan pada citra GIS. 4. Dan lain-lain.
Machine Learning
Domain Model
Pada sub bab pertama telah disebutkan bagaimana anak mengenali sesuatu. Manusia dapat melakukan hal karena otak mampu membuat model berdasarkan masalah yang dihadapi yang disebut domain model. Dengan model tersebut maka dapat dilakukan proses seperti:
1. Klasifikasi. 2. Prediksi. 3. Clustering. 4. Explanation.
Pada sub bab pertama terdapat dua domain yaitu “sepeda motor atau mobil” dan “email spam atau bukan”. Untuk membuat domain model dapat digunakan dua pendekatan yaitu:
1. Pendekatan basis pengetahuan (knowledge-based)
Pendekatan ini dapat dilakukan jika ada seorang ahli di suatu domain yang memberikan pengetahuan eksplisit untuk mengidentifikasi sesuatu. Seorang ahli pada suatu domain lebih dikenal sebagai expert system. Jika pendekatan ini diimplementasikan pada perangkat lunak maka pembuat perangkat akan menjadi pemberi pengetahuan secara eksplisit tentang domain model.
2. Pendekatan data-driven
Pendekatan ini memanfaatkan data yang telah ada untuk membangun konsep model secara implisit sehingga dapat digunakan untuk mengidentifikasi sesuatu.
Pada buku ini akan berfokus pada pendekatan data-driven. Untuk membuat data menjadi domain model agar didapat informasi yang dapat digunakan untuk melakukan aksi maka digunakan metode-metode yang telah dikenal pada bidang statistik. Proses data dengan metode-metode statistik tersebut dibantu dengan bantuan kekuatan komputasi yang dimiliki oleh komputer.
14
Gambar 1. Data, metode statistik dan kekuatan komputasi computer (sumber: Machine Learning with R).
Karena menggunakan metode statistik maka proses di atas disebut statistical learning, tetapi lebih populer atau lebih dikenal dengan istilah machine learning.
Definisi
Mechine learning adalah bidang yang mempelajari pengembangan algoritma komputer untuk mengubah data menjadi aksi yang cerdas (Machine Learning with R). atau secara singkat dapat juga diartikan sebagai proses mengubah data menjadi informasi (Machine Learning in Action).
Selain machine learning, juga sering didengar istilah data mining yang merupakan saudara kandungnya. Tetapi ada pendapat yang menyatakan tumpang tinding machine learning dan data mining dimana secara virtual pada seluruh data mining pasti melibatkan penggunaan machine learning tetapi tidak seluruh machine learning melibatkan data mining. Sebagai contoh machine learning digunakan untuk melakukan proses data mining data lalu lintas kendaraan bermotor untuk mendapatkan pola yang berhubungan dengan tingkat kecelakaan. Kemudian bedakan dengan bagaimana proses pembelajaran komputer untuk mengendarai mobil dimana hal tersebut murni machine learning tanpa ada data mining. Maka dapat ditarik kesimpulan singkat yaitu:
1. Machine learning berfokus pada bagaimana pembelajaran komputer menggunakan komputer untuk memecahkan masalah.
2. Data mining berfokus pada bagaimana pembelajaran komputer mengindentifikasi pola yang akan digunakan manusia untuk memecahkan masalah.
Istilah-Istilah
Sebelum membahas tentang machine learning lebih dalam, maka pada sub bab ini akan disebutkan dan diterangkan terminologi atau istilah-istilah yang umum digunakan.
Dataset, Instance & Feature
Dengan menggunakan pendekatan data-driven maka pembelajaran dapat dilakukan jika telah dimiliki data atau sering disebut sebagai dataset. Di bawah ini ditampilkan dataset iris yang terdiri atas 150 baris atau record yang akan lebih dikenal dengan istilah instance.
15 …
Gambar 2. Dataset iris.
Pada dataset di atas dapat dilihat 5 kolom yaitu: 1. Sepal.Length.
2. Sepal.Width. 3. Petal.Length. 4. Petal.Width. 5. Species.
Istilah yang digunakan untuk kolom adalah feature, artinya dataset di atas memiliki 5 feature. Pada beberapa algoritma, feature dapat dibedakan menjadi dua yaitu: feature dan target variable (target feature). Sebagai contoh jika dataset di atas diproses dengan algoritma klasifikasi maka target variable (target feature) adalah Species sedangkan sisanya adalah feature.
Training Set & Test Set
Dataset akan digunakan pada proses pembelajaran algoritma paling tidak terdapat dua tahap yang harus dilakukan, yaitu tahap training dan pengujian (test). Jika dimiliki 150 instance pada dataset maka harus dibagi menjadi dua. Data yang digunakan pada tahap training akan disebut dengan istilah training set. Sedangkan yang digunakan pada tahap pengujian disebut test set.
Untuk teknik pembagian dataset menjadi training dan test set akan diterangkan pada bab yang lain.
Tipe
Machine learning dapat dibedakan menjadi dua tipe. Tipe yang dimaksudkan di sini adalah tipe algoritma yaitu:
1. Supervised learning. 2. Unsupervised learning.
Supervised Learning
Pembelajaran pada tipe ini telah diketahui apa yang akan diprediksi atau target variablenya. Sehingga tujuan membangun algoritma sudah jelas hal apa yang akan diprediksi. Oleh karena itu model yang dihasilkan dari tipe ini adalah model prediksi.
16 Model prediksi digunakan untuk melakukan proses prediksi target variable (target feature) berdasarkan feature-feature lain pada suatu dataset. Algoritma pembelajaran yang dibangun mencoba untuk menemukan dan memodelkan hubungan antara target variable (target feature) tersebut dengan feature-feature lainnya.
Klasifikasi adalah contoh task mechine learning tipe supervised untuk melakukan prediksi. Beberapa contoh penerapan klasifikasi adalah sebagai berikut:
1. Penentuan email adalah email spam. 2. Penentuan seseorang mengidap kanker. 3. Penentuan kemenangan suatu tim sepakbola.
Pada klasifikasi, target feature yang akan diprediksi adalah feature terkategori yang dikenal dengan istilah kelas (class) dan dapat dibagi menjadi kategori yang disebut dengan istilah level.
Kasus klasifikasi dapat dibedakan berdasarkan tipe masalah yang umumnya ditemui, yaitu: 1. Klasifikasi 1 class.
2. Klasifikasi 2 class (binary).
3. Klasifikasi multiclass, terdapat lebih dari 2 class.
Saat ini telah banyak teknik/metode klasifikasi yang dikembangkan untuk menyelesaikan masalah klasifikasi 2 class. Sehingga untuk menyelesaikan masalah klasifikasi multiclass dapat digunakan kombinasi teknik/metode yang biasa digunakan untuk menyelesaikan klasifikasi 2 class
Supervised learning juga dapat digunakan untuk memprediksi data numerik. Task seperti ini dikenal dengan istilah regresi.
Berikut ini adalah beberapa nama algoritma tipe supervised leaning yaitu: 1. K-Nearest Neighbors.
2. Naïve Bayes.
3. Suport Vector Machine. 4. Decision Trees.
5. Linear Regression. 6. Neural Network.
Unsupervised Learning
Unsupervised learning merupakan kebalikan dari tipe sebelumnya dimana tidak terdapat target variable (target feature) pada dataset. Model yang dihasilkan dari tipe ini adalah descriptive model.
Salah satu task descriptive model untuk menemukan pola yang bisa mengidentifikasi asosiasi pada dataset. Contoh implementasinya dapat dilakukan pada menemukan pola pada proses analisis barang yang dibeli oleh pembeli pada suatu super market atau mini market. Tujuan dari analisis ini adalah untuk mengetahui barang-barang yang sering dibeli bersama-sama. Sebagai contoh jika pembeli membeli roti maka otomatis juga membeli keju dan susu kental manis. Atau jika pembeli membeli sabun cuci maka juga membeli pengharum pakaian. Dengan informasi pola tersebut maka pemilik super market dapat menggunakannya untuk membuat iklan diskon untuk kelompok barang tersebut, atau pemilik juga dapat membuat agar tata letak barang-barang tersebut dibuat berdekatan.
17 Task descriptive model yang lain adalah mengelompokkan dataset ke dalam kelompok-kelompok yang homogen yang disebut dengan istilah clustering. Kelompok-kelompok-kelompok homogen yang dihasilkan dari clustering perlu bantuan manusia untuk melakukan intepretasi hasil tersebut untuk menentukan atau mendeskripsikan apa isi dari kelompok-kelompok tersebut.
Contoh unsupervised learning adalah: 1. Association rule.
2. K-Mean clustering.
Langkah-Langkah Implementasi
Berikut ini adalah langkah-langkah yang digunakan untuk melakukan implementasi machine learning untuk menyelesaikan kasus yang dihadapi. Terdapat 5 tahap yang dapat diterapkan pada pada setiap algoritma machine learning, yaitu:
1. Pengumpulan data.
2. Eksplorasi dan persiapan data, langkah eksplorasi data bertujuan untuk lebih mengenal data yang digunakan. Sedangkan langkah persiapan data bertujuan untuk meningkatkan kualitas data seperti menghilangkan data yang tidak diperlukan. Karena kualitas model yang dihasilkan sangat bergantung pada data yang digunakan.
3. Training/pelatihan model, langkah pembangunan model. Pada langkah ini digunakan training set sebagai input data.
4. Evaluasi model, langkah evaluasi dilakukan untuk mengetahui performansi dari model yang dihasilkan maka model yang dihasilkan pada tahap sebelumnya akan diuji dengan menggunakan test set sebagai input data.
5. Perbaikan model, langkah ini diperlukan jika diinginkan performansi yang lebih baik. Ada beberapa cara yang dapat dilakukan untuk itu mendapatkan performansi yang lebih baik, diantaranya adalah mengganti tipe learning atau algoritma yang digunakan. Atau dengan cara melakukan perbaikan pada data yang digunakan baik dengan cara menambah data, mengurangi feature pada dataset dan lain-lain.
Machine Learning & Data Mining
Berikut ini adalah penjelasan secara singkat keterkaitan atau hubungan antara machine learning dan data mining.
Secara singkat, data mining menggunakan metode statistik untuk mencari pola tersembunyi pada database agar dapat menjelaskan suatu fenomena. Sedangkan machine learning menggunakan teknik-teknik data mining dan algoritma pembelajaran lainnya untuk membuat model dari hal-hal yang terjadi pada data untuk memprediksi kejadian selanjutnya. Selanjutnya machine learning akan digunakan pada bidang artificial intelligence untuk membuat model yang digunakan untuk pengenalan kebiasaan dan prediksi aksi sebagai contoh implementasi pada game atau mobil pintar yang bisa berjalan sendiri.
18
2
Pengantar Pemrograman R
R bukan saja bahasa tetapi juga lingkungan/environment untuk komputasi statistik dan grafik. R merupakan project GNU yang dikembangkan oleh Bell Laboratories (sebelumnya AT&T, sekarang Lucent Technologies). Team pengembang R adalah John Chamber dan teman-temannya.R menyediakan berbagai macam tool statistik dari linier dan memodelan non linier, uji statistik klasik, analisis time-series, klasifikasi, clustering dan lain-lain. R juga menyediakan tool teknik grafis yang bertujuan untuk menampilkan data yang telah diolah secara visual dalam bentuk grafik.
R merupakan project open-source yang memungkinkan banyak pihak untuk memberikan kontribusi dalam proses pengembangan.
Installasi
Comprehensive R Archive Network (CRAN)
Installer atau source code R tersedia dalam beberapa platform yaitu Windows, Mac OS X dan Linux. Pada buku ini digunakan installer yang diunduh dari link berikut ini https://cran.r-project.org/bin/windows/base/.
Gambar 3. Halaman download R-3.3.2 for Windows.
Klik link “Download R.3.3.2 for Windows. Nama file installernya adalah R.3.3.2-win.exe. File ini berukuran sekitar 70MB.
Setelah proses download selesai, klik double pada file R.3.3.2-win.exe. Langkah pertama adalah memilih bahasa yang digunakan.
19
Gambar 4. Window Select Setup Language.
Klik tombol OK, kemudian akan ditampilkan window yang berisi ucapan selamat datang seperti gambar di bawah ini.
Gambar 5. Window Setup - Welcome.
Klik tombol Next, kemudian akan ditampilkan informasi penting tentang lisensi.
20 Klik tombol Next, kemudian akan ditampilkan window untuk memilih folder installasi. Klik Browse jika ingin mengubah lokasi folder installasi.
Gambar 7. Windows Setup - Lokasi folder installasi.
Klik Next, kemudian akan window pemilihan komponen untuk diinstall. Centang 32-bit Files jika menggunakan komputer dengan processor 32-bit. Atau centang 64-bit Files jika menggunakan komputer dengan processor 64-bit.
Gambar 8. Window Setup - Pemilihan komponen.
Klik Next, kemudian akan ditampilkan window untuk memilih opsi startup. Untuk memudahkan pilih No agar menggunakan opsi default startup.
21
Gambar 9. Window Setup - Pemilihan opsi startup.
Kemudian akan ditampilkan window untuk memilih lokasi folder Start Menu. Klik tombol Browse jika ingin menganti lokasi folder Start Menu.
Gambar 10. Window Setup - Memilih lokasi folder Start Menu.
Klik tombol Next, kemudian akan ditampilkan window untuk memilih task tambahan yang akan dilakukan pada proses installasi. Pilih task tambahan sesuai keinginan.
22
Gambar 11. Window Setup - Pemilihan task tambahan.
Klik tombol Next, kemudian proses installasi akan dilakukan.
Gambar 12. Windows Setup - Proses installasi.
23
Gambar 13. Window informasi akhir proses installasi.
Klik tombol Finish untuk menutup proses installasi.
Microsoft R Archive Network (MRAN)
Platform R juga dapat diunduh dari Microsoft R Archive Network (MRAN). Nama platform R pada sumber ini adalah Microsoft R Open. Saat buku ini ditulis versi terbaru adalah 3.3.1. Platform R dari sumber ini telah dimodifikasi untuk meningkatkan kinerja komputasi multi-thread.
Installer Microsoft R Open 3.3.1 dapat diunduh pada link berikut ini
https://mran.revolutionanalytics.com/download/. Ukuran file installer adalah 149MB. Untuk memulai proses installasi, klik double pada file microsoft-r-open-3.3.1.msi.
24 Klik tombol Next, kemudian akan ditampilkan window informasi seperti gambar di bawah ini.
Gambar 15. Window Microsoft R Open 3.3.1 Setup – Informasi lisensi.
Centang checkbox I acknoledge the above licnesing information, kemudian klik tombol Next. Kemudian akan ditampilkan window opsi untuk menginstall Math Kernel Library.
Gambar 16. Window Microsoft R Open 3.3.1 Setup – Install Math Kernel Library.
Klik tombol Next, kemudian akan ditampilkan window lisensi Math Kernel Library. Centang checkbox I accept the MKL license terms.
25
Gambar 17. Window Microsoft R Open 3.3.1 – Lisensi Math Kernel Library.
Klik tombol Next, kemudian akan ditampilkan window untuk menentukan lokasi folder installasi. Klik tombol Change jika ingin mengubah folder installasi.
Gambar 18. Window Microsoft R Open 3.3.1 Setup – Folder installasi.
26
Gambar 19. Window Microsoft R Open 3.3.1 Setup – Memulai installasi.
Klik tombol Install, kemudian proses installasi dimulai.
Window dibawah ini akan ditampilkan setelah proses installasi selesai. Klik tombol Finish untuk menutup window dan menyelesaikan proses installasi.
27
Tool Pemrograman
RGui
RGui adalah tool pemrograman R. RGui merupakan bagian dari plotform R yang telah diinstall pada sub bab sebelumnya. RGui dapat dijalankan dengan memilih icon R x64 3.3.2 pada desktop atau memilih pada start menu.
Antarmuka RGui dapat dilihat pada gambar di bawah ini.
Gambar 21. RGui.
Console
Console atau R Console adalah window yang digunakan untuk mengeksekusi fungsi R. Pada console dapat dieksekusi lebih dari satu fungsi. Console ini juga dapat digunakan untuk mengeksekusi program yang disimpan di dalam file script R. R Console dapat dilihat pada gambar di atas.
Berikut adalah contoh penggunaan R Console. Ketik kode berikut pada window R Console. print("hello world of R")
28
Gambar 22. R Console.
Editor
Editor adalah window untuk mengetik kumpulan fungsi R atau program script R. Window ini tidak dapat digunakan untuk menjalankan fungsi R. Window editor dapat ditampilkan dengan cara memilih menu File > New script atau dengan menekan tombol Ctrl+N. Maka akan ditampilkan window R Editor. Tuliskan kode program seperti berikut pada window R Editor.
for(i in 1:10) {
print(paste(i,". hello world of R")) }
Hasilnya dapat dilihat seperti pada gambar di bawah ini.
29 Untuk menyimpan ke dalam file, pilih menu File > Save atau dengan cara menekan tombol Ctrl+S. Kemudian berikan nama file yaitu HelloWorld.R, seperti pada gambar di bawah ini.
Gambar 24. Menyimpan file script R.
Selanjutnya, pilih menu File > Source R Code. Kemudian pilih file HelloWorld.R. Makan akan dapat dilihat hasil seperti pada gambar di bawah ini.
Gambar 25. Eksekusi file script R.
Grafik
RGui memiliki window grafik untuk menampilkan hasil dari fungsi menggambar grafik. Contoh fungsi untuk mengambar grafik adalah plot(). Di bawah ini adalah contoh penggunaan fungsi plot().
x = c(1,2,3,4) y = c(2,4,6,8) plot(x,y)
Eksekusi setiap baris di atas pada window console. Maka akan ditampilkan window grafik seperti berikut ini.
30
Gambar 26. Window R Graphics.
RStudio
RStudio tool pemrograman atau integrated development environment (IDE) bahasa R yang memiliki antarmuka lebih baik daripada RGui. RStudio memiliki 2 versi lisensi, yaitu Open Source Edition dan Commercial Edition. Installer RStudio dapat didownload di
https://www.rstudio.com/products/RStudio/. RStudio tersedia untuk platform Windows, Mac OS X dan Linux versi Ubuntu dan Fedora.
Installasi
Versi RStudio saat buku ini ditulis adalah 1.0.44. Nama file installer untuk versi ini adalah RStudio-1.0.44.exe yang berukuran 82MB. Setelah proses download selesai, klik double pada file installer.
Gambar 27. Window RStudio Setup - Welcome.
Klik tombol Next, kemudian akan ditampilkan window untuk memilih lokasi installasi. Klik tombol Browse jika ingin menganti lokasi folder installasi.
31
Gambar 28. Window RStudio Setup - Lokasi installasi.
Klik tombol Next, kemudian akan ditampilkan window untuk memilih folder Start Menu.
Gambar 29. Window RStudio Setup - Memilih lokasi folder Start Menu.
32
Gambar 30. Window RStudio Setup - proses installasi.
Klik tombol Show details jika ingin melihat daftar file yang diinstall.
Gambar 31. Window RStudio Setup - detail proses installasi.
Setelah proses installasi selesai, maka akan ditampilkan window seperti pada gambar di bawah ini. Klik tombol Finish untuk mengakhiri proses installasi.
33
Gambar 32. Window RStudio Setup - Proses installasi selesai.
Antarmuka
Antarmuka RStudio dapat dilihat pada gambar di bawah ini.
Gambar 33. Antarmuka RStudio.
RStudio memiliki window Editor, Console dan Plot (untuk menampilkan grafik) yang terintegrasi. Selain itu RStudio juga memiliki window Environment untuk menampilkan objek atau variable yang telah digunakan. RStudio juga memiliki fitur explorer untuk melihat daftar file dan daftar folder seperti yang terlihat pada tab Files di gambar di atas. Fitur ini dapat digunakan untuk membuat folder atau menghapus folder dan file.
34 RStudio juga memiliki fitur auto complete kode seperti terlihat pada gambar di bawah ini.
Gambar 34. Fitur auto complete kode.
Berikut adalah contoh bagaimana RStudio menampilkan grafik pada window Plots.
Gambar 35. Window Plots untuk menampilkan grafik.
R Tools for Visual Studio
R Tool for Visual Studio adalah extension pada Visual Studio. Extension ini dapat digunakan untuk membuat Visual Studio menjadi integrated development environment (IDE) untuk bahasa pemrograman R.
R Tool for Visual Studio dapat diunduh di https://www.visualstudio.com/vs/rtvs/. Ekstensi ini berukuran 3,6MB dan memerlukan ruang hardisk sebesar 9MB untuk proses installasi. Saat buku ini ditulis, versi R Tool for Visual Studio adalah 0.5.
35
Installasi
Setelah installer selesai didownload. Klik double pada file installer. Maka akan ditampilkan window seperti gambar di bawah ini.
Gambar 36. Installasi R Tool 0.5 for Visual Studio 2015.
Klik tombol Install, maka proses installasi akan dilakukan seperti yang terlihat pada gambar di bawah ini.
36 Setelah proses installasi selesai maka akan dilihat window seperti gambar di bawah ini.
Gambar 38. Proses installasi R Tool 0.5 for Visual Studio 2015 selesai.
Antarmuka
Antarmuka R Tool for Visual Studio dapat dilihat pada gambar di bawah ini. R Tool for Visual Studio memiliki Editor, R Interactive yang berfungsi sebagai R Console, R Plot untuk menampilkan grafik dan Solution Explorer untuk menampilkan daftar folder dan file. R Tool for Visual Studio memiliki R Plot History untuk menampilkan daftar grafik yang telah dibuat.
37
3
Fungsi-Fungsi Dasar R
Bab ini akan menjelaskan tentang fungsi-fungsi dasar R. Fungsi-fungsi yang dibahas akan berfokus pada fungsi untuk operasi data seperti membaca data dari file, memfilter data, mengabung data, menampilkan data ke layar, menulis data ke file dan menggambar data dalam grafik. Selain itu juga dibahas fungsi-fungsi pendukung lainnya.Package
Default lingkungan R telah memiliki banyak fungsi-fungsi yang dapat digunakan untuk berbagai keperluan. Lingkungan R dapat ditambahkan fungsi-fungsi baru. Fungsi-fungsi baru tersebut biasanya dalam bentuk package.
Installasi Package
Package-package tersebut disimpan pada server yang dapat diakses secara online. Proses installasi package hanya dapat dilakukan jika ada koneksi internet.
Fungsi install.package() adalah fungsi untuk mengunduh dan menginstall package. Sintaks fungsi ini adalah sebagai berikut.
install.packages(“NamaPackage”)
Kode di bawah ini adalah contoh untuk menginstall package “kernlab”. install.packages("kernlab")
Gambar di bawah ini adalah informasi yang dilihat setelah proses installasi package selesai.
38
Gambar 41. Proses installasi package pada RStudio.
Memuat Package
Fungsi-fungsi package hanya dapat digunakan jika package telah dimuat. Package harus dimuat setiap saat session baru dibuat atau setiap saat baru menjalankan tool pemrograman R.
Fungsi untuk memuat package adalah library(). Sintaks fungsi ini adalah sebagai berikut. library(NamaPackage)
atau
library(“NamaPackage”)
Berikut adalah contoh kode untuk memuat package “kernlab”.
library("kernlab")
Working Directory
Working directory atau direktori kerja adalah direktori/folder aktif pada suatu session. User hanya dapat mengakses file script R dan file data yang berada pada working direktory. Jika user ingin mengakses file di luar working directory maka user harus menulis path direktori/folder dan nama file.
Kode di bawah ini adalah contoh untuk mengakses file pada working directory. read.csv("data.csv")
Kode di bawah ini adalah contoh untuk mengakses file diluar working directory. read.csv("D:/Data/data_riset.csv")
Mendapatkan Working Directory
Untuk mendapatkan informasi working directory dapat digunakan fungsi getwd(). Di bawah ini adalah contoh penggunaan fungsi getwd() dan outputnya.
> getwd()
39
Menentukan Working Directory
Untuk menentukan working directory dapat digunakan fungsi setwd(). Sintaks fungsi ini adalah sebagai berikut.
setwd(“path_absolute”)
Kode di bawah ini adalah contoh penggunaan fungsi setwd() dan outputnya. > setwd("C:/")
> getwd() [1] "C:/"
Dataset
Platform R telah memiliki lebih 100 dataset yang dapat digunakan untuk latihan. Fungsi data() digunakan untuk melihat daftar dataset tersebut. Ketik fungsi data() pada window Console pada RStudio atau RGui maka hasilnya dapat dilihat pada gambar di bawah ini.
Gambar 42. Daftar dataset pada RStudio.
40
Gambar 43. Daftar dataset pada R Tools for Visual Studio.
Iris adalah salah satu dataset yang umum digunakan sebagai latihan atau contoh pemrograman R.
Menulis Data Ke File
Iris dataset akan digunakan pada contoh-contoh di sub bab ini.
write.csv()
Fungsi write.csv() untuk menulis file yang berisi nilai-nilai yang dipisahkan oleh koma. Format file yang dihasilkan adalah file text.
Sintaks fungsi ini adalah sebagai berikut. write.csv(ObjectName, "FileName")
Untuk menyimpan dataset iris ke file data.csv maka digunakan perintah berikut ini. write.csv(iris, "data.csv")
write.table()
Fungsi write.table() untuk menulis file yang berisi nilai-nilai yang dipisahkan oleh tab. Sintaks fungsi ini adalah sebagai berikut.
write.table(ObjectName, "FileName")
Untuk menyimpan dataset iris ke file data.txt maka digunakan perintah berikut ini. write.table(iris, "data.txt")
41
Membaca File Text
Format file yang umum digunakan digunakan menyimpan data adalah file text yang berisi nilai-nilai yang dipisahkan oleh tanda koma atau tab.
read.csv()
Jika file text berisi nilai-nilai yang dipisahkan oleh tanda koma maka dapat digunakan fungsi read.csv(). Sintaks fungsi ini adalah sebagai berikut.
ObjectName = read.csv("FileName")
Sebagai contoh, untuk membaca file data.csv digunakan kode berikut. Obyek data_csv akan menyimpan data file data_penelitian.csv yang dibaca oleh fungsi ini.
data_csv = read.csv("data.csv")
read.table()
Jika file text berisi nilai-nilai yang dipisahkan tab maka dapat digunakan fungsi read.table(). Sintaks fungsi ini adalah sebagai berikut.
ObjectName = read.table("FileName")
Sebagai contoh, untuk membaca file data.txt digunakan kode di bawah ini. data_txt = read.table("data.txt")
Obyek data_txt akan menyimpan data file data_penelitian.txt yang dibaca oleh fungsi read.table().
Membaca File Excel
File Excel juga umum digunakan untuk menyimpan data. Untuk membaca file Excel diperlukan package “xslx”. Install package ini dengan perintah berikut.
install.packages("xlsx")
Setelah proses installasi package “xslx” selesai, muat library ini dengan perintah di bawah ini. library(xlsx)
Fungsi yang digunakan untuk membaca file Excel adalah sebagai berikut. data_xlsx = read.xlsx("FileName", sheetName = "SheetName")
Sebagai contoh, untuk membaca file data.xlsx digunakan perintah berikut ini. data_xlsx = read.xlsx("data.xlsx", sheetName = "Sheet1")
42
Akses Database
Platform R juga dapat membaca data dari database server seperti MySQL dan SQL Server.
Akses Database MySQL
Untuk mengakses database MySQL pada platform R diperlukan package tambahan. Package yang dapat digunakan adalah RMySQL.
Untuk menginstall package RMySQL digunakan perintah berikut. install.packages("RMySQL")
Kemudian muat library RMySQL dengan perintah berikut. library(RMySQL)
Langkah pertama sebelum melakukan operasi database adalah melakukan koneksi ke database dengan fungsi dbConnect(). Untuk melakukan koneksi ke database digunakan sintaks berikut.
ObjectName = dbConnect(MySQL(), user='UserName', password='Password', dbname='DatabaseName', host='HostName')
Sebagai contoh nama database adalah belajar_r, nama host adalah localhost, nama user adalah root dan password user adalah Rahasia. Maka perintah untuk melakukan koneksi adalah sebagai berikut.
mydb = dbConnect(MySQL(), user='root', password='Rahasia', dbname='belajar_r', host='localhost')
Untuk melihat daftar tabel pada database belajar_r digunakan fungsi dbListTables(). Berikut adalah contoh untuk menampilkan daftar tabel.
> dbListTables(mydb) [1] "iris"
Dari ouput perintah di atas, terdapat 1 tabel yaitu iris.
Untuk mengeksekusi SQL query dapat digunakan fungsi dbSendQuery(). Sebagai contoh, untuk menampilkan data dari tabel iris dapat digunakan kode di bawah ini.
rs = dbSendQuery(mydb, 'select * from iris') data_iris = fetch(rs, n=-1)
Data dari tabel iris akan disimpan pada obyek data_iris. Untuk menampilkan isi data ke layar dapat dilakukan dengan mengetik obyek data_iris pada R console.
Akses Database SQL Server
Package tambahan yang digunakan untuk mengakses database SQL Server adalah RODBC. Kode di bawah ini untuk menginstall package RODBC.
install.packages("RODBC")
Untuk memuat library RODBC digunakan kode di bawah ini. library(RODBC)
43 Untuk melakukan koneksi ke database digunakan fungsi odbcDriverConnect(). Sintaks fungsi odbcDriverConnect() adalah sebagai berikut.
ObjectName = odbcDriverConnect('driver={SQL
Server};server=HostName;database=DatabaseName;trusted_connection=true')
Jika database server berada pada komputer yang sama dan nama database adalah BelajarR, maka digunakan kode berikut ini.
myodbc = odbcDriverConnect('driver={SQL
Server};server=.;database=BelajarR;trusted_connection=true')
Untuk membaca data pada tabel iris pada database BelajarR digunakan fungsi sqlQuery(). Contoh kode yang dapat digunakan adalah sebagai berikut.
data_iris <- sqlQuery(myodbc, 'select * from iris')
Ketik obyek data_iris pada R console untuk melihat isi data tabel iris.
Menampilkan Data
Cara untuk menampilkan data adalah memanggil obyek yang digunakan untuk menyimpan data. Sebagai contoh, cara ini adalah untuk menampilkan data yang disimpan pada obyek data_txt.
> data_txt = read.table("data.txt") > data_txt
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa ...
Data akan ditampilkan di layar.
head()
Untuk menampilkan sejumlah data dari awal digunakan fungsi head(). Sintaks fungsi ini adalah sebagai berikut.
head(ObjekName, RowNumber)
Sebagai contoh, untuk menampilkan data dari obyek data_txt sebanyak 5 row digunakan perintah ini.
> head(data_txt, 5)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa
44
tail()
Untuk menampilkan sejumlah data dari akhir digunakan fungsi tail(). Sintaks fungsi ini adalah sebagai berikut.
tail(ObjekName, RowNumber)
Sebagai contoh, untuk menampilkan data dari obyek data_txt sebanyak 5 row digunakan perintah ini.
> tail(data_txt, 5)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 146 6.7 3.0 5.2 2.3 virginica 147 6.3 2.5 5.0 1.9 virginica 148 6.5 3.0 5.2 2.0 virginica 149 6.2 3.4 5.4 2.3 virginica 150 5.9 3.0 5.1 1.8 virginica
View()
Fungsi View() digunakan untuk menampilkan data dalam bentuk tabel. Untuk menampilkan data dari obyek data_txt, gunakan perintah di bawah ini.
View(data_txt)
Hasilnya dapat dilihat pada gambar-gambar di bawah ini.
45
Gambar 45. Output fungsi View() pada RStudio.
Gambar 46. Output fungsi View() pada RGui.
obyek$rowName
Pada gambar di atas dapat dilihat obyek data_txt memiliki 5 kolom. Nama kelima kolom itu adalah Sepal.Length, Sepal.Width, Petal.Length, Petal.Width dan Species. Cara untuk melihat seluruh nilai pada kolom Species dapat dilakukan dengan contoh di bawah ini.
46 data_txt$Species
Untuk menampilkan seluruh nilai pada kolom Sepal.Width digunakan contoh di bawah ini. data_txt$Sepal.Width
Memfilter Data
obyek[,x:y]
Jika data pada obyek terdiri atas 5 kolom, maka untuk menampilkan kolom 1 sampai 4 saja digunakan perintah di bawah ini.
data_txt[,1:4]
Jika ingin menampilkan kolom 1, kolom 3 dan kolom 5 saja dapat digunakan perintah berikut ini.
data_txt[,c(1,3,5)]
obyek[x:y,]
Jika ingin menampilkan data pada obyek berdasarkan baris yang diinginkan, misal baris 13 sampai baris 23 maka digunakan perintah ini.
data_txt[13:23,]
Jika ingin menampilkan baris 1, baris 3 dan baris 5 saja maka digunakan perintah berikut. data_txt[c(1,3,5),]
obyek[x1:y1, x2:y2]
Jika ingin menampilkan data pada obyek baris 13 sampai 23 saja dan kolom yang ditampilkan hanya kolom 1 sampai 4 saja maka digunakan perintah berikut ini.
data_txt[13:23, 1:4]
Jika ingin menampilkan data pada baris 1, 3 dan 5 saja dan kolom 1, 3 dan 5 saja maka digunakan perintah berikut ini.
data_txt[c(1,3,5), c(1,3,5)]
obyek[which(), ]
Untuk memfilter data berdasarkan suatu nilai pada sebuah kolom dapat digunakan fungsi which(). Berikut ini adalah contoh menampilkan data jika kolom Species bernilai setosa.
47
Menggabung Data
rbind()
Fungsi rbind() berfungsi untuk menggabung data dari dua obyek atau lebih. Sintaks fungsi ini adalah sebagai berikut.
ObjectName = rbind(object1, object2, . . . , objectN)
Obyek-obyek yang akan digabung harus memiliki jumlah kolom yang sama. Misal obyek data1 adalah sebagai berikut.
> data1 = iris[5:10,] > data1
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa Dan misal obyek data2 adalah sebagai berikut.
> data2 = iris[130:135,] > data2
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 130 7.2 3.0 5.8 1.6 virginica 131 7.4 2.8 6.1 1.9 virginica 132 7.9 3.8 6.4 2.0 virginica 133 6.4 2.8 5.6 2.2 virginica 134 6.3 2.8 5.1 1.5 virginica 135 6.1 2.6 5.6 1.4 virginica
Gabungan obyek data1 dan obyek data2 digabung dengan fungsi rbind(), dan akan disimpan pada obyek data_all.
> data_all = rbind(data1, data2) > data_all
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa 7 4.6 3.4 1.4 0.3 setosa 8 5.0 3.4 1.5 0.2 setosa 9 4.4 2.9 1.4 0.2 setosa 10 4.9 3.1 1.5 0.1 setosa 130 7.2 3.0 5.8 1.6 virginica 131 7.4 2.8 6.1 1.9 virginica 132 7.9 3.8 6.4 2.0 virginica 133 6.4 2.8 5.6 2.2 virginica 134 6.3 2.8 5.1 1.5 virginica 135 6.1 2.6 5.6 1.4 virginica
cbind()
Fungsi cbind() untuk mengabungkan data pada obyek-obyek yang memiliki jumlah baris yang sama. Misal obyek data1 berisi data seperti berikut.
> data1 = iris[1:5, 1] > data1
[1] 5.1 4.9 4.7 4.6 5.0
Dan data2 berisi data sebagai berikut. > data2 = iris[131:135, 1]
> data2
48 Obyek data_all berisi data gabungan data1 dan data2 yang digabung dengan fungsi cbind().
> data_all = cbind(data1, data2) > data_all data1 data2 [1,] 5.1 7.4 [2,] 4.9 7.9 [3,] 4.7 6.4 [4,] 4.6 6.3 [5,] 5.0 6.1
Explorasi Data
Mengetahui informasi data yang akan diolah sangat diperlukan. Informasi itu dapat digunakan untuk menentukan strategi yang dipilih untuk mengolah data tersebut. Berikut ini adalah beberapa fungsi untuk mengetahui ukuran, struktur, atribut, summary dan lain-lain
dim()
Fungsi dim() dapat memberikan informasi ukuran dimensi data. Contoh fungsi dim() dapat dilihat di bawah ini.
> dim(iris) [1] 150 5
Dari informasi di atas dapa diketahui iris dataset terdiri atas 150 baris dan 5 kolom.
names()
Fungsi names() memberikan informasi name kolom data. Contoh fungsi names() dapat dilihat di bawah ini.
> names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
str()
Fungsi str() memberikan informasi struktur data. Kode di bawah ini adalah contoh penggunaan fungsi ini.
> str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 ...
Output fungsi ini memberikan informasi yang lebih lengkap dibandingkan fungsi dim() dan names(). Fungsi ini memberikan informasi tambahan berupa tipe data yang digunakan pada setiap kolom.
table()
Fungsi table() mempunyai banyak manfaat. Salah satunya berguna untuk melihat jumlah instance atau frekuensi pada masing-masing target variable. Sintaks untuk menggunakan fungsi ini adalah sebagai berikut.
49 table(ObjectName[,ColumnNumber])
atau
table(ObjectName$ColumnName)
Contoh di bawah ini untuk melihat jumlah instance berdasarkan kolom Species. > table(iris[,5])
setosa versicolor virginica 50 50 50
Atau dapat juga digunakan seperti contoh berikut ini. > table(iris$Species)
setosa versicolor virginica 50 50 50
summary()
Fungsi summary() memberikan informasi statistik ringkas dari data yang dimiliki sebuah obyek. Di bawah ini adalah contoh penggunaan fungsi ini dan outputnya.
> summary(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50 Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50 Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
Fungsi ini memberikan informasi statistik untuk setiap feature seperti nilai terkecil, nilai terbesar, median, mean dan kuartil.
Grafik
Pada sub bab ini akan dijelaskan beberapa fungsi R untuk membuat grafik sebagai salah satu cara mengenal dan eksplorasi data.
plot()
Fungsi plot() untuk membuat titik dari nilai sumbu x dan sumbu y. Sintaks umum fungsi plot() adalah sebagai berikut.
plot(x, y)
Parameter x dan y berisi nilai numerik. Sebagai contoh, parameter x diisi dengan nilai-nilai numerik dari kolom ke-1 dataset iris. Dan parameter y diisi dengan nilai-nilai-nilai-nilai dari kolom ke-2 dataset iris.
plot(iris[,1], iris[,2])
50
Gambar 47. Grafik plot(iris[,1], iris[,2])
Jika dataset hanya terdiri atas 2 feature saja, sebagai contoh dataset cars. > head(cars) speed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16 6 9 10 . . .
Maka fungsi plot() dapat digunakan dengan cara berikut ini. plot(cars)
51
Gambar 48. Grafik plot(cars).
Jika cara diatas digunakan pada dataset yang terdiri lebih dari 2 feature, sebagai contoh dataset iris yang memiliki 5 feature, maka fungsi plot() akan secara otomatis membuat banyak grafik. Grafik akan berisi kombinasi seperti pada gambar di bawah ini.
plot(iris)
Gambar 49. Grafik plot(iris).
scatterplot3()
Untuk membuat plot 3 dimensi diperlukan package tambahan yaitu scatterplot3d. Langkah pertama adalah menginstall package ini dengan fungsi berikut.
install.packages("scatterplot3d")
52 library(scatterplot3d)
Fungsi untuk membuat plot 3 dimensi adalah scatterplot3d(). Sintaks dari fungsi ini adalah sebagai berikut.
scatterplot3d(x,y,z, main="YourTitle")
Sebagai contoh untuk membuat plot 3 dimensi dari data mtcars digunakan kode di bawah ini. attach(mtcars)
scatterplot3d(wt,disp,mpg, main="3D Scatterplot")
Gambar 50. Grafik scatterplot3d().
plot3d()
Fungsi ini juga dapat digunakan untuk membuat grafik 3 dimensi. Kelebihan fungsi ini adalah interaksi user. User dapat melihat grafik dari sudut yang diinginkan dengan cara memutar ke arah yang diinginkan.
Langkah pertama untuk menggunakan fungsi ini adalah memuat package rgl. library(rgl)
Sintaks dari fungsi plot3d() adalah sebagai berikut. plot3d(x, y, z)
Untuk membuat plot dari data mtcars dapat dilihat pada kode di bawah ini. plot3d(wt, disp, mpg)
53
Gambar 51. Grafik plot3d().
Gerakkan grafik dengan mengarahkan cursor mouse pada grafik. Kemudian klik tombol mouse sebelah kiri dan tahan. Kemudian gerakkan cursor ke kiri atau ke kanan, dan ke atas atau ke bawah.
hist()
Fungsi hist() digunakan untuk membuat grafik histogram. Grafik ini dapat memberikan informasi frekuensi distribusi data. Sintaks fungsi hist() adalah sebagai berikut.
hist(x)
Parameter x dapat diisi dengan obyek numerik.
Selain dataset iris, platform R memiliki dataset lain yang dapat digunakan. Salah satunya adalah dataset mtcars.
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Jika parameter x diisi dengan nilai numerik feature mpg, maka akan didapat grafik histogram sebagai berikut.
hist(mtcars[,1])
atau
54
Gambar 52. Grafik hist(mtcars[,1])
density()
Fungsi density() berguna untuk melakukan estimasi kernel density. Output fungsi ini dapat dibuat dalam bentuk grafik dengan cara seperti contoh di bawah ini.
plot(density(mtcars$mpg))
Hasil dari kode di atas adalah sebagai berikut.
Gambar 53. Grafik density.
pie()
Fungsi pie() digunakan untuk membuat grafik pie. Sintaks fungsi ini adalah sebagai berikut. pie(x, labels = y)
Sebagai contoh adalah sebagai berikut.
55
Gambar 54. Grafik pie()
Jika dimiliki obyek table maka akan lebih mudah untuk membuat grafik pie. Sebagai contoh sebagai berikut.
pie(table(iris[,5]))
Gambar 55. Grafik pie dataset iris.
barplot()
Fungsi barplot() digunakan untuk membuat grafik berbentuk bar. Sintaks fungsi ini adalah sebagai berikut.
barplot(x)
Berikut adalah contoh penggunaan fungsi barplot(). barplot(mtcars$mpg)
56
Gambar 56. Grafik barplot vertical.
Untuk membuat grafik horizontal maka digunakan opsi horiz = TRUE seperti contoh di bawah ini.
barplot(mtcars$mpg, horiz = TRUE)
Gambar 57. Grafik barplot horizontal.
boxplot()
Fungsi boxplot() berfungsi untuk membuat grafik box dan whisker dari sekumpulan nilai. Contoh penggunaan fungsi ini adalah sebagai berikut.
boxplot(iris[,1:4])
57
par()
Fungsi par() dapat digunakan untuk membuat beberapa grafik hasil fungsi-fungsi di atas dalam satu gambar. Sintaks dari fungsi par() adalah sebagai berikut:
par(mfrow=c(jumlah_grafik_dalam_baris, jumlah_grafik_dalam_kolom))
Sebagai contoh jika ingin membuat 2 output grafik dalam satu gambar maka digunakan kode berikut.
par(mfrow=c(1,2))
plot(mtcars$wt,mtcars$mpg) plot(mtcars$wt,mtcars$disp)
Gambar 59. Fungsi par() untuk membuat 2 grafik dalam 1 kolom.
Jika ingin membuat 3 grafik dalam 1 baris maka digunakan kode seperti berikut. par(mfrow=c(1,3))
plot(mtcars$wt,mtcars$mpg) plot(mtcars$wt,mtcars$disp) plot(mtcars$wt,mtcars$disp)
Gambar 60. Fungsi par() untuk membuat 3 grafik dalam 1 kolom.
58 par(mfrow=c(2,2)) plot(mtcars$wt,mtcars$mpg) plot(mtcars$wt,mtcars$disp) plot(mtcars$wt,mtcars$mpg) plot(mtcars$wt,mtcars$disp)
Gambar 61. Fungsi par() untuk membuat 4 grafik dalam 2 baris dan 2 kolom.
Visualisasi Data
Pada sub bab sebelumnya telah diterangkan tentang fungsi plot() untuk membuat grafik 2 dimensi. Diterangkan pula fungsi plot3d() untuk membuat grafik 3 dimensi. Jika data memiliki lebih dari 3 feature, maka perlu dipilih minimal 2 feature untuk membuat grafik 2 dimensi, atau dipilih 3 feature untuk membuat grafik 3 dimensi. Artinya ada feature yang tidak digunakan.
Jika ingin membuat grafik yang menggunakan informasi dari seluruh feature dari dataset maka dapat digunakan Principal Component Analysis (PCA).
Principal Component Analysis (PCA)
Principal Component Analysis adalah teknik untuk membangun variable-variable baru yang merupakan kombinasi linear dari variable-variable asli. Atau teknik yang digunakan untuk menyederhanakan suatu data, dengan cara mentransformasi data secara linier sehingga terbentuk sistem koordinat baru dengan varians maksimum. Jumlah maximum dari variable-variable baru ini akan sama dengan jumlah dari variable-variable lama, dan variable-variable-variable-variable baru ini tidak saling berkorelasi satu sama lain.
PCA dapat digunakan untuk mereduksi dimensi suatu data tanpa mengurangi karakteristik data tersebut secara signifikan atau tetap mempertahankan informasi yang terkandung di dalamnya.
Dengan penjelasan di atas, jika data memiliki feature lebih dari 3 maka PCA dapat mereduksi feature menjadi 2 atau 3 feature saja. Sehingga data dapat digambar pada grafik 2 dimensi atau 3 dimensi. Tetapi keberhasilan PCA untuk menggambar data ke dalam 2 dimensi dan 3 dimensi tergantung data tersebut. Jadi ada kemungkinan PCA tidak akan memberikan gambaran yang benar tentang sebaran data.
59 Implementasi PCA pada platform R adalah dengan menggunakan fungsi prcomp(). Data input untuk fungsi ini adalah numerik. Sebagai contoh, berikut ini adalah data iris.
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa
Kolom yang dapat digunakan sebagai input fungsi prcomp() adalah kolom ke-1 sampai ke-4. Sehingga penggunaan fungsi prcomp() dapat ditulis sebagai berikut.
iris.pca = prcomp(iris[,-5]) #seluruh kolom, kecuali kolom ke-5 atau
iris.pca = prcomp(iris[,1:4]) #kolom ke-1 sampai ke-4
Fungsi ini menghasilkan 4 output. Output yang pertama adalah standar deviasi principal component. Output ini dapat dilihat dengan cara di bawah ini.
> iris.pca$sdev
[1] 2.0562689 0.4926162 0.2796596 0.1543862
Output kedua adalah matrix variable loading. Kode di bawah ini digunakan untuk melihat output ini. > iris.pca$rotation PC1 PC2 PC3 PC4 Sepal.Length 0.36138659 -0.65658877 0.58202985 0.3154872 Sepal.Width -0.08452251 -0.73016143 -0.59791083 -0.3197231 Petal.Length 0.85667061 0.17337266 -0.07623608 -0.4798390 Petal.Width 0.35828920 0.07548102 -0.54583143 0.7536574
Output ketiga adalah nilai rotasi data. Output ini dapat dilihat dengan menggunakan kode berikut. Jumlah data output ini sesuai dengan jumlah data pada dataset iris yaitu 150 instance.
> iris.pca$x PC1 PC2 PC3 PC4 [1,] -2.684125626 -0.319397247 0.027914828 0.0022624371 [2,] -2.714141687 0.177001225 0.210464272 0.0990265503 [3,] -2.888990569 0.144949426 -0.017900256 0.0199683897 . . . [149,] 1.900941614 -0.116627959 -0.723251563 0.0445953047 [150,] 1.390188862 0.282660938 -0.362909648 -0.1550386282
Output yang terakhir adalah nilai center. Nilai center dapat dilihat dengan perintah berikut. > iris.pca$center
Sepal.Length Sepal.Width Petal.Length Petal.Width 5.843333 3.057333 3.758000 1.199333
Visualisasi 2D
Untuk membuat visualisasi grafik 2D digunakan fungsi biplot() seperti contoh berikut ini. biplot(iris.pca)