{"id":2951,"date":"2016-08-11T11:58:45","date_gmt":"2016-08-11T11:58:45","guid":{"rendered":"http:\/\/www.rezafaisal.net\/?p=2951"},"modified":"2016-08-11T12:28:43","modified_gmt":"2016-08-11T12:28:43","slug":"r-tools-for-visual-studio-mengenal-data-secara-visual-dengan-pca","status":"publish","type":"post","link":"https:\/\/www.rezafaisal.net\/?p=2951","title":{"rendered":"R Tools for Visual Studio: Mengenal Data Secara Visual dengan PCA"},"content":{"rendered":"<p>Sebelum melakukan proses data untuk pembelajaran pada Machine Learning atau mungkin sebagian orang menyebutnya Data Mining. Maka terlebih dahulu perlu dilakukan pengenalan lebih lanjut terdahap data data tersebut.<\/p>\n<p>&nbsp;<\/p>\n<p>{<strong><em>Statistik<\/em><\/strong>}<\/p>\n<p>Pengenalan data dapat dilakukan secara statistik dengan melihat modus, mean, median atau mengambarnya dalam suatu distribusi.\u00a0 Sebagai contoh, dengan menggunakan fungsi summary() pada R maka akan didapat rangkuman data seperti berikut.\u00a0 Dengan perintah tersebut dapat dilihat distribusi dataset iris.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">summary(iris)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog01-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog01\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog01_thumb-2.jpg\" alt=\"blog01\" width=\"550\" height=\"199\" border=\"0\" \/><\/a><\/p>\n<p>Dan jika ingin melihat rangkuman data tersebut dalam bentuk grafik dengan memanfaatkan fungsi boxplot() dengan perintah seperti berikut ini.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">boxplot(Sepal.Length ~ Species, data = iris, main = <span style=\"color: #006080;\">\"Box Plot\"<\/span>, xlab = <span style=\"color: #006080;\">\"Species\"<\/span>, ylab = <span style=\"color: #006080;\">\"Sepal Length\"<\/span>)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Maka akan dihasilkan grafik seperti berikut.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog02-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog02\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog02_thumb-2.jpg\" alt=\"blog02\" width=\"550\" height=\"495\" border=\"0\" \/><\/a><\/p>\n<p>Dari gambar ini dapat dilihat mean dari data masing-masing class (garis horizontal tebal berwarna hitam), Q1 dan Q3. Dengan grafik ini juga dapat juga diketahui outlier pada data. Box plot juga merupakan versi lain dari grafik distribusi seperti yang dijelaskan oleh gambar di bawah ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog03-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog03\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog03_thumb-2.jpg\" alt=\"blog03\" width=\"550\" height=\"403\" border=\"0\" \/><\/a><\/p>\n<p>Dari kedua gambar di atas, kita dapat melihat di sisi mana instance banyak berkumpul dan berdesak-desakan :)<\/p>\n<p>&nbsp;<\/p>\n<p>{<strong><em>Data Space<\/em><\/strong>}<\/p>\n<p>Selain mengenali data seperti cara di atas, sering kali dilakukan melihat posisi instance-instance pada data space.\u00a0 Hal ini kadang digunakan untuk melihat karakteristik dari data sehingga jika ingin melakukan klasifikasi atau clustering dapat ditentukan metode atau algoritma yang cocok.<\/p>\n<p>Apa sih maksudnya \u201cinstance-instance pada data space\u201d? Misal yang menjadi <strong><u>data space <\/u><\/strong>adalah stadion sepak bola dan akan dilakukan klasifikasi manusia di dalam stadion itu berdasarkan perannya. Manusia-manusia di dalam stadion adalah <strong><u>instance-instance<\/u><\/strong>. Sedangkan peran manusia tersebut adalah <strong><u>class label<\/u><\/strong>. Maka peran (class label) manusia (instance) di dalam stadion (data space) dapat menjadi seperti berikut ini:<\/p>\n<ol>\n<li>Penonton.<\/li>\n<li>Pemain bola.<\/li>\n<li>Pemain bola cadangan dan pelatih.<\/li>\n<li>Staf kesehatan.<\/li>\n<li>Wartawan.<\/li>\n<\/ol>\n<p>Dengan melihat stadion bola berikut ini, maka kita bisa menentukan posisi setiap instance-instance sesuai class labelnya pada data space.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog04-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog04\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog04_thumb-1.jpg\" alt=\"blog04\" width=\"550\" height=\"275\" border=\"0\" \/><\/a><\/p>\n<p>Pada kasus ini, kita sudah bisa menebak posisi setiap instance sesuai dengan class labelnya. Bagaimana dengan kasus yang lain, misalnya klasifikasi manusia berdasarkan perannya di lapangan upacara ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog05-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog05\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog05_thumb-2.jpg\" alt=\"blog05\" width=\"550\" height=\"367\" border=\"0\" \/><\/a><\/p>\n<p>Jika dibandingkan kedua kasus di atas (domain permasalahan), maka sudah bisa dipastikan ada perbedaan posisi setiap instance-instance di kedua kasus tersebut.\u00a0 Ini menandakan instance-instance pada data space akan berbeda penyebarannya tergantung kasus atau domain masalahnya.\u00a0 Jadi ada kemungkinan beda domain masalah maka posisi instance-instancenya akan berbeda penyebarannya pada data space. Bahkan pada domain masalah yang sama pun kemungkinan posisi instance-instancenya akan berbeda juga.<\/p>\n<p>Dengan mengetahui informasi tersebut maka kemungkinan kita dapat menentukan strategi yang digunakan untuk menyelesaikan masalah tersebut.\u00a0 Sebagai contoh untuk kasus klasifikasi, maka kita dapat menentukan metode atau algoritma yang cocok.<\/p>\n<p>Jika kita memiliki data yang hanya terdiri atas 2 feature dan 1 class label, atau 3 feature dan 1 class label tentunya sangat mudah untuk menggambarkannya pada data space. Karena dapat digambarkan dalam gambar 2 dimensi atau 3 dimensi.<\/p>\n<p>Sebagai contoh dimiliki data dengan 2 feature dan 1 class label seperti berikut:<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">size &lt;- 20             \r\nset.seed(1) \r\nx &lt;- runif(size)       \r\ny &lt;-runif(size) \r\nclass_label = c(<span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"B\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"D\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"B\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>,<span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"B\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"D\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"B\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>)\r\ndf &lt;-data.frame(x,y, class_label)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Maka akan dihasilkan data seperti berikut ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog06-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog06\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog06_thumb-2.jpg\" alt=\"blog06\" width=\"550\" height=\"332\" border=\"0\" \/><\/a><\/p>\n<p>Dan untuk melihat posisi setiap instance pada data space maka dapat digunakan fungsi plot() seperti pada contoh berikut ini.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">plot(df$x, df$y, col=<span style=\"color: #0000ff;\">as<\/span>.numeric(df$class_label), pch = 16)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Atau dengan menggunakan kode berikut:<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">plot(df[,1:2], col = <span style=\"color: #0000ff;\">as<\/span>.numeric(df$class_label), pch = 16)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Dan akan dihasilkan gambar seperti berikut.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog07-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog07\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog07_thumb-2.jpg\" alt=\"blog07\" width=\"550\" height=\"493\" border=\"0\" \/><\/a><\/p>\n<p>Sedangkan jika data yang dimiliki memiliki 3 feature dan 1 class label seperti data yang dihasilkan dari kode berikut ini:<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">size &lt;- 20\r\nset.seed(1)\r\nx &lt;- runif(size)\r\ny &lt;- runif(size)\r\nz &lt;- runif(size)\r\nclass_label = c(<span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"B\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"D\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"B\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"B\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>, <span style=\"color: #006080;\">\"D\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"A\"<\/span>, <span style=\"color: #006080;\">\"B\"<\/span>, <span style=\"color: #006080;\">\"C\"<\/span>)\r\ndf &lt;- data.frame(x, y, z, class_label)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Sehingga dihasilkan data seperti berikut ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog08-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog08\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog08_thumb-2.jpg\" alt=\"blog08\" width=\"550\" height=\"332\" border=\"0\" \/><\/a><\/p>\n<p>Untuk mengambar data tersebut maka bisa digunakan fungsi plot3d() dari package rgl.\u00a0 Jika package rgl belum tersedia pada sistem maka dapat dilakukan installasi package dengan perintah berikut.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">install.package(<span style=\"color: #006080;\">\"rgl\"<\/span>)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Jika sudah terinstall maka dapat digunakan perintah berikut ini untuk mengambar scatter plot secara 3D dengan menggunakan fungsi plot3d()<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">plot3d(df[,1:3], col=<span style=\"color: #0000ff;\">as<\/span>.numeric(df$class_label))<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Dan berikut ini adalah hasil dari fungsi tersebut.\u00a0 Grafik yang dihasil dapat digerakan ke berbagai arah agar memudahkan untuk melihat instance-instance pada data space dalam berbagai sudut.\u00a0 Selain itu juga dapat dilakukan zoom in dan zoom out.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog09-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog09\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog09_thumb-2.jpg\" alt=\"blog09\" width=\"550\" height=\"470\" border=\"0\" \/><\/a><\/p>\n<p>Bagaimana dengan data yang memiliki banyak feature? Karena data pada dunia nyata sangat beragam. Pada lingkungan R telah tersedia dataset dunia nyata yang dapat langsung digunakan, seperti:<\/p>\n<ul>\n<li>Iris, Edgar Anderson&#8217;s Iris Data.<\/li>\n<li>AirPassengers, The classic Box &amp; Jenkins airline data. Monthly totals of international airline passengers, 1949 to 1960..<\/li>\n<li>mtcars, Motor Trend Car Road Tests.<\/li>\n<li>Titanic, Survival of passengers on the Titanic.<\/li>\n<li>dan lain-lain, untuk lebih lengkapnya dapat melihat daftarnya di sini <a title=\"https:\/\/stat.ethz.ch\/R-manual\/R-devel\/library\/datasets\/html\/00Index.html\" href=\"https:\/\/stat.ethz.ch\/R-manual\/R-devel\/library\/datasets\/html\/00Index.html\">https:\/\/stat.ethz.ch\/R-manual\/R-devel\/library\/datasets\/html\/00Index.html<\/a>.<\/li>\n<\/ul>\n<p>Selain jumlah featurenya beragam, juga tipe setiap type data dari feature juga beragam, tidak hanya berisi data numerik tetapi juga dapat berisi data nominal.\u00a0 Tetapi pada posting ini hanya akan berfokus pada pembahasan feature dengan tipe data numerik.\u00a0 Sebagai informasi, jumlah feature untuk data biologi dapat berjumlah ratusan, ribuan bahkan puluhan ribu.\u00a0 Hal ini perlu dilakukan pensiasatan untukk menggambar posisi instance pada data space.<\/p>\n<p>Salah satu strategi yang dapat digunakan adalah memanfaatkan PCA atau Principal Component Analysis. Secara singkat PCA adalah sebuah teknik untuk menyederhanakan suatu data, sehingga sering kali teknik ini digunakan untuk mereduksi dimensi\/feature suatu data tanpa mengurangi karakteristik data tersebut secara signifikan.<\/p>\n<p>&nbsp;<\/p>\n<p>{<strong><em>Principal Component Analysis<\/em><\/strong>}<\/p>\n<p>Dalam praktiknya, saya sering menggunakan PCA untuk menggambarkan posisi instance pada dataspace sehingga mempunyai gambaran tentang kompleksitas data yang sedang saya hadapi.\u00a0 Pada posting akan ditulis langkah-langkah untuk menggunakan teknik PCA pada lingkungan R dengan menggunakan R Tools for Visual Studio. Dan PCA hanya akan digunakan untuk mengambar posisi instance-instance dari data pada data space.<\/p>\n<p>Fungsi PCA yang dapat digunakan pada lingkungan R adalah prcomp(). Berikut adalah contoh sederhana yang dapat dicoba:<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">iris_pca = princomp(iris[, 1:4], cor = TRUE, scores = TRUE)\r\nbiplot(iris_pca)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Dan berikut adalah grafik dari hasil kode di atas.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog10-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog10\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog10_thumb-2.jpg\" alt=\"blog10\" width=\"550\" height=\"412\" border=\"0\" \/><\/a><\/p>\n<p>Untuk mendapatkan gambar yang lebih bagus, dapat dipergunakan fungsi autoplot() dari package \u201cggfortify\u201d. Untuk menginstall package \u201cggfortify\u201d dapat dilakukan dengan fungsi install.package() seperti berikut ini.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">install.packages(<span style=\"color: #006080;\">\"ggfortify\"<\/span>)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Kemudian untuk mengambar grafik di atas dapat digunakan kode seperti berikut ini.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">library(ggfortify)\r\nautoplot(prcomp(iris[, 1:4]), data = iris, colour = <span style=\"color: #006080;\">'Species'<\/span>, label = FALSE)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Dan berikut adalah hasil dari kode di atas, karena ada perbedaan warna maka dapat terlihat dengan jelas bagaimana posisi setiap instance berdasarkan class labelnya.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog15-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog15\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog15_thumb-1.jpg\" alt=\"blog15\" width=\"550\" height=\"456\" border=\"0\" \/><\/a><\/p>\n<p>Sedangkan jika ingin menggambar secara 3D maka tetap diperlukan hanya 3 input saja, oleh karena itu kita bisa memanfaatkan output score dari hasil perhitungan PCA.\u00a0 Untuk melihat output score dari perhitungan tersebut dapat menggunakan perintah seperti berikut.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog11-2.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog11\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog11_thumb-2.jpg\" alt=\"blog11\" width=\"550\" height=\"335\" border=\"0\" \/><\/a><\/p>\n<p>Dari gambar di atas terdapat 4 kolom (sesuai dengan jumlah kolom feature dari data original) dan 150 row (sesuai dengan jumlah record dari data original). Kalau diperhatikan dengan nilai di atas dengan nilai dari data iris di bawah ini maka dapat dilihat perbedaannya.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog12-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog12\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog12_thumb-1.jpg\" alt=\"blog12\" width=\"550\" height=\"335\" border=\"0\" \/><\/a><\/p>\n<p>Output score di atas merupakan hasil perhitungan kombinasi bentuk linear. Sehingga jika ingin menggambar plot 2D maka dapat digunakan kolom 1 &amp; 2 saja, atau jika ingin menggambar plot 3D dapat digunakan kolom 1, 2 dan 3 seperti contoh kode di bawah ini.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">library(rgl)\r\nplot3d(iris_pca$scores[, 1:3], col = <span style=\"color: #0000ff;\">as<\/span>.numeric(iris$Species))<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Dan berikut adalah hasilnya. Dari gambar di bawah ini dapat dilihat jika sebaran instance-instance per class label sangat baik, karena setiap class label berkumpul berdekatan antar sesama instance dengan class label yang sama. Dengan melihat informasi seperti ini, sepertinya metode atau algoritma konvensional klasifikasi (jika ingin melakukan klasifikasi) atau clustering (jika ingin melakukan clustering) dapat dengan mudah menyelesaikan masalah dengan data iris ini.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog13-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog13\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog13_thumb-1.jpg\" alt=\"blog13\" width=\"550\" height=\"472\" border=\"0\" \/><\/a><\/p>\n<p>Data yang lain yang akan digunakan adalah dataset Abalone yang dapat diperoleh pada UCI Repository dengan link berikut <a title=\"https:\/\/archive.ics.uci.edu\/ml\/datasets\/Abalone\" href=\"https:\/\/archive.ics.uci.edu\/ml\/datasets\/Abalone\">https:\/\/archive.ics.uci.edu\/ml\/datasets\/Abalone<\/a>. Dengan menggunakan fungsi read.cvs() untuk membaca isi data file abalone.data, seperti contoh berikut.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">abalone = read.csv(<span style=\"color: #006080;\">\"abalone.data\"<\/span>, header = FALSE)\r\nhead(abalone)\r\nsummary(abalone)\r\nboxplot(abalone)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Maka dapat dilihat hasil seperti berikut.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog14-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog14\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog14_thumb-1.jpg\" alt=\"blog14\" width=\"600\" height=\"358\" border=\"0\" \/><\/a><\/p>\n<p>Dan berikut ini adalah grafik posisi instance-instance hasil proses PCA dengan perintah:<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">autoplot(prcomp(abalone[, 2:8]), data = abalone, colour = <span style=\"color: #006080;\">'V9'<\/span>, label = FALSE)<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog16-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog16\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog16_thumb-1.jpg\" alt=\"blog16\" width=\"550\" height=\"408\" border=\"0\" \/><\/a><\/p>\n<p>Dan untuk grafik 3D digunakan perintah berikut ini.<\/p>\n<div id=\"codeSnippetWrapper\" style=\"font-size: 8pt; overflow: auto; cursor: text; font-family: 'Courier New', courier, monospace; width: 97.5%; direction: ltr; text-align: left; margin: 20px 0px 10px; line-height: 12pt; max-height: 200px; background-color: #f4f4f4; border: silver 1px solid; padding: 4px;\">\n<pre id=\"codeSnippet\" style=\"font-size: 8pt; overflow: visible; font-family: 'Courier New', courier, monospace; width: 100%; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; background-color: #f4f4f4; border-style: none; padding: 0px;\">abalone_pca = princomp(abalone[,2:8], cor = TRUE, scores = TRUE)\r\nplot3d(abalone_pca$scores[, 1:3], col = <span style=\"color: #0000ff;\">as<\/span>.numeric(abalone$V9))<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>Dan berikut adalah grafik plot yang dihasilkan.<\/p>\n<p><a href=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog17-1.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;\" title=\"blog17\" src=\"http:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog17_thumb-1.jpg\" alt=\"blog17\" width=\"550\" height=\"449\" border=\"0\" \/><\/a><\/p>\n<p>Dari informasi tersebut, maka kemungkinan metode atau algoritma klasifikasi sederhana tidak bisa langsung digunakan, harus dilakukan prepocessing data terlebih dahulu, atau perlu digunakan teknik classifikasi yang lebih rumit (yang akan dibahas pada posting selanjutnya).<\/p>\n<p>&nbsp;<\/p>\n<p>{<strong><em>Kesimpulan<\/em><\/strong>}<\/p>\n<p>Jadi dengan mengetahui lebih detail data yang akan ditangani akan membuat kita lebih siap dalam memilih teknik atau metode yang digunakan untuk menyelesaikan masalah.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sebelum melakukan proses data untuk pembelajaran pada Machine Learning atau mungkin sebagian orang menyebutnya Data Mining. Maka terlebih dahulu perlu dilakukan pengenalan lebih lanjut terdahap data data tersebut. &nbsp; {Statistik} Pengenalan data dapat dilakukan secara statistik dengan melihat modus, mean,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":2948,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6],"tags":[150,156,124],"class_list":["post-2951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwaredev","tag-r","tag-r-tools-for-visual-studio","tag-vs-2015"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.rezafaisal.net\/wp-content\/uploads\/2016\/08\/blog16_thumb-1.jpg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1sNAL-LB","_links":{"self":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/2951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2951"}],"version-history":[{"count":2,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/2951\/revisions"}],"predecessor-version":[{"id":2953,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/posts\/2951\/revisions\/2953"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=\/wp\/v2\/media\/2948"}],"wp:attachment":[{"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rezafaisal.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}