Anda di halaman 1dari 6

MACHINE LEARNING USING R PROGRAMMING

Bayu Ade Krisna Setiawan

Langkah Pertama

Kenali diri Anda dengan data

Sebagai langkah pertama, Anda ingin mengetahui beberapa properti dataset yang dengannya
Anda akan bekerja. Lebih khusus lagi, Anda ingin tahu lebih banyak tentang jumlah observasi dan
variabel dataset. Dalam latihan ini, Anda akan mengeksplorasi dataset iris. Jika Anda ingin
mempelajari lebih lanjut tentang itu, Anda dapat mengklik atau mengetik Iris di konsol. Tugas Anda
adalah mengekstraksi jumlah pengamatan dan variabel dari iris. Dataset ini sudah tersedia dalam R
(dalam paket dataset yang dimuat secara default). Gunakan dua cara untuk mengetahui jumlah
pengamatan dan variabel dari set data iris str ( ) dan dim ( ). Bisakah Anda menginterpretasikan
hasilnya? Panggil head ( ) dan tail ( ) pada iris untuk menampilkan beberapa pengamatan pertama
dan terakhir dalam dataset iris. Terakhir, panggil fungsi summary ( ) untuk menghasilkan data hasil
ringkasan dataset. Cobalah kode berikut di R anda.

Iris
str(iris)
dim(iris)
head(iris)
tail(iris)
summary(iris)

Bagian yang unggul dalam machine learning adalah mengetahui kapan Anda berhadapan
dengan masalah machine learning. Machine lebih dari sekadar menghitung rata-rata atau melakukan
beberapa manipulasi data. Ini sebenarnya melibatkan membuat prediksi tentang pengamatan
berdasarkan informasi sebelumnya. Manakah dari pernyataan berikut ini yang menggunakan model
machine learning ? (1) Tentukan apakah email yang masuk adalah spam atau bukan. (2) Dapatkan
nama juara Giro d'Italia tahun lalu. (3) Secara otomatis menandai foto Facebook baru Anda. (4) Pilih
siswa dengan nilai tertinggi pada kursus statistik. Tentu saja Deteksi spam dan pengenalan foto
adalah contoh umum classification dalam machine learning, sedangkan baik memilih juara Giro tahun
lalu atau siswa dengan skor teratas adalah bukan masalah machine learning. Dalam kasus ini, yang
Anda butuhkan adalah mengurutkan data (sort ( )) Anda untuk mendapatkan jawaban.

Tidak yakin apakah Anda mendapat perbedaan antara manipulasi data dasar dan machine
learning? Lihat pernyataan di bawah ini dan kenali yang bukan masalah machine learning :
(1) Mengingat kebiasaan belanja pengunjung, rekomendasikan produk untuk dibeli saat berikutnya
ia mengunjungi situs web Anda, (2) Mengingat gejala-gejala pasien, identifikasi penyakitnya, (3)
Memprediksi nilai tukar USD / EUR untuk Februari 2020, (4) Hitung upah rata-rata 10 karyawan untuk
perusahaan Anda. Dalam kasus-kasus tersebut tentu menghitung rata-rata adalah bukan masalah
machine learning.
Model prediksi dasar

Mari kita mulai sedikit coding! Tugas Anda adalah untuk memeriksa model prediksi pertama
kursus ini. Anda akan bekerja dengan dataset Wage. Ini berisi upah dan beberapa informasi umum
untuk pekerja di wilayah Atlantik tengah AS. Mungkin ada hubungan antara usia pekerja dan
upahnya. Pekerja yang lebih tua cenderung memiliki lebih banyak pengalaman rata-rata daripada
rekan-rekan mereka yang lebih muda, karenanya Anda dapat mengharapkan tren kenaikan upah
seiring bertambahnya usia pekerja. Jadi kami membangun model regresi linier untuk Anda,
menggunakan lm ( ): lm_wage. Model ini memprediksi upah pekerja hanya berdasarkan usia pekerja.

Dengan model linier lm_wage ini, yang dibangun dengan data yang berisi informasi tentang
usia pekerja dan upahnya, Anda dapat memperkirakan upah pekerja berdasarkan usia pekerja
tersebut. Misalnya, Anda ingin memperkirakan upah pekerja berusia 60 tahun. Anda dapat
menggunakan fungsi predict ( ) untuk ini. Fungsi generik ini mengambil model sebagai argumen
pertama. Argumen kedua harus beberapa pengamatan yang tidak terlihat sebagai data frame.
Predict ( ) kemudian dapat memprediksi hasil untuk pengamatan ini. Catatan: Pada point ini, cara
kerja lm ( ) tidak penting, Anda akan mendapatkan gambaran umum regresi yang lebih komprehensif
di bab 4.
Lihatlah kode yang membangun lm_wage, yang memodelkan upah berdasarkan variabel usia.
Lihat bagaimana data frame yang tidak terlihat dibuat dengan satu kolom, umur, yang mengandung
nilai tunggal, 60. Prediksi upah rata-rata pada usia 60 menggunakan predict ( ). Cetak hasil panggilan
fungsi Anda ke konsol (jangan tetapkan ke variabel). Bisakah Anda menginterpretasikan hasilnya?
Perhatikan kode berikut.

lm_wage <- lm(wage ~ age, data = Wage)


unseen <- data.frame(age = 60)
predict(lm_wage,unseen)

Classification, Regression, Clustering


Anda dapat memecahkan beberapa masalah menggunakan klasifikasi, regresi atau
pengelompokan. Manakah dari pertanyaan berikut yang dapat dijawab dengan menggunakan
algoritma klasifikasi?
1. Bagaimana nilai tukar tergantung pada GDP (gross domestic product)?
2. Apakah dokumen berisi huruf S tulisan tangan?
3. Bagaimana saya bisa mengelompokkan produk supermarket menggunakan frekuensi pembelian?
Tentu yang merupakan masalah klasifikasi adalah nomor 2, karena hanya akan menghasilkan dua
output yaitu YA atau TIDAK.
Klasifikasi: Memfilter spam
Memfilter spam dari email yang relevan adalah tugas dari machine learning. Informasi seperti
frekuensi kata, frekuensi karakter dan jumlah huruf besar dapat menunjukkan apakah email itu spam
atau bukan.
Dalam latihan berikut Anda akan bekerja dengan dataset emails, yang dimuat di ruang kerja
Anda (Sumber: UCI Machine Learning Repository). Di sini, beberapa email telah dilabeli oleh manusia
sebagai spam (1) atau bukan spam (0) dan hasilnya ditemukan dalam kolom spam. Fitur yang
dipertimbangkan dalam emails untuk memprediksi apakah itu spam atau bukan adalah
avg_capital_seq. Ini adalah jumlah rata-rata huruf kapital berurutan yang ditemukan di setiap email.
Dalam kode tersebut, Anda akan menemukan filter spam mentah yang kami buat untuk Anda,
spam_classifier ( ) yang menggunakan avg_capital_seq untuk memprediksi apakah email itu spam
atau bukan. Dalam definisi fungsi, penting untuk menyadari bahwa x merujuk ke avg_capital_seq.
Jadi di mana avg_capital_seq lebih besar dari 4, spam_classifier ( ) memprediksi email adalah spam
(1), jika avg_capital_seq inklusif antara 3 dan 4, ia memprediksi bukan spam (0), dan seterusnya.
Metodologi classifier ini untuk memprediksi apakah sebuah email adalah spam atau tidak tampaknya
cukup acak, tetapi mari kita lihat bagaimana caranya!
Tugas Anda adalah memeriksa dataset emails, menerapkan spam_classifier untuknya, dan
membandingkan label yang diprediksi dengan label yang sebenarnya. Jika Anda ingin memainkan
lebih banyak lagi dengan dataset emails, Anda dapat mengunduhnya di datacamp.com. Dan jika Anda
ingin mempelajari lebih lanjut tentang writing function, pertimbangkan untuk mengambil writing
function dalam kursus R yang diajarkan oleh Hadley dan Charlotte Wickham.
Periksa dimensi dataset menggunakan dim ( ). Periksa definisi spam_classifier ( ). Ini adalah
serangkaian pernyataan sederhana yang memutuskan antara spam dan tidak ada spam berdasarkan
satu vektor input. Lewati kolom avg_capital_seq dari emails ke spam_classifier ( ) untuk menentukan
email mana yang merupakan spam dan mana yang bukan. Tetapkan hasil yang dihasilkan untuk
spam_pred. Bandingkan vektor dengan prediksi Anda, spam_pred, dengan label spam sejati dalam
emails$spam dengan operator ==. Cukup cetak hasilnya. Ini dapat dilakukan dalam satu baris kode!
Berapa banyak email yang diklasifikasikan dengan benar?. Perhatikan kode berikut dan cobalah di R
anda (download file emails_small.csv di datacamp.com.

MyData <- read.csv(file="emails_small.csv", header=TRUE, sep=",")


dim(emails)
spam_classifier <- function(x){
prediction <- rep(NA, length(x))
prediction[x > 4] <- 1
prediction[x >= 3 & x <= 4] <- 0
prediction[x >= 2.2 & x < 3] <- 1
prediction[x >= 1.4 & x < 2.2] <- 0
prediction[x > 1.25 & x < 1.4] <- 1
prediction[x <= 1.25] <- 0
return(prediction) }
spam_pred<-spam_classifier(emails[ ,1])
spam_pred
spam_pred==emails$spam
Regresi: Tampilan LinkedIn selama 3 hari ke depan

Sudah waktunya bagi Anda untuk membuat prediksi lain dengan regresi! Lebih tepatnya,
Anda akan menganalisis jumlah tampilan profil LinkedIn Anda. Dengan jaringan Anda yang
berkembang dan keterampilan ilmu data Anda meningkat setiap hari, Anda bertanya-tanya apakah
Anda dapat memprediksi seberapa sering profil Anda akan dikunjungi di masa mendatang
berdasarkan jumlah hari sejak Anda membuat akun LinkedIn Anda. Instruksi akan membantu Anda
memperkirakan jumlah tampilan profil selama 3 hari ke depan, berdasarkan pada tampilan selama 3
minggu terakhir. Vektor linkedin, yang berisi informasi ini, sudah tersedia di ruang kerja Anda.

Buat vektor hari dengan angka dari 1 hingga 21, yang mewakili 3 minggu sebelumnya dari
tampilan linkedin Anda. Anda dapat menggunakan fungsi seq ( ), atau cukup dengan tanda : . Pasang
model linier yang menjelaskan pandangan LinkedIn. Gunakan fungsi lm ( ) sedemikian sehingga
linkedin (jumlah tampilan) adalah fungsi hari (jumlah hari sejak Anda membuat akun). Sebagai
contoh, lm (y ~ x) membangun model linier sehingga y adalah fungsi dari x, atau lebih bahasa sehari-
hari, y didasarkan pada x. Tetapkan model linier yang dihasilkan ke linkedin_lm. Dengan
menggunakan model linier ini, prediksi jumlah tampilan untuk tiga hari ke depan (hari 22, 23 dan 24).
Gunakan predict ( ) dan data frame future_days yang telah ditentukan. Tetapkan hasilnya ke
linkedin_pred. Lihat bagaimana kode yang tersisa memplot data historis dan prediksi. Cobalah untuk
menafsirkan hasilnya.

linkedin <- c(5 , 7 , 4 , 9, 11, 10, 14, 17, 13 , 11, 18 , 17 , 21 , 21, 24, 23, 28, 35, 21, 27 , 23)
days<-seq(1:21)
days
linkedin_lm<-lm(linkedin~days)
future_days <- data.frame(days = 22:24)
linkedin_pred <-predict(linkedin_lm,future_days)
linkedin_pred
plot(linkedin ~ days, xlim = c(1, 24))
points(22:24, linkedin_pred, col = "green")

Clustering: Memisahkan spesies iris

Terakhir tetapi bukan yang paling kecil ada clustering. Teknik ini mencoba mengelompokkan
objek Anda. Ia melakukan ini tanpa sepengetahuan sebelumnya tentang apa yang dapat atau
seharusnya terlihat oleh kelompok-kelompok ini. Untuk clustering, konsep pengetahuan sebelumnya
dan pengamatan yang tidak terlihat kurang bermakna daripada klasifikasi dan regresi.

Dalam latihan ini, Anda akan mengelompokkan iris dalam 3 kelompok berbeda, berdasarkan
beberapa karakteristik bunga dalam data set iris. Ini telah disediakan dalam data frame my_iris dan
vektor spesies , seperti yang ditunjukkan pada kode di bawah.

Clustering itu sendiri akan dilakukan dengan fungsi kmeans ( ). Bagaimana algoritma ini
bekerja, akan dijelaskan pada bab terakhir. Untuk saat ini, coba saja untuk mendapatkan intuisi!
Dalam masalah yang memiliki aspek acak (seperti masalah ini dengan kmeans ( )), fungsi set.seed ( )
akan digunakan untuk menegakkan reproduktifitas. Jika Anda memperbaiki seed, angka acak yang
dihasilkan (misal dalam kmeans ( )) selalu sama.

Gunakan fungsi kmeans ( ). Argumen pertama adalah my_iris; argumen kedua adalah 3,
karena Anda ingin menemukan tiga cluster di my_iris. Tetapkan hasilnya ke variabel baru,
kmeans_iris. Spesies sebenarnya dari pengamatan disimpan dalam spesies. Gunakan tabel ( ) untuk
membandingkannya dengan grup yang dihasilkan oleh clustering. Grup-grup ini dapat ditemukan di
atribut kluster kmeans_iris. Periksa kode yang menghasilkan plot Petal. Panjang terhadap Petal.
Lebar dan warna dengan cluster.

set.seed(1)
my_iris <- iris[-5]
species <- iris$Species
kmeans_iris<-kmeans(my_iris,3)
kmeans_iris
table(species,kmeans_iris$cluster)
plot(Petal.Length ~ Petal.Width, data = my_iris, col = kmeans_iris$cluster)

Praktis dengan supervised learning

Sebelumnya, Anda menggunakan kmeans ( ) untuk melakukan clustering pada dataset iris.
Ingat bahwa Anda membuat salinan dataset Anda sendiri, dan menetapkan atribut Spesies? Itu
benar, Anda menghapus label pengamatan. Dalam latihan ini, Anda akan menggunakan dataset yang
sama. Tetapi alih-alih menjatuhkan label Spesies, Anda akan menggunakannya melakukan beberapa
supervised learning menggunakan partisi rekursif! Jangan khawatir jika Anda belum tahu apa itu.
Partisi rekursif (decision tree) akan dijelaskan pada Bab 3.

Lihatlah set data iris, gunakan str ( ) dan summary ( ). Kode yang membangun model
supervised learning dengan fungsi rpart ( ) dari paket rpart sudah disediakan untuk Anda. Model ini
melatih decision tree pada dataset iris. Gunakan fungsi predict ( ) dengan model tree sebagai
argumen pertama. Argumen kedua harus berupa kerangka data yang berisi pengamatan yang ingin
Anda prediksi labelnya. Dalam hal ini, Anda dapat menggunakan data frame unseen yang telah
ditentukan sebelumnya. Argumen ketiga harus type = "class". Cukup cetak hasil langkah prediksi ini.

set.seed(1)
iris
str(iris)
summary(iris)
tree <- rpart(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
data = iris, method = "class")
unseen <- data.frame(Sepal.Length = c(5.3, 7.2),
Sepal.Width = c(2.9, 3.9),
Petal.Length = c(1.7, 5.4),
Petal.Width = c(0.8, 2.3))
predict(tree,unseen,type= "class")

Bagaimana melakukan unsupervised learning (1)

Dalam latihan ini, Anda akan mengelompokkan mobil berdasarkan tenaga dan beratnya. Anda
dapat menemukan jenis mobil dan atribut yang sesuai dalam data frame mobil, yang telah diturunkan
dari dataset mtcars. Ini tersedia di ruang kerja Anda. Untuk mengelompokkan pengamatan yang
berbeda, Anda akan menggunakan lagi kmeans ( ). Singkatnya, tugas Anda adalah mengelompokkan
mobil dalam 2 kelompok, tetapi jangan lupa untuk menjelajahi dataset terlebih dahulu!

Jelajahi dataset menggunakan str ( ) dan summary ( ). Gunakan kmeans ( ) dengan dua
argumen untuk mengelompokkan mobil menjadi dua kelompok berdasarkan isi data frame mobil.
Tetapkan hasilnya ke km_cars. Cetak elemen kluster km_cars; itu menunjukkan mobil mana yang
termasuk kelompok mana.

cars
set.seed(1)
str(cars)
summary(cars)
km_cars<-kmeans(cars,2)
km_cars$cluster

Bagaimana melakukan unsupervised learning (2)

Pada latihan sebelumnya, Anda mengelompokkan mobil berdasarkan tenaga dan beratnya.
Sekarang mari kita lihat hasilnya! Bagian penting dalam pembelajaran mesin adalah memahami hasil
Anda. Dalam kasus pengelompokan, visualisasi adalah kunci interpretasi! Salah satu cara untuk
mencapai ini adalah dengan memplot fitur-fitur mobil dan mewarnai titik-titik berdasarkan kluster
yang sesuai. Dalam latihan ini Anda akan merangkum hasil Anda dalam angka yang komprehensif.
Data set cars sudah tersedia di ruang kerja Anda; kode untuk melakukan pengelompokan sudah
tersedia.

Selesaikan perintah plot ( ) dengan mewarnai mobil berdasarkan cluster mereka. Lakukan ini
dengan mengatur argumen col ke vektor partisi cluster: km_cars$cluster. Cetak centroid cluster,
yang merupakan jenis seperti pusat dari setiap cluster. Mereka dapat ditemukan di elemen pusat
km_cars. Isikan pada points ( ) dengan centroid cluster. Ini akan menambahkan centroid ke plot Anda
sebelumnya. Untuk mempelajari tentang parameter lain yang telah ditentukan untuk Anda, lihat di
https://www.rdocumentation.org/packages/graphics/versions/3.5.2/topics/par.

cars
set.seed(1)
km_cars <- kmeans(cars, 2)
km_cars$cluster
plot(cars, col=km_cars$cluster)
km_cars$centers
points(km_cars$centers, pch = 22, bg = c(1, 2), cex = 2)

Anda sekarang telah mengenal 3 teknik machine learning. Mari kita lihat apakah Anda
memahami perbedaan antara teknik-teknik ini. Mana yang supervised, dan mana yang tidak? Dari
daftar berikut, pilih masalah supervised learning : (1) Identifikasi wajah pada daftar foto Facebook.
Anda dapat melatih sistem Anda pada gambar Facebook yang ditandai. (2) Dengan beberapa fitur,
prediksi apakah suatu buah sudah rusak atau tidak. Beberapa supermarket memberi Anda
pengamatan dan hasil mereka sebelumnya. (3) Kelompokkan siswa DataCamp menjadi tiga
kelompok. Siswa dalam kelompok yang sama harus serupa, sedangkan mereka yang berada di
kelompok yang berbeda harus berbeda. Bagus! Mengelompokkan siswa ke dalam tiga kelompok
berbeda akan memerlukan fitur siswa, tetapi Anda tidak memerlukan label. Anda hanya ingin
mengukur apakah para siswa sama, berdasarkan fitur mereka. Tentu jawabannya adalah nomor (1)
dan (2).

Anda mungkin juga menyukai