Anda di halaman 1dari 61

Diterjemahkan dari bahasa Inggris ke bahasa Indonesia - www.onlinedoctranslator.

com

Analisis Big Data - Ikhtisar


Volume data yang harus dihadapi seseorang telah meledak ke tingkat yang tak terbayangkan dalam
dekade terakhir, dan pada saat yang sama, harga penyimpanan data telah berkurang secara sistematis.
Perusahaan swasta dan lembaga penelitian menangkap terabyte data tentang interaksi pengguna,
bisnis, media sosial, dan juga sensor dari perangkat seperti ponsel dan mobil. Tantangan era ini adalah
memahami lautan data ini. Di sinilahanalitik data besardatang ke dalam gambar.

Big Data Analytics sebagian besar melibatkan pengumpulan data dari sumber yang berbeda, mengolahnya
sedemikian rupa sehingga tersedia untuk dikonsumsi oleh analis dan akhirnya mengirimkan produk data yang
berguna untuk bisnis organisasi.

Proses mengonversi sejumlah besar data mentah yang tidak terstruktur, yang diambil dari berbagai sumber
menjadi produk data yang berguna bagi organisasi, merupakan inti dari Big Data Analytics.

Analisis Big Data - Siklus Hidup Data


Siklus Hidup Penambangan Data Tradisional

Untuk menyediakan kerangka kerja untuk mengatur pekerjaan yang dibutuhkan oleh suatu organisasi dan memberikan wawasan
yang jelas dari Big Data, ada baiknya untuk menganggapnya sebagai siklus dengan tahapan yang berbeda. Hal ini tidak
berarti linier, artinya semua tahapan saling berhubungan. Siklus ini memiliki kesamaan yang dangkal dengan
siklus penambangan data yang lebih tradisional seperti yang dijelaskan dalamMetodologi CRISP.

Metodologi CRISP-DM

ItuMetodologi CRISP-DMyang merupakan singkatan dari Cross Industry Standard Process for Data Mining, adalah
siklus yang menjelaskan pendekatan yang umum digunakan yang digunakan pakar data mining untuk mengatasi
masalah dalam data mining BI tradisional. Ini masih digunakan dalam tim data mining BI tradisional.

Perhatikan ilustrasi berikut. Ini menunjukkan tahapan utama dari siklus seperti yang dijelaskan oleh
metodologi CRISP-DM dan bagaimana mereka saling terkait.

CRISP-DM digagas pada tahun 1996 dan tahun berikutnya, itu mulai berjalan sebagai proyek Uni Eropa
di bawah inisiatif pendanaan ESPRIT. Proyek ini dipimpin oleh lima perusahaan: SPSS, Teradata,
Daimler AG, NCR Corporation, dan OHRA (perusahaan asuransi). Proyek ini akhirnya dimasukkan ke
dalam SPSS. Metodologinya sangat rinci berorientasi pada bagaimana proyek data mining harus
ditentukan.

Sekarang mari kita belajar sedikit lebih banyak tentang setiap tahapan yang terlibat dalam siklus hidup CRISP-DM
• Pengertian Bisnis− Fase awal ini berfokus pada pemahaman tujuan dan persyaratan proyek
dari perspektif bisnis, dan kemudian mengubah pengetahuan ini menjadi definisi masalah
penambangan data. Rencana awal dirancang untuk mencapai tujuan. Sebuah model
keputusan, terutama yang dibangun dengan menggunakan Model Keputusan dan standar
Notasi dapat digunakan.
• Pemahaman Data− Tahap pemahaman data dimulai dengan pengumpulan data awal dan dilanjutkan
dengan kegiatan untuk mengenal data, mengidentifikasi masalah kualitas data, menemukan wawasan
pertama ke dalam data, atau mendeteksi himpunan bagian yang menarik untuk membentuk hipotesis
untuk informasi tersembunyi.
• Persiapan data− Tahap persiapan data mencakup semua kegiatan untuk membangun dataset akhir
(data yang akan dimasukkan ke dalam alat pemodelan) dari data mentah awal. Tugas persiapan data
kemungkinan akan dilakukan beberapa kali, dan tidak dalam urutan yang ditentukan. Tugas
termasuk tabel, catatan, dan pemilihan atribut serta transformasi dan pembersihan data untuk alat
pemodelan.
• Pemodelan− Pada fase ini, berbagai teknik pemodelan dipilih dan diterapkan dan
parameternya dikalibrasi ke nilai optimal. Biasanya, ada beberapa teknik untuk tipe masalah
data mining yang sama. Beberapa teknik memiliki persyaratan khusus pada bentuk data.
Oleh karena itu, seringkali diperlukan langkah mundur ke tahap persiapan data.
• Evaluasi− Pada tahap proyek ini, Anda telah membangun model (atau model) yang tampaknya
memiliki kualitas tinggi, dari perspektif analisis data. Sebelum melanjutkan ke penerapan akhir model,
penting untuk mengevaluasi model secara menyeluruh dan meninjau langkah-langkah yang
dijalankan untuk membangun model, untuk memastikannya mencapai tujuan bisnis dengan benar.

Tujuan utama adalah untuk menentukan apakah ada beberapa masalah bisnis penting yang
belum cukup dipertimbangkan. Pada akhir fase ini, keputusan tentang penggunaan hasil data
mining harus dicapai.

• Penyebaran− Penciptaan model umumnya bukan akhir dari proyek. Bahkan jika tujuan dari model
tersebut adalah untuk meningkatkan pengetahuan tentang data, pengetahuan yang diperoleh
perlu diatur dan disajikan dengan cara yang berguna bagi pelanggan.

Tergantung pada persyaratan, fase penyebaran dapat sesederhana menghasilkan laporan atau
serumit menerapkan penilaian data berulang (misalnya alokasi segmen) atau proses
penambangan data.

Dalam banyak kasus, pelanggan, bukan analis data, yang akan melakukan langkah
penerapan. Bahkan jika analis menyebarkan model, penting bagi pelanggan untuk
memahami di awal tindakan yang perlu dilakukan untuk benar-benar memanfaatkan model
yang dibuat.

Metodologi SEMMA

SEMMA adalah metodologi lain yang dikembangkan oleh SAS untuk pemodelan data mining. Itu singkatan dari S
cukup,Ejelajahi,Mmemodifikasi,Mmodel, danSEBUAHses. Berikut adalah deskripsi singkat tentang tahapannya
• Sampel− Prosesnya dimulai dengan pengambilan sampel data, misalnya memilih kumpulan data untuk
pemodelan. Dataset harus cukup besar untuk memuat informasi yang cukup untuk diambil, namun cukup
kecil untuk digunakan secara efisien. Fase ini juga berhubungan dengan partisi data.
• Mengeksplorasi− Fase ini mencakup pemahaman data dengan menemukan hubungan
yang diantisipasi dan tidak diantisipasi antara variabel, dan juga kelainan, dengan bantuan
visualisasi data.
• Memodifikasi− Fase Modify berisi metode untuk memilih, membuat dan mengubah variabel dalam
persiapan untuk pemodelan data.
• Model− Pada fase Model, fokusnya adalah pada penerapan berbagai teknik pemodelan (data
mining) pada variabel yang disiapkan untuk membuat model yang mungkin memberikan hasil
yang diinginkan.
• Menilai− Evaluasi hasil pemodelan menunjukkan keandalan dan kegunaan
model yang dibuat.

Perbedaan utama antara CRISM-DM dan SEMMA adalah bahwa SEMMA berfokus pada aspek
pemodelan, sedangkan CRISP-DM lebih mementingkan tahapan siklus sebelum pemodelan seperti
memahami masalah bisnis yang akan dipecahkan, memahami dan melakukan praproses data yang
akan dilakukan. digunakan sebagai input, misalnya algoritma pembelajaran mesin.

Siklus Hidup Data Besar

Dalam konteks data besar saat ini, pendekatan sebelumnya tidak lengkap atau kurang optimal. Misalnya,
metodologi SEMMA mengabaikan pengumpulan data sepenuhnya dan pra-pemrosesan sumber data yang
berbeda. Tahapan ini biasanya merupakan sebagian besar pekerjaan dalam proyek data besar yang sukses.

Siklus analitik data besar dapat dijelaskan dengan tahap berikut

• Definisi Masalah Bisnis


• Riset
• Penilaian Sumber Daya Manusia
• Akuisisi Data
• Penguncian Data
• Penyimpanan data

• Analisis Data Eksplorasi


• Persiapan Data untuk Pemodelan dan Penilaian
• Pemodelan
• Penerapan

Di bagian ini, kami akan menyoroti masing-masing tahapan siklus hidup data besar ini.

Definisi Masalah Bisnis

Ini adalah poin yang umum dalam siklus hidup BI tradisional dan analitik data besar. Biasanya ini adalah tahap nontrivial
dari proyek data besar untuk mendefinisikan masalah dan mengevaluasi dengan benar seberapa banyak
keuntungan potensial yang mungkin dimilikinya untuk sebuah organisasi. Tampaknya jelas untuk menyebutkan hal ini, tetapi harus
dievaluasi berapa keuntungan dan biaya yang diharapkan dari proyek tersebut.

Riset

Analisis apa yang telah dilakukan perusahaan lain dalam situasi yang sama. Ini melibatkan mencari solusi
yang masuk akal untuk perusahaan Anda, meskipun itu melibatkan mengadaptasi solusi lain dengan sumber
daya dan persyaratan yang dimiliki perusahaan Anda. Pada tahap ini, metodologi untuk tahap selanjutnya
harus ditentukan.

Penilaian Sumber Daya Manusia

Setelah masalah didefinisikan, masuk akal untuk terus menganalisis apakah staf saat ini dapat menyelesaikan
proyek dengan sukses. Tim BI tradisional mungkin tidak mampu memberikan solusi optimal untuk semua tahapan,
sehingga harus dipertimbangkan sebelum memulai proyek jika ada kebutuhan untuk mengalihdayakan sebagian
proyek atau mempekerjakan lebih banyak orang.

Akuisisi Data

Bagian ini adalah kunci dalam siklus hidup data besar; itu mendefinisikan jenis profil yang akan diperlukan untuk
mengirimkan produk data yang dihasilkan. Pengumpulan data adalah langkah proses yang tidak sepele; biasanya
melibatkan pengumpulan data tidak terstruktur dari sumber yang berbeda. Sebagai contoh, ini bisa melibatkan
penulisan crawler untuk mengambil ulasan dari situs web. Ini melibatkan berurusan dengan teks, mungkin dalam
bahasa yang berbeda biasanya membutuhkan banyak waktu untuk diselesaikan.

Penguncian Data

Setelah data diambil, misalnya, dari web, data tersebut perlu disimpan dalam format yang mudah digunakan.
Untuk melanjutkan dengan contoh ulasan, mari kita asumsikan data diambil dari situs yang berbeda di mana
masing-masing memiliki tampilan data yang berbeda.

Misalkan satu sumber data memberikan ulasan dalam hal peringkat dalam bintang, oleh karena itu dimungkinkan untuk
membaca ini sebagai pemetaan untuk variabel responskamu{1, 2, 3, 4, 5}. Sumber data lain memberikan ulasan
menggunakan sistem dua panah, satu untuk voting naik dan yang lainnya untuk voting turun. Ini akan menyiratkan
variabel respons dari bentukkamu{positif negatif}.

Untuk menggabungkan kedua sumber data, keputusan harus dibuat agar kedua representasi respons ini setara.
Ini dapat melibatkan konversi representasi respons sumber data pertama ke bentuk kedua, dengan
mempertimbangkan satu bintang sebagai negatif dan lima bintang sebagai positif. Proses ini seringkali
membutuhkan alokasi waktu yang besar agar dapat disampaikan dengan kualitas yang baik.

Penyimpanan data

Setelah data diproses, terkadang perlu disimpan dalam database. Teknologi data besar menawarkan banyak
alternatif mengenai hal ini. Alternatif paling umum adalah menggunakan Sistem File Hadoop untuk
penyimpanan yang menyediakan versi SQL terbatas bagi pengguna, yang dikenal sebagai HIVE
Bahasa Kueri. Hal ini memungkinkan sebagian besar tugas analitik dilakukan dengan cara yang sama seperti yang
dilakukan di gudang data BI tradisional, dari perspektif pengguna. Opsi penyimpanan lain yang perlu dipertimbangkan
adalah MongoDB, Redis, dan SPARK.

Tahap siklus ini terkait dengan pengetahuan sumber daya manusia dalam hal kemampuan mereka untuk
mengimplementasikan arsitektur yang berbeda. Versi modifikasi dari gudang data tradisional masih
digunakan dalam aplikasi skala besar. Misalnya, teradata dan IBM menawarkan database SQL yang dapat
menangani terabyte data; solusi open source seperti postgreSQL dan MySQL masih digunakan untuk
aplikasi skala besar.

Meskipun ada perbedaan dalam cara kerja penyimpanan yang berbeda di latar belakang, dari sisi klien, sebagian besar solusi
menyediakan SQL API. Oleh karena itu, memiliki pemahaman yang baik tentang SQL masih merupakan keterampilan utama yang
harus dimiliki untuk analitik data besar.

Tahap iniprioritastampaknya menjadi topik yang paling penting, dalam praktiknya, ini tidak benar. Ini bahkan bukan tahap
penting. Dimungkinkan untuk mengimplementasikan solusi big data yang akan bekerja dengan data real-time, jadi dalam
hal ini, kita hanya perlu mengumpulkan data untuk mengembangkan model dan kemudian mengimplementasikannya
secara real time. Jadi tidak perlu menyimpan data secara formal sama sekali.

Analisis Data Eksplorasi

Setelah data dibersihkan dan disimpan sedemikian rupa sehingga wawasan dapat diambil darinya, fase
eksplorasi data wajib dilakukan. Tujuan dari tahap ini adalah untuk memahami data, hal ini biasanya
dilakukan dengan teknik statistik dan juga memplot data. Ini adalah tahap yang baik untuk
mengevaluasi apakah definisi masalah masuk akal atau layak.

Persiapan Data untuk Pemodelan dan Penilaian

Tahap ini melibatkan pembentukan kembali data bersih yang diambil sebelumnya dan menggunakan pra-
pemrosesan statistik untuk imputasi nilai yang hilang, deteksi outlier, normalisasi, ekstraksi fitur, dan
pemilihan fitur.

Pemodelan

Tahap sebelumnya harus menghasilkan beberapa dataset untuk pelatihan dan pengujian, misalnya model prediktif.
Tahap ini melibatkan mencoba model yang berbeda dan melihat ke depan untuk memecahkan masalah bisnis yang
dihadapi. Dalam praktiknya, biasanya diinginkan bahwa model tersebut akan memberikan beberapa wawasan
tentang bisnis. Akhirnya, model atau kombinasi model terbaik dipilih untuk mengevaluasi kinerjanya pada
kumpulan data yang ditinggalkan.

Penerapan

Pada tahap ini, produk data yang dikembangkan diimplementasikan pada data pipeline
perusahaan. Ini melibatkan pengaturan skema validasi saat produk data bekerja, untuk
melacak kinerjanya. Misalnya, dalam kasus penerapan model prediktif, tahap ini akan
melibatkan penerapan model ke data baru dan setelah respons tersedia, evaluasi model.
Analisis Data Besar - Metodologi
Dalam hal metodologi, analitik data besar berbeda secara signifikan dari pendekatan statistik tradisional desain
eksperimental. Analytics dimulai dengan data. Biasanya kami memodelkan data dengan cara menjelaskan respons.
Tujuan dari pendekatan ini adalah untuk memprediksi perilaku respon atau memahami bagaimana variabel input
berhubungan dengan respon. Biasanya dalam desain eksperimental statistik, eksperimen dikembangkan dan data
diambil sebagai hasilnya. Hal ini memungkinkan untuk menghasilkan data dengan cara yang dapat digunakan oleh
model statistik, di mana asumsi tertentu berlaku seperti independensi, normalitas, dan pengacakan.

Dalam analitik data besar, kami disajikan dengan data. Kami tidak dapat merancang eksperimen yang memenuhi
model statistik favorit kami. Dalam aplikasi analitik skala besar, sejumlah besar pekerjaan (biasanya 80% dari upaya)
diperlukan hanya untuk membersihkan data, sehingga dapat digunakan oleh model pembelajaran mesin.

Kami tidak memiliki metodologi unik untuk diikuti dalam aplikasi skala besar yang nyata. Biasanya setelah
masalah bisnis didefinisikan, diperlukan tahap penelitian untuk merancang metodologi yang akan digunakan.
Namun pedoman umum relevan untuk disebutkan dan berlaku untuk hampir semua masalah.

Salah satu tugas terpenting dalam analitik data besar adalahpemodelan statistik, yang berarti masalah klasifikasi
atau regresi yang diawasi dan tidak diawasi. Setelah data dibersihkan dan diproses sebelumnya, tersedia untuk
pemodelan, perhatian harus diberikan dalam mengevaluasi model yang berbeda dengan metrik kerugian yang wajar
dan kemudian setelah model diimplementasikan, evaluasi lebih lanjut dan hasilnya harus dilaporkan. Perangkap
umum dalam pemodelan prediktif adalah hanya menerapkan model dan tidak pernah mengukur kinerjanya.

Analisis Big Data - Hasil Inti


Seperti yang disebutkan dalam siklus hidup data besar, produk data yang dihasilkan dari pengembangan produk data
besar dalam sebagian besar kasus adalah beberapa hal berikut

• Implementasi pembelajaran mesin− Ini bisa berupa algoritma klasifikasi,


model regresi atau model segmentasi.
• Sistem rekomendasi− Tujuannya adalah untuk mengembangkan sistem yang merekomendasikan
pilihan berdasarkan perilaku pengguna.Netflixadalah contoh karakteristik produk data ini, di mana
berdasarkan peringkat pengguna, film lain direkomendasikan.
• Dasbor− Bisnis biasanya membutuhkan alat untuk memvisualisasikan data agregat. Dasbor adalah
mekanisme grafis untuk membuat data ini dapat diakses.
• Analisis Ad-Hoc− Biasanya area bisnis memiliki pertanyaan, hipotesis atau mitos yang dapat
dijawab dengan melakukan analisis ad-hoc dengan data.

Analisis Big Data - Pemangku Kepentingan Utama


Dalam organisasi besar, agar berhasil mengembangkan proyek big data, diperlukan manajemen yang mendukung
proyek tersebut. Ini biasanya melibatkan menemukan cara untuk menunjukkan keuntungan bisnis dari proyek
tersebut. Kami tidak memiliki solusi unik untuk masalah menemukan sponsor untuk sebuah proyek, tetapi
beberapa panduan diberikan di bawah ini

• Periksa siapa dan di mana sponsor proyek lain yang serupa dengan yang Anda
minati.
• Memiliki kontak pribadi di posisi manajemen kunci membantu, sehingga kontak apa pun dapat
dipicu jika proyek menjanjikan.
• Siapa yang akan mendapat manfaat dari proyek Anda? Siapa yang akan menjadi klien Anda setelah proyek berjalan sesuai
rencana?
• Kembangkan proposal yang sederhana, jelas, dan menarik serta bagikan dengan pemain kunci di
organisasi Anda.

Cara terbaik untuk menemukan sponsor untuk sebuah proyek adalah dengan memahami masalahnya dan apa
yang akan menjadi produk data yang dihasilkan setelah diimplementasikan. Pemahaman ini akan memberikan
keunggulan dalam meyakinkan manajemen akan pentingnya proyek big data.

Analisis Data Besar - Analis Data


Seorang analis data memiliki profil berorientasi pelaporan, memiliki pengalaman dalam mengekstraksi dan menganalisis
data dari gudang data tradisional menggunakan SQL. Tugas mereka biasanya di sisi penyimpanan data atau dalam
melaporkan hasil bisnis secara umum. Data warehousing sama sekali tidak sederhana, hanya berbeda dengan apa yang
dilakukan oleh seorang ilmuwan data.

Banyak organisasi berjuang keras untuk menemukan ilmuwan data yang kompeten di pasar. Namun merupakan ide bagus
untuk memilih calon analis data dan mengajari mereka keterampilan yang relevan untuk menjadi ilmuwan data. Ini sama
sekali bukan tugas sepele dan biasanya melibatkan orang yang mengambil gelar master di bidang kuantitatif, tetapi ini
jelas merupakan pilihan yang layak. Keterampilan dasar yang harus dimiliki oleh seorang analis data yang kompeten
tercantum di bawah ini

• pengertian bisnis
• pemrograman SQL
• Desain dan implementasi laporan
• Pengembangan dasbor

Analisis Data Besar - Ilmuwan Data


Peran seorang ilmuwan data biasanya dikaitkan dengan tugas-tugas seperti pemodelan prediktif, mengembangkan
algoritma segmentasi, sistem pemberi rekomendasi, kerangka kerja pengujian A/B, dan sering kali bekerja dengan data
mentah yang tidak terstruktur.

Sifat pekerjaan mereka menuntut pemahaman yang mendalam tentang matematika, statistik terapan, dan
pemrograman. Ada beberapa keterampilan umum antara seorang analis data dan seorang ilmuwan data, untuk:
contoh, kemampuan untuk query database. Keduanya menganalisis data, tetapi keputusan seorang ilmuwan data dapat memiliki
dampak yang lebih besar dalam suatu organisasi.

Berikut adalah seperangkat keterampilan yang biasanya harus dimiliki oleh seorang ilmuwan data

• Pemrograman dalam paket statistik seperti: R, Python, SAS, SPSS, atau Julia
• Mampu membersihkan, mengekstrak, dan menjelajahi data dari berbagai sumber
• Penelitian, desain, dan implementasi model statistik
• Pengetahuan statistik, matematika, dan ilmu komputer yang mendalam

Dalam analitik data besar, orang biasanya mengacaukan peran ilmuwan data dengan arsitek data. Pada
kenyataannya, perbedaannya cukup sederhana. Arsitek data mendefinisikan alat dan arsitektur tempat data
akan disimpan, sedangkan ilmuwan data menggunakan arsitektur ini. Tentu saja, seorang ilmuwan data harus
dapat menyiapkan alat baru jika diperlukan untuk proyek ad-hoc, tetapi definisi dan desain infrastruktur tidak
boleh menjadi bagian dari tugasnya.

Analisis Data Besar - Definisi Masalah


Melalui tutorial ini, kita akan mengembangkan sebuah proyek. Setiap bab berikutnya dalam tutorial ini
membahas bagian dari proyek yang lebih besar di bagian proyek mini. Ini dianggap sebagai bagian tutorial
terapan yang akan memberikan paparan masalah dunia nyata. Dalam hal ini, kita akan mulai dengan
definisi masalah proyek.

Deskripsi Proyek
Tujuan dari proyek ini adalah untuk mengembangkan model pembelajaran mesin untuk memprediksi gaji per jam
orang menggunakan teks curriculum vitae (CV) mereka sebagai input.

Menggunakan kerangka kerja yang didefinisikan di atas, mudah untuk mendefinisikan masalah. Kita dapat
mendefinisikanX = {x1, x2, …, xn}sebagai CV pengguna, di mana setiap fitur dapat, dengan cara yang paling
sederhana, berapa kali kata ini muncul. Kemudian responsnya dinilai nyata, kami mencoba memprediksi gaji
per jam individu dalam dolar.

Dua pertimbangan ini cukup untuk menyimpulkan bahwa masalah yang disajikan dapat diselesaikan
dengan algoritma regresi terawasi.

Definisi masalah
Definisi masalahmungkin merupakan salah satu tahap yang paling kompleks dan sangat diabaikan dalam saluran analitik
data besar. Untuk mendefinisikan masalah yang akan dipecahkan oleh produk data, pengalaman adalah wajib. Sebagian
besar calon ilmuwan data memiliki sedikit atau tidak memiliki pengalaman dalam tahap ini.

Sebagian besar masalah data besar dapat dikategorikan dengan cara berikut
• Klasifikasi yang diawasi
• Regresi yang diawasi
• Pembelajaran tanpa pengawasan

• Belajar untuk menentukan peringkat

Mari kita pelajari lebih lanjut tentang keempat konsep ini.

Klasifikasi yang Diawasi

Diberikan matriks fiturX = {x1, x2, ..., xn}kami mengembangkan model M untuk memprediksi kelas berbeda yang
didefinisikan sebagaiy = {c1, c2, ..., cn}. Sebagai contoh: Mengingat data transaksi pelanggan di perusahaan asuransi,
dimungkinkan untuk mengembangkan model yang akan memprediksi apakah klien akan churn atau tidak. Yang
terakhir adalah masalah klasifikasi biner, di mana ada dua kelas atau variabel target: churn dan bukan churn.

Masalah lain melibatkan memprediksi lebih dari satu kelas, kita mungkin tertarik untuk melakukan
pengenalan digit, oleh karena itu vektor respons akan didefinisikan sebagai:y = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
model tercanggih akan menjadi jaringan saraf convolutional dan matriks fitur akan didefinisikan
sebagai piksel gambar.

Regresi yang Diawasi

Dalam hal ini, definisi masalah agak mirip dengan contoh sebelumnya; perbedaan bergantung
pada respon. Dalam masalah regresi, respon y∈ , ini berarti responsnya bernilai nyata. Misalnya,
kita dapat mengembangkan model untuk memprediksi gaji per jam individu yang diberikan korpus
CV mereka.

Pembelajaran tanpa pengawasan

Manajemen sering haus akan wawasan baru. Model segmentasi dapat memberikan wawasan ini agar
departemen pemasaran dapat mengembangkan produk untuk segmen yang berbeda. Pendekatan yang baik
untuk mengembangkan model segmentasi, daripada memikirkan algoritma, adalah memilih fitur yang
relevan dengan segmentasi yang diinginkan.

Misalnya, di perusahaan telekomunikasi, menarik untuk mengelompokkan klien berdasarkan


penggunaan ponsel mereka. Ini akan melibatkan pengabaian fitur yang tidak ada hubungannya
dengan tujuan segmentasi dan hanya menyertakan fitur yang sesuai. Dalam hal ini, ini akan memilih
fitur seperti jumlah SMS yang digunakan dalam sebulan, jumlah menit masuk dan keluar, dll.

Belajar untuk Peringkat

Masalah ini dapat dianggap sebagai masalah regresi, tetapi memiliki karakteristik tertentu dan memerlukan
penanganan tersendiri. Masalahnya melibatkan kumpulan dokumen yang diberikan, kami berusaha menemukan
urutan paling relevan yang diberikan kueri. Untuk mengembangkan algoritma pembelajaran yang diawasi, perlu
untuk memberi label seberapa relevan suatu pemesanan, diberikan kueri.
Penting untuk dicatat bahwa untuk mengembangkan algoritma pembelajaran yang diawasi, diperlukan label
data pelatihan. Ini berarti bahwa untuk melatih model yang akan, misalnya, mengenali angka dari suatu
gambar, kita perlu memberi label sejumlah besar contoh dengan tangan. Ada layanan web yang dapat
mempercepat proses ini dan biasanya digunakan untuk tugas ini seperti turk mekanik amazon. Terbukti
bahwa algoritme pembelajaran meningkatkan kinerjanya ketika disediakan dengan lebih banyak data,
sehingga memberi label jumlah contoh yang layak secara praktis wajib dalam pembelajaran terawasi.

Analisis Data Besar - Pengumpulan Data


Pengumpulan data memainkan peran paling penting dalam siklus Big Data. Internet menyediakan sumber
data yang hampir tidak terbatas untuk berbagai topik. Pentingnya area ini tergantung pada jenis bisnisnya,
tetapi industri tradisional dapat memperoleh beragam sumber data eksternal dan menggabungkannya
dengan data transaksional mereka.

Sebagai contoh, mari kita asumsikan kita ingin membangun sistem yang merekomendasikan restoran. Langkah
pertama adalah mengumpulkan data, dalam hal ini, ulasan restoran dari berbagai situs web dan menyimpannya
dalam database. Karena kami tertarik pada teks mentah, dan akan menggunakannya untuk analitik, tidak begitu
relevan di mana data untuk mengembangkan model akan disimpan. Ini mungkin terdengar kontradiktif dengan
teknologi utama big data, tetapi untuk mengimplementasikan aplikasi big data, kita hanya perlu membuatnya
bekerja secara real time.

Proyek Mini Twitter


Setelah masalah didefinisikan, tahap selanjutnya adalah mengumpulkan data. Ide proyek mini berikut adalah
bekerja mengumpulkan data dari web dan menyusunnya untuk digunakan dalam model pembelajaran mesin. Kami
akan mengumpulkan beberapa tweet dari twitter rest API menggunakan bahasa pemrograman R.

Pertama-tama buat akun twitter, lalu ikuti petunjuk diIndonesiakemasan skema untuk
membuat akun pengembang twitter. Ini adalah ringkasan dari instruksi tersebut

• Pergi kehttps://twitter.com/apps/new dan masuk.


• Setelah mengisi info dasar, buka tab "Pengaturan" dan pilih "Baca, Tulis, dan Akses
pesan langsung".
• Pastikan untuk mengklik tombol simpan setelah melakukan ini
• Di tab "Detail", catat kunci konsumen dan rahasia konsumen Anda
• Di sesi R Anda, Anda akan menggunakan kunci API dan nilai rahasia API
• Terakhir jalankan skrip berikut. Ini akan menginstalIndonesiapaket dari repositori di
github.

install.packages(c("devtools", "rjson", "bit64", "httr"))

# Pastikan untuk memulai kembali sesi R Anda di perpustakaan titik


ini (devtools)
install_github("geoffjentry/twitter")
Kami tertarik untuk mendapatkan data di mana string "big mac" disertakan dan mencari tahu topik mana yang
menonjol tentang hal ini. Untuk melakukan ini, langkah pertama adalah mengumpulkan data dari twitter. Di
bawah ini adalah skrip R kami untuk mengumpulkan data yang diperlukan dari twitter. Kode ini juga tersedia di
file bda/part1/collect_data/collect_data_twitter.R.

rm(daftar = ls(semua = BENAR)); gc() # Menghapus perpustakaan lingkungan


global(twitteR)
Sys.setlocale(kategori = "LC_ALL", lokal = "C")

# # # Ganti xxx dengan nilai yang Anda dapatkan dari instruksi sebelumnya

# kunci_konsumen = "xxxxxxxxxxxxxxxxxxxxx"
# rahasia_konsumen = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# access_token =
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# access_token_secret= "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# Hubungkan ke twitter rest API setup_twitter_oauth(consumer_key, consumer_secret,


access_token, access_token_secret)

# Dapatkan tweet terkait big mac


tweets <- searchTwitter('big mac', n = 200, lang = 'en') df <-
twListToDF(tweets)

# Lihatlah kepala data (df)

# Periksa perangkat mana yang paling sering digunakan


sumber <- sapply(tweets, function(x) x$getStatusSource()) sources <- gsub("</
a>", "", sources)
sumber <- strsplit(sumber, ">")
sumber <- sapply(sumber, fungsi(x) ifelse(panjang(x) > 1, x[2], x[1])) source_table = tabel(sumber)

source_table = source_table[tabel_sumber > 1]


freq = source_table[order(source_table, menurun = T)] as.data.frame(freq)

# Frekuensi
# Twitter untuk iPhone 71
#Twitter untuk Android 29
# Klien Web Twitter 25
# pengakuan 20

Analisis Big Data - Membersihkan Data


Setelah data dikumpulkan, kami biasanya memiliki sumber data yang beragam dengan karakteristik yang
berbeda. Langkah paling cepat adalah membuat sumber data ini homogen dan terus mengembangkan
produk data kami. Namun, itu tergantung pada jenis datanya. Kita harus bertanya pada diri sendiri apakah
praktis untuk menyeragamkan data.
Mungkin sumber datanya sama sekali berbeda, dan kehilangan informasi akan besar jika sumbernya
disamakan. Dalam hal ini, kita bisa memikirkan alternatif. Dapatkah satu sumber data membantu saya
membangun model regresi dan yang lainnya model klasifikasi? Apakah mungkin untuk bekerja dengan
heterogenitas pada keuntungan kita daripada hanya kehilangan informasi? Mengambil keputusan inilah yang
membuat analitik menarik dan menantang.

Dalam hal ulasan, dimungkinkan untuk memiliki bahasa untuk setiap sumber data. Sekali lagi, kita punya dua
pilihan

• Homogenisasi− Ini melibatkan menerjemahkan bahasa yang berbeda ke bahasa di mana kami
memiliki lebih banyak data. Kualitas layanan terjemahan dapat diterima, tetapi jika kami ingin
menerjemahkan sejumlah besar data dengan API, biayanya akan signifikan. Ada perangkat
lunak yang tersedia untuk tugas ini, tetapi itu juga akan mahal.
• Heterogenisasi− Apakah mungkin untuk mengembangkan solusi untuk setiap bahasa? Karena mudahnya
mendeteksi bahasa korpus, kami dapat mengembangkan rekomendasi untuk setiap bahasa. Ini akan
melibatkan lebih banyak pekerjaan dalam hal menyetel setiap pemberi rekomendasi sesuai dengan jumlah
bahasa yang tersedia tetapi jelas merupakan pilihan yang layak jika kami memiliki beberapa bahasa yang
tersedia.

Proyek Mini Twitter


Dalam kasus ini, pertama-tama kita perlu membersihkan data yang tidak terstruktur dan kemudian mengubahnya
menjadi matriks data untuk menerapkan pemodelan topik di dalamnya. Secara umum, ketika mendapatkan data dari
twitter, ada beberapa karakter yang tidak ingin kita gunakan, setidaknya pada tahap pertama dari proses pembersihan
data.

Misalnya, setelah mendapatkan tweet, kita mendapatkan karakter aneh ini:


"<ed><U+00A0><U+00BD><ed><U+00B8><U+008B>". Ini mungkin emotikon, jadi untuk membersihkan
data, kami hanya akan menghapusnya menggunakan skrip berikut. Kode ini juga tersedia di file bda/
part1/collect_data/cleaning_data.R.

rm(daftar = ls(semua = BENAR)); gc() # Menghapus sumber lingkungan


global('collect_data_twitter.R')
# Beberapa tweet
kepala(df$teks)

[1] "Saya bukan penggemar berat kalkun tetapi Mac & keju panggang
<ed><U+00A0><U+00BD><ed><U+00B8><U+008B>" [2] "@ Jayoh30
Seperti tidak ada saus khusus di mac besar. BAGAIMANA"
# # # Kami tertarik dengan teks - Mari kita bersihkan!

# Pertama-tama kita konversi encoding teks dari latin1 ke ASCII df$text <-
sapply(df$text,function(row) iconv(row, "latin1", "ASCII", sub = ""))

# Buat fungsi untuk membersihkan tweet


clean.text <- function(tx) {
tx <- gsub("htt.{1,20}", " ", tx, abaikan.kasus = BENAR)
tx = gsub("[^#[:^punct:]]|@|RT", " ", tx, perl = TRUE, abaikan.case = TRUE)
tx = gsub("[[:digit:]]", " ", tx, abaikan.case = TRUE) tx = gsub(" {1,}", " ", tx,
abaikan.case = TRUE)
tx = gsub("^\\s+|\\s+$", " ", tx, abaikan.case = TRUE) return(tx)

clean_tweets <- lapply(df$text, clean.text)

# Tweet dibersihkan
kepala(clean_tweets)
[1] " Garis rias baru WeNeedFeminlsm MAC menampilkan pria woc dan gadis besar "
[1] " TravelsPhoto Apa yang Terjadi Pada Tubuh Anda Satu Jam Setelah Big Mac "

Langkah terakhir dari proyek mini pembersihan data adalah membersihkan teks yang dapat kita konversi ke matriks dan
menerapkan algoritme. Dari teks yang disimpan diclean_tweetsvektor kita dapat dengan mudah mengubahnya menjadi
sekantong matriks kata dan menerapkan algoritma pembelajaran tanpa pengawasan.

Analisis Big Data - Meringkas Data


Pelaporan sangat penting dalam analitik data besar. Setiap organisasi harus memiliki penyediaan informasi
yang teratur untuk mendukung proses pengambilan keputusannya. Tugas ini biasanya ditangani oleh analis
data dengan pengalaman SQL dan ETL (extract, transfer, and load).

Tim yang bertanggung jawab atas tugas ini memiliki tanggung jawab untuk menyebarkan informasi yang
dihasilkan di departemen analitik data besar ke berbagai area organisasi.

Contoh berikut menunjukkan apa arti peringkasan data. Arahkan ke folder bda/part1/
summarize_datadan di dalam folder, bukaringkasan_data.Rprojfile dengan mengklik
dua kali. Kemudian, bukameringkas_data.Rscript dan lihat kodenya, dan ikuti penjelasan
yang disajikan.

# Instal paket-paket berikut dengan menjalankan kode berikut di R. pkgs = c('data.table',


'ggplot2', 'nycflights13', 'reshape2') install.packages(pkgs)

Ituggplot2paket sangat bagus untuk visualisasi data. Itutabel datapackage adalah pilihan yang bagus untuk melakukan
peringkasan yang cepat dan hemat memori diR. Benchmark baru-baru ini menunjukkan bahwa itu bahkan lebih cepat daripada
panda, pustaka python yang digunakan untuk tugas serupa.
Lihatlah data menggunakan kode berikut. Kode ini juga tersedia di bda/part1/
summarize_data/summarize_data.Rprojmengajukan.

perpustakaan(nycflights13)
perpustakaan (ggplot2)
perpustakaan(data.tabel)
perpustakaan (membentuk ulang2)

# Konversikan data.frame penerbangan ke objek data.table dan beri nama DT DT <-


as.data.table(flights)

# Data memiliki 336776 baris dan 16 kolom redup (DT)

# Lihatlah kepala baris pertama (DT)

# tahun bulan hari dep_time dep_delay arr_time arr_delay carrier


#1: 2013 1 1 517 2 830 11 UA
#2: 2013 1 1 533 4 850 20 UA
#3: 2013 1 1 542 2 923 33 AA
#4: 2013 1 1 544 -1 1004 - 18 B6
#5: 2013 1 1 554 -6 812 - 25 DL
#6: 2013 1 1 554 -4 740 12 UA

# nomor ekor penerbangan asal tujuan air_time jarak jam menit


# 1: N14228 1545 EWR IA 227 1400 5 17
# 2: N24211 1714 LGA IA 227 1416 5 33
# 3: N619AA 1141 JFK MIA 160 1089 5 42
# 4: N804JB 725 JFK BQN 183 1576 5 44
# 5: N668DN 461 LGA ATL 116 762 5 54
# 6: N39463 1696 EWR ORD 150 719 5 54

Kode berikut memiliki contoh peringkasan data.

# # # Peringkasan Data
# Hitung rata-rata keterlambatan kedatangan
DT[, daftar(mean_arrival_delay = mean(arr_delay, na.rm = TRUE))]
# mean_arrival_delay
# 1: 6.895377
# Sekarang, kami menghitung nilai yang sama tetapi untuk setiap operator
mean1 = DT[, daftar(mean_arrival_delay = mean(arr_delay, na.rm = TRUE)),
oleh = pembawa]
cetak(berarti1)
# pembawa mean_arrival_delay
# 1: UA 3.5580111
# 2: AA 0.3642909
# 3: B6 9.4579733
# 4: DL 1.6443409
# 5: EV 15.7964311
# 6: MQ 10.7747334
# 7: KITA 2.1295951
#8: WN 9.6491199
#9: VX 1.7644644
# 10: FL 20.1159055
# 11: SEBAGAI - 9.9308886
# 12: 9E 7.3796692
# 13: F9 21.9207048
# 14: HA - 6.9152047
#15: YV 15.5569853
# 16: OO 11.9310345
# Sekarang mari kita hitung artinya dalam baris kode yang sama
mean2 = DT[, daftar(mean_departure_delay = mean(dep_delay, na.rm = TRUE),
mean_arrival_delay = mean(arr_delay, na.rm = TRUE)), oleh = operator]

cetak(berarti2)

# pembawa mean_departure_delay mean_arrival_delay


# 1: UA 12.106073 3.5580111
# 2: AA 8.586016 0.3642909
# 3: B6 13.022522 9.4579733
# 4: DL 9.264505 1.6443409
# 5: EV 19.955390 15.7964311
# 6: MQ 10.552041 10.7747334
# 7: KITA 3.782418 2.1295951
#8: WN 17.711744 9.6491199
#9: VX 12.869421 1.7644644
# 10: FL 18.726075 20.1159055
# 11: SEBAGAI 5.804775 - 9.9308886
# 12: 9E 16.725769 7.3796692
# 13: F9 20.215543 21.9207048
# 14: HA 4.900585 - 6.9152047
#15: YV 18.996330 15.5569853
# 16: OO 12.586207 11.9310345

# # # Buat variabel baru bernama gain


# inilah perbedaan antara tunda kedatangan dan tunda keberangkatan DT[, gain:=
arr_delay - dep_delay]

# Hitung keuntungan median per operator


median_gain = DT[, median(gain, na.rm = TRUE), oleh = carrier]
print(median_gain)

Big Data Analytics - Data Exploration


Analisis data eksplorasiadalah konsep yang dikembangkan oleh John Tuckey (1977) yang terdiri dari
perspektif baru statistik. Ide Tuckey adalah bahwa dalam statistik tradisional, data tidak dieksplorasi
secara grafis, hanya digunakan untuk menguji hipotesis. Upaya pertama untuk mengembangkan alat
dilakukan di Stanford, proyek ini disebutprima9 . Alat ini mampu memvisualisasikan data dalam
sembilan dimensi, sehingga mampu memberikan perspektif data yang multivariat.

Dalam beberapa hari terakhir, analisis data eksplorasi adalah suatu keharusan dan telah dimasukkan dalam siklus hidup analisis
data besar. Kemampuan untuk menemukan wawasan dan mampu mengomunikasikannya secara efektif dalam suatu organisasi
didorong oleh kemampuan EDA yang kuat.

Berdasarkan ide Tuckey, Bell Labs mengembangkanbahasa pemrograman Suntuk menyediakan antarmuka
interaktif untuk melakukan statistik. Ide S adalah untuk menyediakan kemampuan grafis yang luas dengan
bahasa yang mudah digunakan. Di dunia saat ini, dalam konteks Big Data,Ryang didasarkan padaSbahasa
pemrograman adalah perangkat lunak paling populer untuk analitik.
Program berikut menunjukkan penggunaan analisis data eksplorasi.

Berikut ini adalah contoh analisis data eksplorasi. Kode ini juga tersedia di part1/eda/
exploratory_data_analysis.Rmengajukan.

perpustakaan(nycflights13)
perpustakaan (ggplot2)
perpustakaan(data.tabel)
perpustakaan (membentuk ulang2)

# Menggunakan kode dari bagian sebelumnya


# Ini menghitung keterlambatan kedatangan dan keberangkatan rata-rata oleh operator. DT
<- as.data.table(penerbangan)
mean2 = DT[, daftar(mean_departure_delay = mean(dep_delay, na.rm = TRUE),
mean_arrival_delay = mean(arr_delay, na.rm = TRUE)), oleh = operator]

# Untuk memplot data dalam R menggunakan ggplot, biasanya diperlukan untuk membentuk
kembali data
# Kami ingin memiliki data dalam format panjang untuk diplot dengan ggplot dt =
melt(mean2, id.vars = 'carrier')

# Lihatlah baris pertama print(head(dt))

# Lihat bantuan untuk ?geom_point dan geom_line untuk menemukan contoh serupa

# Di sini kita mengambil kode pembawa sebagai sumbu x


# nilai dari dt data.table berada di sumbu y

# Kolom variabel mewakili warna


p = ggplot(dt, aes(x = pembawa, y = nilai, warna = variabel, grup = variabel)) +

geom_point() + # Plot poin geom_line() + # Plot


garis theme_bw() + # Menggunakan latar belakang
putih
labs(list(title = 'Rata-rata keterlambatan kedatangan dan keberangkatan oleh operator',
x = 'Carrier', y = 'Mean delay')) print(p)

# Simpan plot ke disk


ggsave('mean_delay_by_carrier.png', p,
lebar = 10,4, tinggi = 5,07)

Kode harus menghasilkan gambar seperti berikut

Analisis Data Besar - Visualisasi Data


Untuk memahami data, seringkali berguna untuk memvisualisasikannya. Biasanya dalam aplikasi Big Data, minat
bertumpu pada pencarian insight daripada hanya membuat plot yang indah. Berikut ini adalah contoh
pendekatan yang berbeda untuk memahami data menggunakan plot.

Untuk mulai menganalisis data penerbangan, kita bisa mulai dengan memeriksa apakah ada korelasi
antara variabel numerik. Kode ini juga tersedia di
bda/part1/data_visualization/data_visualization.Rmengajukan.

# Instal paket corrplot dengan menjalankan


install.packages('corrplot')

# lalu muat perpustakaan


perpustakaan (corrplot)
# Muat perpustakaan perpustakaan
berikut (nycflights13)
perpustakaan (ggplot2)
perpustakaan(data.tabel)
perpustakaan (membentuk ulang2)

# Kami akan terus bekerja dengan data penerbangan DT <-


as.data.table(flights)
kepala(DT) # lihatlah

# Kami memilih variabel numerik setelah memeriksa baris pertama. numerik_variabel =


c('dep_time', 'dep_delay',
'arr_time', 'arr_delay', 'air_time', 'distance')

# Pilih variabel numerik dari DT data.table dt_num = DT[,


numeric_variables, dengan = FALSE]

# Hitung matriks korelasi dt_num cor_mat = cor(dt_num,


use = "complete.obs")

cetak(cor_mat)
# # # Berikut adalah matriks korelasinya
# dep_time dep_delay arr_time arr_delay air_time
jarak
# dep_time 1,00000000 0.25961272 0.66250900 0,2230573 -0,01461948 -
0,01413373
#dep_delay 0.25961272 1.00000000 0.02942101 0,91480276 -0,02240508 -
0,02168090
# arr_time 0,66250900 0,02942101 1,00000000 0,02448214 0,05429603
0,04718917
# arr_delay 0.23230573 0,91480276 0,02448214 1.00000000 -0.03529709 -
0,06186776
# air_time - 0,01461948 -0,0224508 0,05429603 -0,03529709 1,00000000
0,99064965
# jarak - 0,01413373 -0,02168090 0,04718917 -0,06186776 0,99064965
1,00000000

# Kita dapat menampilkannya secara visual untuk mendapatkan pemahaman yang lebih baik
tentang data corrplot.mixed(cor_mat, lower = "circle", upper = "elips")

# simpan ke disk
png('corrplot.png')
print(corrplot.mixed(cor_mat, lower = "circle", upper = "elips")) dev.off()

Kode ini menghasilkan visualisasi matriks korelasi berikut


Kita bisa melihat di plot bahwa ada korelasi yang kuat antara beberapa variabel dalam dataset. Misalnya,
keterlambatan kedatangan dan keterlambatan keberangkatan tampaknya sangat berkorelasi. Hal ini dapat
kita lihat karena elips menunjukkan hubungan yang hampir linier antara kedua variabel, namun tidak mudah
untuk mencari penyebab dari hasil ini.

Kita tidak dapat mengatakan bahwa karena dua variabel berkorelasi, yang satu berpengaruh pada yang lain. Juga kami
menemukan di plot korelasi yang kuat antara waktu dan jarak udara, yang cukup masuk akal untuk diharapkan karena
dengan jarak yang lebih jauh, waktu penerbangan akan bertambah.

Kita juga dapat melakukan analisis data secara univariat. Cara sederhana dan efektif untuk memvisualisasikan
distribusi adalahpetak kotak. Kode berikut mendemonstrasikan cara menghasilkan petak kotak dan bagan
teralis menggunakan pustaka ggplot2. Kode ini juga tersedia di
bda/part1/data_visualization/boxplots.Rmengajukan.

sumber('data_visualization.R')
# # # Menganalisis Distribusi menggunakan plot-kotak
# Berikut ini menunjukkan jarak sebagai fungsi dari carrier

p = ggplot(DT, aes(x = carrier, y = distance, fill = carrier)) + # Tentukan carrier

pada sumbu x dan jarak pada sumbu y geom_box-plot()


+ # Gunakan geom plot-kotak
theme_bw() + # Tinggalkan latar belakang putih - Lebih sesuai dengan tufte's
prinsip daripada panduan default (isi = FALSE) +
# Hapus legenda
labs(list(title = 'Jarak sebagai fungsi operator', # Tambahkan label
x = 'Operator', y = 'Jarak'))
p
# Simpan ke disk
png('boxplot_carrier.png') print(p)

dev.off()

# Mari kita tambahkan sekarang variabel lain, bulan setiap penerbangan


# Kami akan menggunakan facet_wrap untuk ini
p = ggplot(DT, aes(carrier, distance, fill = carrier)) +
geom_box-plot() +
tema_bw() +
panduan (isi = SALAH) +
facet_wrap(~month) + # Ini membuat plot teralis dengan variabel menurut bulan

labs(list(title = 'Jarak sebagai fungsi operator menurut bulan',


x = 'Operator', y = 'Jarak'))
p
# Plot menunjukkan tidak ada perbedaan yang jelas antara jarak di bulan yang berbeda

# Simpan ke disk
png('boxplot_carrier_by_month.png') print(p)

dev.off()

Analisis Data Besar - Pengantar R


Bagian ini dikhususkan untuk memperkenalkan pengguna ke bahasa pemrograman R. R dapat
diunduh darisitus web derek . Untuk pengguna Windows, ini berguna untukinstal rtools dan rstudio
IDE .

Konsep umum di balikRberfungsi sebagai antarmuka ke perangkat lunak lain yang dikembangkan dalam bahasa yang
dikompilasi seperti C, C++, dan Fortran dan untuk memberi pengguna alat interaktif untuk menganalisis data.

Arahkan ke folder file zip bukubda/part2/R_pengantardan buka R_introduction.Rprojmengajukan. Ini


akan membuka sesi RStudio. Kemudian buka file 01_vectors.R. Jalankan skrip baris demi baris dan ikuti
komentar dalam kode. Pilihan lain yang berguna untuk belajar adalah dengan mengetikkan kode, ini
akan membantu Anda terbiasa dengan sintaks R. Dalam R komentar ditulis dengan simbol #.

Untuk menampilkan hasil menjalankan kode R di buku, setelah kode dievaluasi, hasil R kembali dikomentari.
Dengan cara ini, Anda dapat menyalin dan menempelkan kode di buku dan mencoba langsung bagiannya di R.

# Membuat vektor angka angka = c(1,


2, 3, 4, 5) print(angka)

# [1] 1 2 3 4 5
# Membuat vektor huruf ltrs = c('a', 'b', 'c',
'd', 'e')
# [1] "a" "b" "c" "d" "e"

# Gabungkan keduanya
mixed_vec = c(angka, ltrs)
print(mixed_vec)
# [1] "1" "2" "3" "4" "5" "a" "b" "c" "d" "e"

Mari kita analisis apa yang terjadi pada kode sebelumnya. Kita dapat melihat adalah mungkin untuk membuat
vektor dengan angka dan huruf. Kami tidak perlu memberi tahu R tipe data apa yang kami inginkan sebelumnya.
Akhirnya, kami dapat membuat vektor dengan angka dan huruf. Vektor mixed_vec telah memaksa angka menjadi
karakter, kita dapat melihat ini dengan memvisualisasikan bagaimana nilai dicetak di dalam tanda kutip.

Kode berikut menunjukkan tipe data dari berbagai vektor yang dikembalikan oleh kelas fungsi. Adalah umum
untuk menggunakan fungsi kelas untuk "menginterogasi" suatu objek, menanyakan apa kelasnya.

# # # Evaluasi tipe data menggunakan class

# # # Objek satu dimensi


# vektor bilangan bulat
bilangan = 1:10
kelas (angka)
# [1] "bilangan bulat"

# Vektor numerik, memiliki float, 10,5 num = c(1:10,


10,5)
kelas (angka)
# [1] "angka"

# Vektor karakter
lts = huruf[1:10]
kelas (ltrs)
# [1] "karakter"

# Faktor vektor
fac = as.factor(ltrs)
kelas (fakta)
# [1] "faktor"

R mendukung objek dua dimensi juga. Dalam kode berikut, ada contoh dua struktur data
paling populer yang digunakan di R: matriks dan data.frame.

# Matriks
M = matriks(1:12, ncol = 4)
# [,1] [,2] [,3] [,4]
# [1,] 1 4 7 10
# [2,] 2 5 8 11
# [3,] 3 6 9 12
lM = matriks(huruf[1:12], ncol = 4)
# [,1] [,2] [,3] [,4]
# [1,] "a" "d" "g" "j"
# [2,] "b" "e" "h" "k"
# [3,] "c" "f" "i" "l"

# Memaksa angka menjadi karakter


# cbind menggabungkan dua matriks (atau vektor) dalam satu matriks cbind(M,
lM)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
# [1,] "1" "4" "7" "10" "a" "d" "g" "j"
# [2,] "2" "5" "8" "11" "b" "e" "h" "k"
# [3,] "3" "6" "9" "12" "c" "f" "i" "l"

kelas (M)
# [1] "matriks"
kelas (lM)
# [1] "matriks"

# data.frame
# Salah satu objek utama R, menangani tipe data yang berbeda dalam objek yang sama.

# Dimungkinkan untuk memiliki vektor numerik, karakter, dan faktor dalam data.frame yang sama

df = data.frame(n = 1:5, l = huruf[1:5]) df

# tidak ada
#11
#22b
#33c
# 4 4 hari
#55e

Seperti yang ditunjukkan pada contoh sebelumnya, dimungkinkan untuk menggunakan tipe data yang berbeda dalam objek yang
sama. Secara umum, ini adalah bagaimana data disajikan dalam database, bagian API dari data adalah teks atau vektor karakter
dan numerik lainnya. Di adalah tugas analis untuk menentukan tipe data statistik mana yang akan ditetapkan dan kemudian
menggunakan tipe data R yang benar untuk itu. Dalam statistik, kami biasanya menganggap variabel adalah dari jenis berikut

• numerik
• Nominal atau kategoris
• Urut

Dalam R, sebuah vektor dapat dari kelas-kelas berikut

• Numerik - Integer
• Faktor
• Faktor yang dipesan

R menyediakan tipe data untuk setiap tipe statistik variabel. Namun faktor terurut jarang
digunakan, tetapi dapat dibuat oleh faktor fungsi, atau terurut.

Bagian berikut membahas konsep pengindeksan. Ini adalah operasi yang cukup umum, dan berkaitan
dengan masalah pemilihan bagian dari suatu objek dan membuat transformasi untuk mereka.
# Mari kita buat data.frame
df = data.frame(angka = 1:26, huruf) kepala(df)

# angka surat-surat
#1 1 sebuah

#2 2 b
#3 3 c
#4 4 d
#5 5 e
#6 6 f

# str memberikan struktur data.frame, ini adalah ringkasan yang bagus untuk memeriksa objek

str(df)
# 'data.frame': 26 ob. dari 2 variabel:
# $ angka: int 1 2 3 4 5 6 7 8 9 10 ...
# $ huruf: Faktor w/ 26 level "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
...

# Yang terakhir menunjukkan vektor karakter huruf dipaksa sebagai faktor.


# Ini dapat dijelaskan dengan stringsAsFactors = TRUE argumnet di data.frame
# baca ?data.frame untuk informasi lebih lanjut

kelas(df)
# [1] "data.frame"

# # # Pengindeksan
# Dapatkan baris
pertama df[1, ]
# angka surat-surat
#1 1 sebuah

# Digunakan untuk pemrograman secara normal - mengembalikan output sebagai


daftar df[1, , drop = TRUE]
# $angka
# [1] 1
#
# $huruf
# [1] a
# Level: abcdefghijklmnopqrstu vwxyz

# Dapatkan beberapa baris data.frame df[5:7, ]

# angka surat-surat
#5 5 e
#6 6 f
#7 7 g

# # # Tambahkan satu kolom yang menggabungkan kolom numerik dengan kolom faktor
df$mixed = paste(df$numbers, df$letters, sep = '')

str(df)
# 'data.frame': 26 ob. dari 3 variabel:
# $ angka: int 1 2 3 4 5 6 7 8 9 10 ...
# $ huruf: Faktorkan w/ 26 level "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...
# $ campur : chr "1a" "2b" "3c" "4d" ...
# # # Dapatkan kolom
# Dapatkan kolom pertama
df[, 1]
# Ini mengembalikan vektor satu dimensi dengan kolom itu

# Dapatkan dua kolom


df2 = df[, 1:2]
kepala (df2)

# angka surat-surat
#1 1 sebuah

#2 2 b
#3 3 c
#4 4 d
#5 5 e
#6 6 f

# Dapatkan kolom pertama dan ketiga df3 =


df[, c(1, 3)]
df3[1:3, ]

# angka Campuran
#1 1 1a
#2 2 2b
#3 3 3c

# # # Indeks kolom dari nama nama mereka


(df)
# [1] "angka" "huruf" "campuran"
# Ini adalah praktik terbaik dalam pemrograman, karena indeks sering berubah, tetapi nama variabel
tidak
# Kita membuat variabel dengan nama yang ingin kita subset keep_vars =
c("numbers", "mixed")
df4 = df[, keep_vars]

kepala (df4)
# angka Campuran
#1 1 1a
#2 2 2b
#3 3 3c
#4 4 4d
#5 5 5e
#6 6 6f

# # # subset baris dan kolom


# Pertahankan lima baris pertama
df5 = df[1:5, keep_vars] df5

# angka Campuran
#1 1 1a
#2 2 2b
#3 3 3c
#4 4 4d
#5 5 5e

# baris subset menggunakan kondisi logis


df6 = df[df$angka < 10, keep_vars] df6

# angka Campuran
#1 1 1a
#2 2 2b
#3 3 3c
#4 4 4d
#5 5 5e
#6 6 6f
#7 7 7g
#8 8 8 jam

#9 9 9i

Analisis Data Besar - Pengantar SQL


SQL adalah singkatan dari bahasa query terstruktur. Ini adalah salah satu bahasa yang paling banyak digunakan
untuk mengekstrak data dari database di gudang data tradisional dan teknologi data besar. Untuk
mendemonstrasikan dasar-dasar SQL, kita akan bekerja dengan contoh. Untuk fokus pada bahasa itu sendiri, kita
akan menggunakan SQL di dalam R. Dalam hal penulisan kode SQL, ini persis seperti yang akan dilakukan dalam
database.

Inti dari SQL adalah tiga pernyataan: SELECT, FROM dan WHERE. Contoh berikut
menggunakan kasus penggunaan SQL yang paling umum. Arahkan ke folder
bda/part2/SQL_introductiondan bukaSQL_introduction.Rprojmengajukan. Kemudian buka
skrip 01_select.R. Untuk menulis kode SQL di R kita perlu menginstalsqldfpaket seperti yang
ditunjukkan dalam kode berikut.

# Instal paket sqldf


install.packages('sqldf')

# memuat perpustakaan
perpustakaan ('sqldf')
perpustakaan(nycflights13)

# Kami akan bekerja dengan dataset fligths untuk memperkenalkan SQL

# Mari kita lihat tabel str(flights)

# Kelas 'tbl_d', 'tbl' dan 'data.frame': 336776 obs. dari 16 variabel:

# $ tahun : ke dalam 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ... 1 1 1 1 1 1 1 1
# $ bulan : ke dalam 1 1 ...
# $ hari : ke dalam 1 1 1 1 1 1 1 1 1 1 ...
# $ dep_time : int 517 533 542 544 554 554 555 557 557 558 ... 2 4 2 -1 -6 -4
# $ dep_delay: num -5 -3 -3 -2 ...
# $arr_time : int 830 850 923 1004 812 740 913 709 838 753 ... 11 20 33 -18
# $ arr_delay: num -25 12 19 -14 -8 8 ...
# $ pembawa : chr "UA" "UA" "AA" "B6" ...

# $ jumlah ekor : chr "N14228" "N24211" "N619AA" "N804JB" ... 1545 1714 1141 725
# $ penerbangan : ke dalam 461 1696 507 5708 79 301 ...
# $asal : chr "EWR" "LGA" "JFK" "JFK" ... "IAH"
# $ tujuan : chr "IAH" "MIA" "BQN" ...
# $ air_time : num 227 227 160 183 116 150 158 53 140 138 ... 1400 1416
# $jarak : num 1089 1576 762 ...
# $ jam : jumlah 5 5 5 5 5 5 5 5 5 5 ...
# $ menit : jumlah 17 33 42 44 54 54 55 57 57 58 ...

Pernyataan pilih digunakan untuk mengambil kolom dari tabel dan melakukan perhitungan pada mereka. Pernyataan SELECT
yang paling sederhana ditunjukkan dalamej1. Kami juga dapat membuat variabel baru seperti yang ditunjukkan padaej2.

# # # SELECT pernyataan
ej1 = sqldf("
PILIH
dep_time
, dep_delay
, arr_time
, pembawa
, nomor ekor
DARI
penerbangan
")

kepala (ej1)
# dep_time dep_delay arr_time carrier tailnum
#1 517 2 830 UA N14228
#2 533 4 850 UA N24211
#3 542 2 923 AA N619AA
#4 544 -1 1004 B6 N804JB
#5 554 -6 812 DL N668DN
#6 554 -4 740 UA N39463

# Di R kita bisa menggunakan SQL dengan fungsi sqldf. Ini bekerja persis sama seperti di

sebuah database

# Data.frame (dalam hal ini penerbangan) mewakili tabel yang kita kueri dan masuk dalam pernyataan
FROM
# Kami juga dapat menghitung variabel baru dalam pernyataan pilih menggunakan sintaks:

# variabel_lama sebagai variabel_baru ej2


= sqldf("
PILIH
arr_delay - dep_delay sebagai gain,
operator
DARI
penerbangan
")

ej2[1:5, ]
# memperoleh pembawa
#1 9 UA
#2 16 UA
#3 31 AA
#4 - 17 B6
#5 - 19 DL
Salah satu fitur SQL yang paling umum digunakan adalah pernyataan group by. Hal ini memungkinkan
untuk menghitung nilai numerik untuk kelompok yang berbeda dari variabel lain. Buka skrip
02_group_by.R.

# # # KELOMPOK OLEH

# Menghitung rata-rata ej3 =


sqldf("
PILIH
avg(arr_delay) sebagai mean_arr_delay,
avg(dep_delay) sebagai mean_dep_delay,
operator
DARI
penerbangan
KELOMPOK OLEH

pembawa
")

# mean_arr_delay mean_dep_delay operator


#1 7.3796692 16.725769 9E
#2 0.3642909 8.586016 AA
#3 - 9.9308886 5.804775 SEBAGAI

#4 9.4579733 13.022522 B6
#5 1.6443409 9.264505 DL
#6 15.7964311 19.955390 EV
#7 21.9207048 20.215543 F9
#8 20.1159055 18.726075 FL
#9 - 6.9152047 4.900585 HA
# 10 10.7747334 10.552041 MQ
# 11 11.9310345 12.586207 OO
# 12 3.5580111 12.106073 UA
# 13 2.1295951 3.782418 KITA
# 14 1.7644644 12.869421 VX
#15 9.6491199 17.711744 WN
# 16 15.5569853 18.996330 YV

# Agregasi lainnya
ej4 = sqldf("
PILIH
avg(arr_delay) sebagai mean_arr_delay,
min(dep_delay) sebagai min_dep_delay,
max(dep_delay) sebagai max_dep_delay,
operator
DARI
penerbangan
KELOMPOK OLEH

pembawa
")

# Kita dapat menghitung nilai minimum, mean, dan maksimum dari nilai numerik ej4

# mean_arr_delay min_dep_delay max_dep_delay pembawa


#1 7.3796692 - 24 747 9E
#2 0.3642909 - 24 1014 AA
#3 - 9.9308886 - 21 225 SEBAGAI

#4 9.4579733 - 43 502 B6
#5 1.6443409 - 33 960 DL
#6 15.7964311 - 32 548 EV
#7 21.9207048 - 27 853 F9
#8 20.1159055 - 22 602 FL
#9 - 6.9152047 - 16 1301 HA
# 10 10.7747334 - 26 1137 MQ
# 11 11.9310345 - 14 154 OO
# 12 3.5580111 - 20 483 UA
# 13 2.1295951 - 19 500 KITA
# 14 1.7644644 - 20 653 VX
#15 9.6491199 - 13 471 WN
# 16 15.5569853 - 16 387 YV

# # # Kami mungkin juga tertarik untuk mengetahui berapa banyak pengamatan yang dimiliki setiap
operator
ej5 = sqldf("
PILIH
pembawa, hitung (*) sebagai hitung
DARI
penerbangan
KELOMPOK OLEH

pembawa
")

ej5
# pembawa menghitung

#1 9E 18460
#2 AA 32729
#3 SEBAGAI 714
#4 B6 54635
#5 DL 48110
#6 EV 54173
#7 F9 685
#8 FL 3260
#9 HA 342
# 10 MQ 26397
# 11 OO 32
# 12 UA 58665
# 13 KITA 20536
# 14 VX 5162
#15 WN 12275
# 16 YV 601

Fitur SQL yang paling berguna adalah join. Gabung berarti kita ingin menggabungkan tabel A dan tabel B dalam
satu tabel menggunakan satu kolom agar sesuai dengan nilai kedua tabel. Ada berbagai jenis gabungan, dalam
istilah praktis, untuk memulai ini akan menjadi yang paling berguna: gabungan dalam dan gabungan luar kiri.

# Mari buat dua tabel: A dan B untuk mendemonstrasikan gabungan. A =


data.frame(c1 = 1:4, c2 = huruf[1:4])
B = data.frame(c1 = c(2,4,5,6), c2 = huruf[c(2:5)])

SEBUAH

#c1 c2
#1a
#2 b
#3 c
#4 d

B
#c1 c2
#2 b
#4 c
#5 d
#6 e

# # # GABUNG DALAM
# Ini berarti mencocokkan pengamatan kolom yang akan kita gabungkan dengan tabel.

dalam = sqldf("
PILIH
A.c1, B.c2
DARI
A INNER JOIN B
PADA A.c1 = B.c1
")

# Hanya baris yang cocok dengan c1 di A dan B yang dikembalikan ke dalam

#c1 c2
#2 b
#4 c

# # # KIRI OUTER JOIN


# gabung luar kiri, kadang-kadang hanya disebut gabung kiri akan mengembalikan
# pertama semua nilai kolom yang digunakan dari tabel A left = sqldf("

PILIH
A.c1, B.c2
DARI
A KIRI LUAR GABUNG B
PADA A.c1 = B.c1
")

# Hanya baris yang cocok dengan c1 di A dan B yang dikembalikan ke kiri

# c1 c2
#1 <NA>
#2 b
#3 <NA>
#4 c

Analisis Big Data - Bagan & Grafik


Pendekatan pertama untuk menganalisis data adalah menganalisisnya secara visual. Tujuan melakukan ini
biasanya menemukan hubungan antara variabel dan deskripsi univariat variabel. Kita dapat membagi strategi
ini sebagai

• Analisis univariat
• Analisis multivariat

Metode Grafis Univariat


Univariatadalah istilah statistik. Dalam praktiknya, ini berarti kita ingin menganalisis variabel secara independen dari data
lainnya. Plot yang memungkinkan untuk melakukan ini secara efisien adalah

Kotak-Plot

Box-Plot biasanya digunakan untuk membandingkan distribusi. Ini adalah cara yang bagus untuk memeriksa secara
visual jika ada perbedaan antara distribusi. Kita bisa melihat apakah ada perbedaan harga berlian untuk potongan
yang berbeda.

# Kami akan menggunakan perpustakaan ggplot2 untuk merencanakan


perpustakaan (ggplot2)
data("berlian")

# Kami akan menggunakan kumpulan data berlian untuk menganalisis distribusi variabel numerik

kepala (berlian)

# karat memotong tabel kedalaman kejelasan warna harga x kamu z


#1 0,23 Ideal E SI2 61.5 55 326 3.95 3.98
2.43
#2 0.21 Premium E SI1 59.8 61 326 3.89 3.84
2.31
#3 0,23 Bagus E VS1 56.9 65 327 4.05 4.07
2.31
#4 0,29 Premium Saya VS2 62.4 58 334 4.20 4.23
2.63
#5 0.31 Bagus J SI2 63.3 58 335 4.34 4.35
2.75
#6 0.24 Sangat bagus J VVS2 62.8 57 336 3.94 3.96
2.48

# # # Kotak-Plot
p = ggplot(berlian, aes(x = potong, y = harga, isi = potong)) +
geom_box-plot() +
tema_bw()
cetak (p)

Dapat kita lihat pada plot terdapat perbedaan pembagian harga berlian pada berbagai jenis
potongan.
Histogram

sumber('01_box_plots.R')

# Kita dapat memplot histogram untuk setiap level variabel faktor potong menggunakan
facet_grid
p = ggplot(berlian, aes(x = harga, isi = potong)) +
geom_histogram() +
facet_grid(potong ~ .) +
theme_bw()

p
# plot sebelumnya tidak memungkinkan untuk memvisualisasikan data dengan benar karena
perbedaan skala
# kita dapat mematikannya menggunakan argumen scales dari facet_grid

p = ggplot(berlian, aes(x = harga, isi = potong)) +


geom_histogram() +
facet_grid(cut ~ ., scales = 'gratis') + theme_bw()

png('02_histogram_diamonds_cut.png')
cetak (p)
dev.off()

Output dari kode di atas adalah sebagai berikut

Metode Grafis Multivariat


Metode grafis multivariat dalam analisis data eksplorasi memiliki tujuan untuk menemukan
hubungan antara variabel yang berbeda. Ada dua cara untuk mencapai hal ini yang umum
digunakan: memplot matriks korelasi variabel numerik atau hanya memplot data mentah sebagai
matriks plot pencar.

Untuk mendemonstrasikan ini, kita akan menggunakan dataset diamonds. Untuk mengikuti kode, buka
skripbda/part2/charts/03_multivariate_analysis.R.

perpustakaan (ggplot2)
data (berlian)

# Plot matriks korelasi


keep_vars = c('karat', 'kedalaman', 'harga', 'tabel')
df = berlian[, keep_vars]
# hitung matriks korelasi M_cor = cor(df)

# karat kedalaman harga meja


# karat 1.00000000 0.02822431 0.9215913 0.1816175
# kedalaman 0.02822431 1.00000000 -0.0106474 -0.2957785
# harga 0.92159130 -0.01064740 1.0000000 0.1271339
# tabel 0.18161755 -0.29577852 0.1271339 1.0000000

# petak
peta panas(M_cor)

Kode akan menghasilkan output berikut

Ini adalah ringkasan, ini memberi tahu kita bahwa ada korelasi yang kuat antara harga dan tanda sisipan, dan tidak
banyak di antara variabel lainnya.

Matriks korelasi dapat berguna ketika kita memiliki sejumlah besar variabel yang dalam hal ini memplot data
mentah tidak akan praktis. Seperti yang disebutkan, dimungkinkan untuk menampilkan data mentah juga
perpustakaan(GGally)
ggpairs(df)

Kita bisa melihat di plot bahwa hasil yang ditampilkan di peta panas dikonfirmasi, ada
korelasi 0,922 antara variabel harga dan karat.

Dimungkinkan untuk memvisualisasikan hubungan ini dalam plot sebar harga-karat yang terletak di indeks (3, 1)
dari matriks plot sebar.

Analisis Data Besar - Alat Analisis Data


Ada berbagai alat yang memungkinkan ilmuwan data menganalisis data secara efektif. Biasanya aspek teknik
analisis data berfokus pada database, ilmuwan data fokus pada alat yang dapat mengimplementasikan produk
data. Bagian berikut membahas keuntungan dari berbagai alat dengan fokus pada paket statistik yang paling
sering digunakan ilmuwan data dalam praktik.

Bahasa Pemrograman R
R adalah bahasa pemrograman open source dengan fokus pada analisis statistik. Ini kompetitif
dengan alat komersial seperti SAS, SPSS dalam hal kemampuan statistik. Ini dianggap sebagai
antarmuka ke bahasa pemrograman lain seperti C, C++ atau Fortran.

Keuntungan lain dari R adalah banyaknya perpustakaan open source yang tersedia. Di CRAN
ada lebih dari 6000 paket yang dapat diunduh secara gratis dan diGithubada berbagai macam
paket R yang tersedia.

Dalam hal kinerja, R lambat untuk operasi intensif, mengingat banyaknya perpustakaan yang tersedia, bagian kode yang
lambat ditulis dalam bahasa yang dikompilasi. Tetapi jika Anda berniat untuk melakukan operasi yang membutuhkan
penulisan dalam untuk loop, maka R tidak akan menjadi alternatif terbaik Anda. Untuk tujuan analisis data, ada
perpustakaan yang bagus sepertidata.table, glmnet, ranger, xgboost, ggplot2, caretyang memungkinkan untuk
menggunakan R sebagai antarmuka ke bahasa pemrograman yang lebih cepat.

Python untuk analisis data

Python adalah bahasa pemrograman tujuan umum dan berisi sejumlah besar perpustakaan yang
ditujukan untuk analisis data seperti:panda, scikit-belajar, theano, numpydanpintar.

Sebagian besar dari apa yang tersedia di R juga dapat dilakukan dengan Python tetapi kami telah menemukan bahwa R lebih
mudah digunakan. Jika Anda bekerja dengan kumpulan data besar, biasanya Python adalah pilihan yang lebih baik daripada R.
Python dapat digunakan dengan cukup efektif untuk membersihkan dan memproses data baris demi baris. Ini dimungkinkan dari
R tetapi tidak seefisien Python untuk tugas skrip.

Untuk pembelajaran mesin,scikit-belajaradalah lingkungan yang bagus yang telah menyediakan sejumlah besar
algoritma yang dapat menangani kumpulan data berukuran sedang tanpa masalah. Dibandingkan dengan
perpustakaan setara R (caret),scikit-belajarmemiliki API yang lebih bersih dan konsisten.

Julia
Julia adalah bahasa pemrograman dinamis berkinerja tinggi tingkat tinggi untuk komputasi teknis. Sintaksnya
sangat mirip dengan R atau Python, jadi jika Anda sudah bekerja dengan R atau Python, seharusnya cukup mudah
untuk menulis kode yang sama di Julia. Bahasa ini cukup baru dan telah berkembang secara signifikan dalam
beberapa tahun terakhir, jadi ini jelas merupakan pilihan saat ini.

Kami akan merekomendasikan Julia untuk membuat prototipe algoritma yang intensif secara komputasi seperti
jaringan saraf. Ini adalah alat yang hebat untuk penelitian. Dalam hal menerapkan model dalam produksi mungkin
Python memiliki alternatif yang lebih baik. Namun, ini menjadi tidak terlalu menjadi masalah karena ada layanan
web yang melakukan rekayasa implementasi model dalam R, Python dan Julia.

SAS
SAS adalah bahasa komersial yang masih digunakan untuk intelijen bisnis. Ini memiliki bahasa dasar yang
memungkinkan pengguna untuk memprogram berbagai macam aplikasi. Ini berisi beberapa
produk komersial yang memberikan pengguna non-ahli kemampuan untuk menggunakan alat kompleks seperti
perpustakaan jaringan saraf tanpa perlu pemrograman.

Di luar kerugian yang jelas dari alat komersial, SAS tidak menskalakan dengan baik untuk kumpulan data besar.
Bahkan dataset berukuran sedang akan bermasalah dengan SAS dan membuat server crash. Hanya jika Anda
bekerja dengan kumpulan data kecil dan pengguna bukan ilmuwan data ahli, SAS direkomendasikan. Untuk
pengguna tingkat lanjut, R dan Python menyediakan lingkungan yang lebih produktif.

SPSS
SPSS, saat ini merupakan produk IBM untuk analisis statistik. Ini sebagian besar digunakan untuk menganalisis data
survei dan bagi pengguna yang tidak dapat memprogram, ini adalah alternatif yang layak. Ini mungkin semudah
digunakan seperti SAS, tetapi dalam hal penerapan model, ini lebih sederhana karena menyediakan kode SQL untuk
menilai model. Kode ini biasanya tidak efisien, tetapi ini adalah permulaan sedangkan SAS menjual produk yang
menilai model untuk setiap basis data secara terpisah. Untuk data kecil dan tim yang tidak berpengalaman, SPSS
adalah pilihan sebaik SAS.

Namun perangkat lunak ini agak terbatas, dan pengguna yang berpengalaman akan lebih produktif
menggunakan R atau Python.

Matlab, Oktaf
Ada alat lain yang tersedia seperti Matlab atau versi open source-nya (Octave). Alat-alat ini banyak digunakan
untuk penelitian. Dalam hal kemampuan R atau Python dapat melakukan semua yang tersedia di Matlab atau
Oktaf. Masuk akal untuk membeli lisensi produk jika Anda tertarik dengan dukungan yang mereka berikan.

Analisis Data Besar - Metode Statistik


Saat menganalisis data, dimungkinkan untuk memiliki pendekatan statistik. Alat dasar yang diperlukan untuk
melakukan analisis dasar adalah

• Analisis korelasi
• Analisis Varians
• Pengujian Hipotesis

Saat bekerja dengan kumpulan data besar, tidak ada masalah karena metode ini tidak
intensif secara komputasi kecuali Analisis Korelasi. Dalam hal ini, selalu mungkin untuk
mengambil sampel dan hasilnya harus kuat.

Analisis korelasi
Analisis Korelasi berusaha menemukan hubungan linier antara variabel numerik. Ini dapat berguna dalam
situasi yang berbeda. Salah satu penggunaan umum adalah analisis data eksplorasi, di bagian 16.0.2 dari
buku ada contoh dasar dari pendekatan ini. Pertama-tama, metrik korelasi yang digunakan dalam
contoh yang disebutkan didasarkan padaKoefisien Pearson. Namun, ada metrik korelasi menarik
lainnya yang tidak terpengaruh oleh outlier. Metrik ini disebut korelasi spearman.

Itukorelasi spearmanmetrik lebih kuat terhadap keberadaan outlier daripada metode Pearson dan
memberikan perkiraan yang lebih baik dari hubungan linier antara variabel numerik ketika data tidak
terdistribusi normal.

perpustakaan (ggplot2)

# Pilih variabel yang menarik untuk dibandingkan dengan metode korelasi pearson dan
spearman.
x = berlian[, c('x', 'y', 'z', 'harga')]

# Dari histogram kita dapat mengharapkan perbedaan korelasi kedua metrik.

# Dalam hal ini karena variabel jelas tidak terdistribusi normal, korelasi spearman

# adalah perkiraan yang lebih baik dari hubungan linier antara variabel numerik. par(mfrow =
c(2,2))
kolom = nama(x)
untuk(i dalam 1:4) {
hist(x[[i]], col = 'deepskyblue3', main = sprintf('Histogram %s', colnm[i]))

}
par(mfrow = c(1,1))

Dari histogram pada gambar berikut, kita dapat mengharapkan perbedaan korelasi kedua metrik.
Dalam hal ini, karena variabel jelas tidak terdistribusi normal, korelasi spearman adalah perkiraan
yang lebih baik dari hubungan linier antara variabel numerik.
Untuk menghitung korelasi dalam R, buka file bda/part2/statistical_methods/
correlation/correlation.Ryang memiliki bagian kode ini.

# # Matriks Korelasi - Pearson dan spearman cor_pearson


<- cor(x, method = 'pearson') cor_spearman <- cor(x,
method = 'spearman')

# # # Pearson Correlation
print(cor_pearson)
# x kamu z harga
#x 1.0000000 0.9747015 0.9707718 0.8844352 0.9747015
# kamu 1.0000000 0.9520057 0.8654209 0.9707718 0.9520057
#z 1.0000000 0.8612494
# harga 0.8844352 0.8654209 0.8612494 1.0000000

# # # Cetak Korelasi
Spearman(cor_spearman)
# x kamu z harga
#x 1.0000000 0.9978949 0.9873553 0.9631961 0.9978949
# kamu 1.0000000 0.9870675 0.9627188 0.9873553 0.9870675
#z 1.0000000 0.9572323
# harga 0.9631961 0.9627188 0.9572323 1.0000000
Uji Chi-kuadrat
Uji chi-kuadrat memungkinkan kita untuk menguji apakah dua variabel acak independen. Artinya, distribusi
probabilitas masing-masing variabel tidak mempengaruhi variabel lainnya. Untuk mengevaluasi pengujian di R,
pertama-tama kita perlu membuat tabel kontingensi, dan kemudian meneruskan tabel tersebut kechisq.test R
fungsi.

Misalnya, mari kita periksa apakah ada hubungan antara variabel: potong dan warna dari kumpulan
data berlian. Tes secara formal didefinisikan sebagai

• H0: Variabel cut dan diamond adalah independen


• H1: Variabel cut dan diamond tidak independen

Kami akan menganggap ada hubungan antara dua variabel ini dengan nama mereka, tetapi tes dapat memberikan
"aturan" objektif yang mengatakan seberapa signifikan hasil ini atau tidak.

Dalam cuplikan kode berikut, kami menemukan bahwa nilai p dari pengujian adalah 2.2e-16, ini hampir nol
dalam istilah praktis. Kemudian setelah menjalankan tes lakukan aSimulasi Monte Carlo, kami menemukan
bahwa nilai p adalah 0,0004998 yang masih cukup rendah dari ambang batas 0,05. Hasil ini berarti bahwa
kami menolak hipotesis nol (H0), jadi kami percaya variabelmemotongdanwarnatidak mandiri.

perpustakaan (ggplot2)

# Gunakan fungsi tabel untuk menghitung tabel kontingensi tbl =


table(diamonds$cut, diamonds$color)
tbl

# D E F G H Saya J
# Adil 163 224 312 314 303 175 119 662 933 909
# Bagus 871 702 522 307
# Sangat Bagus 1513 2400 2164 2299 1824 1204 678
# Premium 1603 2337 2331 2924 2360 1428 2834 808
# Ideal 3903 3826 4884 3115 2093 896

# Untuk menjalankan tes kita hanya menggunakan fungsi chisq.test. chisq.test(tbl)

# Tes Chi-kuadrat Pearson


# data: tbl
# X-kuadrat = 310.32, df = 24, nilai p < 2.2e-16
# Dimungkinkan juga untuk menghitung nilai-p menggunakan simulasi monte-carlo
# Diperlukan untuk menambahkan flag simulation.p.value = TRUE dan jumlah simulasi

chisq.test(tbl, simulation.p.value = TRUE, B = 2000)

# Uji Chi-kuadrat Pearson dengan nilai p yang disimulasikan (berdasarkan 2000 ulangan)

# data: tbl
# X-kuadrat = 310,32, df = NA, nilai p = 0,0004998
Uji-T
Ide dariuji-tadalah untuk mengevaluasi apakah ada perbedaan dalam distribusi # variabel numerik antara
kelompok yang berbeda dari variabel nominal. Untuk menunjukkan hal ini, saya akan memilih tingkat Fair
dan Ideal dari potongan variabel faktor, kemudian kita akan membandingkan nilai variabel numerik di
antara kedua kelompok tersebut.

data = berlian[diamonds$cut %in% c('Fair', 'Ideal'), ]

data$cut = droplevels.factor(data$cut) # Jatuhkan level yang tidak digunakan dari

potong variabel
df1 = data[, c('potong', 'harga')]

# Kita dapat melihat rata-rata harga berbeda untuk setiap grup


tapply(df1$price, df1$cut, mean)
#Cukup Ideal
#4358.758 3457.542

Uji-t diimplementasikan dalam R dengant.testfungsi. Antarmuka rumus ke t.test adalah cara paling sederhana
untuk menggunakannya, idenya adalah bahwa variabel numerik dijelaskan oleh variabel grup.

Sebagai contoh:t.test(variabel_numerik ~ variabel_kelompok, data = data). Pada contoh


sebelumnya,numerik_variabeladalahhargadangrup_variabeladalahmemotong.

Dari perspektif statistik, kami menguji apakah ada perbedaan distribusi variabel numerik di
antara dua kelompok. Secara formal pengujian hipotesis dijelaskan dengan hipotesis nol
(H0) dan hipotesis alternatif (H1).

• H0: Tidak ada perbedaan distribusi variabel harga antara kelompok Wajar dan
Ideal
• H1 Ada perbedaan distribusi variabel harga antara kelompok Wajar dan
Ideal

Berikut ini dapat diimplementasikan dalam R dengan kode berikut

t.test(harga ~ potong, data = data)

# Welch Two Sample t-test


#
# data: harga berdasarkan potongan
# t = 9,7484, df = 1894,8, nilai p < 2.2e-16
# hipotesis alternatif: perbedaan rata-rata yang sebenarnya tidak sama dengan 0
# Interval kepercayaan 95 persen:
# 719.9065 1082.5251
# perkiraan sampel:
# rata-rata dalam grup Rata-rata dalam grup Ideal
#4358.758 3457.542

# Cara lain untuk memvalidasi hasil sebelumnya adalah dengan hanya memplot
distribusi menggunakan plot-kotak
plot(harga ~ potong, data = data, ylim = c(0,12000),
col = 'biru tua3')

Kita dapat menganalisis hasil tes dengan memeriksa apakah nilai p lebih rendah dari 0,05. Jika ini masalahnya, kami
mempertahankan hipotesis alternatif. Ini berarti kami telah menemukan perbedaan harga di antara dua tingkat
faktor pemotongan. Dengan nama level kami akan mengharapkan hasil ini, tetapi kami tidak akan mengharapkan
bahwa harga rata-rata di grup Gagal akan lebih tinggi daripada di grup Ideal. Kita dapat melihat ini dengan
membandingkan rata-rata dari masing-masing faktor.

Itumerencanakanperintah menghasilkan grafik yang menunjukkan hubungan antara harga dan variabel
potong. Ini adalah plot kotak; kami telah membahas plot ini di bagian 16.0.1 tetapi pada dasarnya menunjukkan
distribusi variabel harga untuk dua tingkat potongan yang kami analisis.

Analisis Varians
Analisis Varians (ANOVA) adalah model statistik yang digunakan untuk menganalisis perbedaan antar distribusi
kelompok dengan membandingkan mean dan varians dari masing-masing kelompok, model ini dikembangkan oleh
Ronald Fisher. ANOVA menyediakan uji statistik apakah rata-rata beberapa kelompok sama atau tidak, dan oleh
karena itu menggeneralisasi uji-t ke lebih dari dua kelompok.
ANOVA berguna untuk membandingkan tiga atau lebih kelompok untuk signifikansi statistik karena melakukan
beberapa uji-t dua sampel akan menghasilkan peningkatan kemungkinan melakukan kesalahan tipe I statistik.

Dalam hal memberikan penjelasan matematis, berikut ini diperlukan untuk memahami tes.

xaku j= x + (xsayax) + (xaku jx)

Ini mengarah ke model berikut

xaku j= +saya+∈aku j

di mana adalah mean besar danαsayaadalah mean grup ke-i. Istilah kesalahan∈aku jdiasumsikan iid dari
distribusi normal. Hipotesis nol dari pengujian tersebut adalah bahwa

α1=2= … =k

Dalam hal menghitung statistik uji, kita perlu menghitung dua nilai

• Jumlah kuadrat selisih antar kelompok

SSDB=∑ik∑jn(xsaya−̄x)2

• Jumlah kuadrat dalam grup

SSDW=∑ik∑jn(xaku j¯ −̄xsaya)̄2

di mana SSDBmemiliki derajat kebebasan k−1 dan SSDWmemiliki derajat kebebasan N−k. Kemudian kita dapat
menentukan perbedaan kuadrat rata-rata untuk setiap metrik.

NONAB= SSDB/ (k - 1)

NONAw= SSDw/ (N - k)

Akhirnya, statistik uji dalam ANOVA didefinisikan sebagai rasio dari dua kuantitas di atas

F = MSB/ NONAw

yang mengikuti distribusi-F dengank−1danNkderajat kebebasan. Jika hipotesis nol benar, F


kemungkinan akan mendekati 1. Jika tidak, MSB kuadrat rata-rata antar grup kemungkinan besar,
yang menghasilkan nilai F yang besar.

Pada dasarnya, ANOVA memeriksa dua sumber varians total dan melihat bagian mana yang lebih berkontribusi.
Inilah sebabnya mengapa disebut analisis varians meskipun tujuannya adalah untuk membandingkan rata-rata
kelompok.
Dalam hal menghitung statistik, sebenarnya agak sederhana untuk dilakukan di R. Contoh berikut akan
menunjukkan bagaimana hal itu dilakukan dan plot hasilnya.

perpustakaan (ggplot2)
# Kami akan menggunakan dataset mtcars

kepala (mtcars)
# mpg sil disp hp drat wt qsec vs saya gigi karbohidrat
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 160 0 1 4 4
# Mazda RX4 Wag 21.0 6 110 3.90 2.875 17.02 108 93 3.85 0 1 4 4
#datsun 710 22.8 4 2.320 18.61 258 110 3.08 3.215 1 1 4 1
# Hornet 4 Drive 21.4 6 19.44 360 175 3.15 3.440 17.02 1 0 3 1
# Hornet Sport tentang 18,7 8 225 105 2.76 3.460 20.22 0 0 3 2
# Berani 18.1 6 1 0 3 1

# Mari kita lihat apakah ada perbedaan antara kelompok cyl dalam variabel mpg.

data = mtcars[, c('mpg', 'cyl')] fit = lm(mpg ~


cyl, data = mtcars) anova(fit)

# Analisis Tabel Varians


# Tanggapan: mpg
# Df Sum Sq Mean Sq F nilai 1 Pr(>F)
# cyl 817,71 817,71 79.561 6.113e-10 ***
# Residu 30 308,33 10.28
# Signif. kode: 0 *** 0,001 ** 0,01 * 0,05 .
# Gambarkan distribusinya
plot(mpg ~ as.factor(cyl), data = mtcars, col = 'deepskyblue3')

Kode akan menghasilkan output berikut


Nilai p yang kita dapatkan dalam contoh secara signifikan lebih kecil dari 0,05, jadi R mengembalikan simbol '***'
untuk menunjukkan ini. Ini berarti kami menolak hipotesis nol dan kami menemukan perbedaan antara mpg
mean di antara kelompok yang berbeda daricylvariabel.

Pembelajaran Mesin untuk Analisis Data


Pembelajaran mesin adalah subbidang ilmu komputer yang berhubungan dengan tugas-tugas seperti
pengenalan pola, visi komputer, pengenalan suara, analitik teks dan memiliki hubungan yang kuat
dengan statistik dan optimasi matematika. Aplikasi termasuk pengembangan mesin pencari, penyaringan
spam, Optical Character Recognition (OCR) antara lain. Batasan antara data mining, pengenalan pola dan
bidang pembelajaran statistik tidak jelas dan pada dasarnya semua mengacu pada masalah yang serupa.

Pembelajaran mesin dapat dibagi menjadi dua jenis tugas

• Pembelajaran yang Diawasi


• Pembelajaran tanpa pengawasan

Pembelajaran yang Diawasi


Pembelajaran yang diawasi mengacu pada jenis masalah di mana ada data input yang didefinisikan sebagai matriksX
dan kami tertarik untuk memprediksi responskamu. Di manaX = {x1, x2, …, xn}memilikinprediktor dan memiliki dua
nilaiy = {c1, c2}.

Sebuah contoh aplikasi akan memprediksi kemungkinan pengguna web untuk mengklik iklan
menggunakan fitur demografis sebagai prediktor. Ini sering disebut untuk memprediksi rasio klik-
tayang (RKT). Kemudiany = {klik, tidak klik}dan prediktornya bisa berupa alamat IP yang digunakan,
hari dia memasuki situs, kota pengguna, negara di antara fitur-fitur lain yang tersedia.

Pembelajaran tanpa pengawasan

Pembelajaran tanpa pengawasan berkaitan dengan masalah menemukan kelompok yang serupa dalam satu sama
lain tanpa memiliki kelas untuk belajar. Ada beberapa pendekatan untuk tugas mempelajari pemetaan dari
prediktor untuk menemukan kelompok yang berbagi contoh serupa di setiap kelompok dan berbeda satu sama
lain.

Contoh penerapan unsupervised learning adalah segmentasi pelanggan. Misalnya, dalam industri telekomunikasi,
tugas umum adalah mengelompokkan pengguna menurut penggunaan yang mereka berikan ke telepon. Ini akan
memungkinkan departemen pemasaran untuk menargetkan setiap kelompok dengan produk yang berbeda.

Analisis Data Besar - Pengklasifikasi Naive Bayes


Naive Bayes adalah teknik probabilistik untuk membangun pengklasifikasi. Asumsi karakteristik dari
pengklasifikasi naive Bayes adalah untuk mempertimbangkan bahwa nilai fitur tertentu tidak
tergantung pada nilai fitur lainnya, mengingat variabel kelas.

Terlepas dari asumsi yang terlalu disederhanakan yang disebutkan sebelumnya, pengklasifikasi naif Bayes memiliki hasil
yang baik dalam situasi dunia nyata yang kompleks. Keuntungan dari naive Bayes adalah hanya memerlukan sejumlah kecil
data pelatihan untuk memperkirakan parameter yang diperlukan untuk klasifikasi dan bahwa pengklasifikasi dapat dilatih
secara bertahap.

Naive Bayes adalah model probabilitas bersyarat: diberikan contoh masalah untuk diklasifikasikan,
diwakili oleh vektorx= (x1, …, xn) mewakili beberapa n fitur (variabel independen), ia menetapkan
probabilitas instans ini untuk setiap K hasil atau kelas yang mungkin.

p(Ck|x1,.....,xn)

Masalah dengan rumusan di atas adalah jika jumlah fitur n besar atau jika fitur dapat mengambil sejumlah besar
nilai, maka mendasarkan model seperti itu pada tabel probabilitas tidak layak. Oleh karena itu kami merumuskan
kembali model untuk membuatnya lebih sederhana. Menggunakan teorema Bayes, probabilitas bersyarat dapat
didekomposisi sebagai

p(Ck|x)=p(Ck)p(x|Ck)p(x)
Ini berarti bahwa di bawah asumsi independensi di atas, distribusi bersyarat atas variabel
kelas C adalah

p(Ck|x1,.....,xn)=1Zp(Ck)∏saya=1np(xsaya|Ck)

dimana bukti Z = p(x) adalah faktor penskalaan yang hanya bergantung pada x1, …, xn, itu adalah
konstanta jika nilai-nilai variabel fitur diketahui. Satu aturan umum adalah memilih hipotesis yang
paling mungkin; ini dikenal sebagai aturan keputusan a posteriori atau MAP maksimum. Itu
pengklasifikasi yang sesuai, pengklasifikasi Bayes, adalah fungsi yang memberikan label kelaskamu=̂Ck

untuk beberapa k sebagai berikut

kamu=̂argmaxp(Ck)∏saya=1np(xsaya|Ck)

Menerapkan algoritma dalam R adalah proses yang mudah. Contoh berikut menunjukkan cara melatih
pengklasifikasi Naive Bayes dan menggunakannya untuk prediksi dalam masalah pemfilteran spam.

Skrip berikut tersedia di:bda/part3/naive_bayes/naive_bayes.Rmengajukan.

# Instal paket-paket ini


pkgs = c("klaR", "caret", "ElemStatLearn")
install.packages(pkgs)
library('ElemStatLearn')
library("klaR")
perpustakaan("tanda sisipan")

# Pisahkan data dalam pelatihan dan pengujian


inx = sampel(nrow(spam), round(nrow(spam) * 0.9)) train =
spam[inx,]
tes = spam[-inx,]

# Tentukan matriks dengan fitur, X_train


# Dan vektor dengan label kelas, y_train X_train =
train[,-58]
y_train = kereta$spam
X_test = tes[,-58]
y_test = tes$spam
# Latih modelnya
nb_model = kereta(X_train, y_train, metode = 'nb',
trControl = trainControl(metode = 'cv', angka = 3))

# Hitung
preds = prediksi(nb_model$finalModel, X_test)$class tbl =
tabel(y_test, yhat = preds)
jumlah(diag(tbl)) / jumlah(tbl)
#0.7217391

Seperti yang kita lihat dari hasil, akurasi model Naive Bayes adalah 72%. Ini berarti model
mengklasifikasikan 72% instance dengan benar.
Analisis Big Data - K-Means Clustering
Pengelompokan k-means bertujuan untuk mempartisi n pengamatan menjadi k cluster dimana setiap pengamatan
merupakan bagian dari cluster dengan mean terdekat, yang berfungsi sebagai prototipe cluster. Ini menghasilkan
partisi ruang data ke dalam sel Voronoi.

Diberikan satu set pengamatan(x1, x2, …, xn), dimana setiap pengamatan merupakan vektor real berdimensi d, k-
means clustering bertujuan untuk mempartisi n pengamatan menjadi k grupG = {G1, G2, …, Gk}sehingga
meminimalkan jumlah kuadrat dalam cluster (WCSS) yang didefinisikan sebagai berikut

argmin∑saya=1k∑x∈Ssaya∥x−μsaya∥2

Rumus selanjutnya menunjukkan fungsi tujuan yang diminimalkan untuk menemukan prototipe
optimal dalam pengelompokan k-means. Intuisi dari rumus tersebut adalah kita ingin mencari grup
yang berbeda satu sama lain dan setiap anggota dari setiap grup harus serupa dengan anggota lain
dari setiap cluster.

Contoh berikut menunjukkan cara menjalankan algoritma pengelompokan k-means di R.

perpustakaan (ggplot2)
# Siapkan Data
data = mtcar

# Kita perlu menskalakan data agar memiliki rata-rata nol dan data varians unit <-
scale(data)

# Tentukan jumlah cluster


wss <- (nrow(data)-1)*sum(apply(data,2,var)) for (i in
2:dim(data)[2]) {
wss[i] <- jumlah(kmeans(data, pusat = i)$dalam)
}

# Plot clusternya
plot(1:dim(data)[2], wss, type = "b", xlab = "Jumlah Cluster",
ylab = "Dalam grup jumlah kuadrat")

Untuk menemukan nilai yang baik untuk K, kita dapat memplot jumlah kuadrat dalam grup untuk
nilai K yang berbeda. Metrik ini biasanya menurun saat lebih banyak grup ditambahkan, kami ingin
menemukan titik di mana penurunan jumlah grup dalam kotak mulai berkurang perlahan. Dalam
plot, nilai ini paling baik diwakili oleh K = 6.
Sekarang setelah nilai K telah ditentukan, maka diperlukan untuk menjalankan algoritma dengan nilai tersebut.

# Analisis Cluster K-Means


cocok <- kmeans(data, 5) # 5 solusi cluster

# dapatkan sarana cluster


agregat(data,berdasarkan = daftar(fit$cluster),FUN = mean)

# tambahkan tugas cluster


data <- data.frame(data, fit$cluster)

Analisis Big Data - Aturan Asosiasi


Membiarkansaya = saya1, saya2, ..., sayanmenjadi satu set n atribut biner yang disebut item. MembiarkanD = t1,
t2, ..., tmmenjadi sekumpulan transaksi yang disebut database. Setiap transaksi di D memiliki ID transaksi unik
dan berisi subset item di I. Aturan didefinisikan sebagai implikasi dari bentuk X⇒ Y dimana X, Y⊆ I dan X Y =.

Himpunan item (untuk set item pendek) X dan Y disebut anteseden (sisi kiri atau LHS) dan
konsekuen (sisi kanan atau RHS) dari aturan.
Untuk mengilustrasikan konsep, kami menggunakan contoh kecil dari domain supermarket. Himpunan
item adalah I = {susu, roti, mentega, bir} dan database kecil yang berisi item ditunjukkan pada tabel
berikut.

ID transaksi item
1 susu, roti
2 mentega roti
3 Bir
4 susu, roti, mentega
5 mentega roti

Contoh aturan untuk supermarket bisa jadi {susu, roti}{mentega} artinya jika susu dan roti dibeli, pelanggan
juga membeli mentega. Untuk memilih aturan yang menarik dari himpunan semua aturan yang mungkin,
batasan pada berbagai ukuran signifikansi dan kepentingan dapat digunakan. Kendala yang paling terkenal
adalah ambang batas minimum pada dukungan dan kepercayaan.

Dukungan supp(X) dari set item X didefinisikan sebagai proporsi transaksi dalam set data yang berisi
set item. Dalam contoh database pada Tabel 1, set item {susu, roti} memiliki dukungan 2/5 = 0,4 karena
terjadi pada 40% dari semua transaksi (2 dari 5 transaksi). Menemukan kumpulan item yang sering
dapat dilihat sebagai penyederhanaan dari masalah pembelajaran yang tidak diawasi.

Keyakinan suatu aturan didefinisikan conf(X⇒ Y ) = supp(X∪ Y )/persediaan(X). Misalnya, aturan


{susu, roti}{butter} memiliki tingkat kepercayaan 0,2/0,4 = 0,5 dalam database pada Tabel 1, yang
berarti bahwa untuk 50% transaksi yang mengandung susu dan roti aturannya benar. Keyakinan
dapat diartikan sebagai perkiraan probabilitas P(Y|X), probabilitas menemukan RHS aturan dalam
transaksi dengan syarat bahwa transaksi ini juga mengandung LHS.

Dalam skrip yang terletak dibda/part3/apriori.Rkode untuk mengimplementasikanalgoritma aprioridapat


ditemukan.

# Muat perpustakaan untuk melakukan aturan asosiasi


# install.packages('arules')
library(arules)

# Prapemrosesan data
data("Dewasa UCI")
DewasaUCI[1:2,]
AdultUCI[["fnlwgt"]] <- NULL
AdultUCI[["education-num"]] <- NULL

AdultUCI[[ "usia"]] <- dipesan(cut(AdultUCI[[ "usia"]], c(15,25,45,65,100)),


labels = c("Muda", "Setengah baya", "Senior", "Tua"))
AdultUCI[[ "jam-per-minggu"]] <- dipesan(cut(AdultUCI[[ "jam-per-minggu"]],
c(0,25,40,60,168)), labels = c("Paruh waktu", "Penuh waktu", "Lembur waktu", "Pekerja
keras"))
AdultUCI[[ "capital-gain"]] <- dipesan(cut(AdultUCI[[ "capital-gain"]],
c(-Inf,0,median(AdultUCI[[ "capital-gain"]]
[AdultUCI[[ "capitalgain"]]>0]),Inf)),
labels = c("Tidak Ada", "Rendah", "Tinggi"))
AdultUCI[[ "capital-loss"]] <- dipesan(cut(AdultUCI[[ "capital-loss"]],
c(-Inf,0, median(AdultUCI[[ "capital-loss"]]
[AdultUCI[[ "capitalloss"]]>0]),Inf)),
label = c("tidak ada", "rendah", "tinggi"))

Untuk menghasilkan aturan menggunakan algoritma apriori, kita perlu membuat matriks transaksi. Kode berikut
menunjukkan bagaimana melakukan ini di R.

# Convert the data into a transactions format Adult <-


as(AdultUCI, "transactions")
Dewasa
# transaksi dalam format jarang dengan
#48842 transaksi (baris) dan
# 115 item (kolom)

ringkasan (Dewasa)
# Plot set item yang sering
itemFrequencyPlot(Dewasa, dukungan = 0.1, cex.names = 0.8)

# buat aturan
min_dukungan = 0,01
kepercayaan = 0,6
aturan <- apriori(Dewasa, parameter = daftar(dukungan = min_dukungan, keyakinan = keyakinan))

aturan
periksa(aturan[100:110, ])
# lhs rhs mendukung
peningkatan kepercayaan diri
# {pekerjaan = Bertani-memancing} => {seks = Laki-laki} 0,02856148 0.9362416
1.4005486
# {pekerjaan = Bertani-memancing} => {ras = Putih} 0,02831579 0.9281879
1.0855456
# {pekerjaan = Bertani-memancing} => {negeri asli 0.9759474 0,02671881 0.8758389

= Amerika Serikat}

Analisis Big Data - Pohon Keputusan


Sebuah Pohon Keputusan adalah algoritma yang digunakan untuk masalah pembelajaran terawasi seperti
klasifikasi atau regresi. Sebuah pohon keputusan atau pohon klasifikasi adalah pohon di mana setiap node internal
(nonleaf) diberi label dengan fitur input. Busur yang berasal dari simpul yang diberi label dengan fitur diberi label
dengan masing-masing nilai yang mungkin dari fitur tersebut. Setiap daun pohon diberi label dengan kelas atau
distribusi probabilitas di atas kelas.

Sebuah pohon dapat "dipelajari" dengan membagi set sumber menjadi subset berdasarkan pengujian
nilai atribut. Proses ini diulangi pada setiap subset turunan secara rekursif yang disebutpartisi rekursif.
Rekursi selesai ketika subset pada node memiliki semua nilai yang sama dari variabel target, atau ketika
pemisahan tidak lagi menambah nilai prediksi. Proses top-
induksi bawah pohon keputusan adalah contoh dari algoritma serakah, dan itu adalah strategi yang paling umum
untuk mempelajari pohon keputusan.

Pohon keputusan yang digunakan dalam penambangan data terdiri dari dua jenis utama

• Pohon klasifikasi− ketika responsnya adalah variabel nominal, misalnya apakah email itu spam atau
bukan.
• Pohon regresi− ketika hasil yang diprediksi dapat dianggap sebagai bilangan real (misalnya gaji
seorang pekerja).

Pohon keputusan adalah metode sederhana, dan karena itu memiliki beberapa masalah. Salah satu masalah ini
adalah varians yang tinggi dalam model yang dihasilkan yang dihasilkan oleh pohon keputusan. Untuk mengatasi
masalah ini, metode ensemble pohon keputusan dikembangkan. Ada dua kelompok metode ensemble yang saat ini
digunakan secara luas

• Pohon keputusan mengantongi− Pohon-pohon ini digunakan untuk membangun beberapa pohon
keputusan dengan berulang kali melakukan pengambilan sampel ulang data pelatihan dengan penggantian,
dan memilih pohon untuk prediksi konsensus. Algoritma ini disebut hutan acak.
• Meningkatkan pohon keputusan− Peningkatan gradien menggabungkan pelajar yang lemah; dalam hal ini, pohon
keputusan menjadi pembelajar kuat tunggal, secara iteratif. Ini menyesuaikan pohon yang lemah dengan data dan
secara iteratif terus menyesuaikan peserta didik yang lemah untuk memperbaiki kesalahan model sebelumnya.

# Instal paket pesta


# install.packages('party')
library(party)
perpustakaan (ggplot2)

kepala (berlian)
# Kami akan memprediksi potongan berlian menggunakan fitur yang tersedia di dataset berlian.

ct = ctree(potong ~ ., data = berlian)

# plot(ct, main="Pohon Inferensi Bersyarat")


# Contoh keluaran
# Tanggapan: potong
# Input: karat, warna, kejelasan, kedalaman, tabel, harga, x, y, z

# Jumlah pengamatan: 53940


#
# 1) tabel <= 57; kriteria = 1, statistik = 10131.878
# 2) kedalaman <= 63; kriteria = 1, statistik = 8377.279
# 3) tabel <= 56,4; kriteria = 1, statistik = 226.423
# 4) z <= 2,64; kriteria = 1, statistik = 70,393
# 5) kejelasan <= VS1; kriteria = 0,989, statistik = 10,48
# 6) warna <= E; kriteria = 0,997, statistik = 12,829
# 7)* bobot = 82
# 6) warna > E

# Tabel tabel kesalahan prediksi(predict(ct),


diamonds$cut)
# Cukup Bagus Sangat Bagus Premium Ideal
# Adil 1388 171 17 0 14
# Bagus 102 2912 499 26 27
# Sangat bagus 54 998 3334 249 355
# Premium 44 711 5054 11915 1167
# Ideal 22 114 3178 1601 19988
# Perkiraan probabilitas kelas
probs = prediksi(ct, newdata = berlian, ketik = "prob") probs =
lakukan.call(rbind, probs)
kepala (prob)

Analisis Data Besar - Regresi Logistik


Regresi logistik merupakan model klasifikasi dimana variabel respon bersifat kategoris. Ini adalah
algoritma yang berasal dari statistik dan digunakan untuk masalah klasifikasi yang diawasi. Dalam
regresi logistik kita mencari vektor dari parameter dalam persamaan berikut yang meminimalkan fungsi
biaya.

logit(psaya)=ln(psaya1−psaya)=β0+β1x1,saya+...+βkxk,saya

Kode berikut menunjukkan bagaimana menyesuaikan model regresi logistik di R. Kami akan menggunakan di sini
dataset spam untuk menunjukkan regresi logistik, yang sama yang digunakan untuk Naive Bayes.

Dari hasil prediksi dalam hal akurasi, kami menemukan bahwa model regresi mencapai akurasi 92,5%
dalam set pengujian, dibandingkan dengan 72% yang dicapai oleh pengklasifikasi Naive Bayes.

perpustakaan(ElemStatLearn)
kepala (spam)

# Pisahkan kumpulan data dalam pelatihan dan pengujian


inx = sample(nrow(spam), round(nrow(spam) * 0.8)) train =
spam[inx,]
tes = spam[-inx,]

# Sesuaikan model regresi


fit = glm(spam ~ ., data = train, family = binomial()) ringkasan(fit)

# Panggilan:
# glm(rumus = spam ~ ., keluarga = binomial(), data = kereta)
#

# Sisa Penyimpangan:
# Min 1Q median 3Q Maks
# - 4,5172 - 0,2039 0,0000 0,1111 5,4944
# Koefisien:
# Perkiraan Std. Kesalahan nilai z Pr(>|z|)
# (Intercept) -1.511e+00 1.546e-01 -9.772 < 2e-16 ***
# A.1 - 4.546e-01 2.560e-01 - 1,776 0,075720 .
# A.2 - 1.630e-01 7.731e-02 - 2.108 0,035043 *
# A.3 1.487e-01 1.261e-01 1.179 0.238591
# A.4 2.055e+00 1.467e+00 1,401 0,161153
# A.5 6.165e-01 1.191e-01 5.177 2.25e-07 ***
# A.6 7.156e-01 2.768e-01 2.585 0.009747 **
# A.7 2.606e+00 3.917e-01 6.652 2.88e-11 ***
# A.8 6.750e-01 2.284e-01 2.955 0,003127 **
# A.9 1.197e+00 3.362e-01 3,559 0,000373***
# Signif. kode: 0 *** 0,001 ** 0,01 * 0,05 . 0.1 1

# # # Membuat prediksi
preds = prediksi(fit, test, type = 'respons') preds =
ifelse(preds > 0.5, 1, 0)
tbl = table(target = test$spam, preds) tbl

# mendahului

# target 0 1
# surel 535 23
# spam 46 316
jumlah(diag(tbl)) / jumlah(tbl)
#0.925

Analisis Data Besar - Analisis Deret Waktu


Deret waktu adalah urutan pengamatan variabel kategoris atau numerik yang diindeks oleh tanggal,
atau stempel waktu. Contoh yang jelas dari data deret waktu adalah deret waktu dari harga saham.
Pada tabel berikut, kita dapat melihat struktur dasar data deret waktu. Dalam hal ini pengamatan
dicatat setiap jam.

stempel waktu Harga saham


2015-10-11 09:00:00 100
2015-10-11 10:00:00 110
2015-10-11 11:00:00 105
2015-10-11 12:00:00 90
2015-10-11 13:00:00 120

Biasanya, langkah pertama dalam analisis deret waktu adalah memplot deret, ini biasanya dilakukan dengan diagram
garis.

Aplikasi paling umum dari analisis deret waktu adalah meramalkan nilai masa depan dari nilai numerik
menggunakan struktur temporal data. Ini berarti, pengamatan yang tersedia digunakan untuk memprediksi
nilai dari masa depan.

Urutan temporal data, menyiratkan bahwa metode regresi tradisional tidak berguna. Untuk
membangun ramalan yang kuat, kita membutuhkan model yang memperhitungkan urutan temporal
data.

Model yang paling banyak digunakan untuk Analisis Deret Waktu disebutRata-rata Pergerakan
Autoregresif(ARMA). Model terdiri dari dua bagian, danautoregresif(AR) bagian dan abergerak
rata-rata(MA) bagian. Model ini biasanya kemudian disebut sebagaiARMA(p, q)model dimanapadalah
urutan bagian autoregresif danqadalah urutan bagian rata-rata bergerak.

Model Autoregresif
ItuAR(p)dibaca sebagai model autoregresif orde p. Secara matematis ditulis sebagai

Xt=c+∑saya=1PϕsayaXt−saya+εt

dimana {φ1, …,p} adalah parameter yang akan diestimasi, c adalah konstanta, dan variabel acakt
mewakili kebisingan putih. Beberapa batasan diperlukan pada nilai parameter agar
model tetap stasioner.

Rata-Rata Bergerak

NotasinyaMA(q)mengacu pada model pesanan rata-rata bergerakq−

Xt=μ+εt+∑saya=1qθsayaεt−saya

dimana1, ...,qadalah parameter model, adalah harapan dari Xt, dant,t 1, ... adalah, istilah
kesalahan white noise.

Rata-rata Pergerakan Autoregresif

ItuARMA(p, q)model menggabungkan p istilah autoregressive dan q istilah moving-average.


Secara matematis model tersebut dinyatakan dengan rumus berikut

Xt=c+εt+∑saya=1PϕsayaXt1+∑saya=1qθsayaεt−saya

Kita dapat melihat bahwaARMA(p, q)model adalah kombinasi dariAR(p)danMA(q)model.

Untuk memberikan beberapa intuisi model, pertimbangkan bahwa bagian AR dari persamaan berusaha memperkirakan
parameter untuk Xt sayapengamatan untuk memprediksi nilai variabel dalam Xt. Hal ini pada akhirnya rata-rata tertimbang
dari nilai-nilai masa lalu. Bagian MA menggunakan pendekatan yang sama tetapi dengan kesalahan pengamatan
sebelumnya,t saya. Jadi pada akhirnya, hasil dari model tersebut adalah rata-rata tertimbang.

Cuplikan kode berikut menunjukkan cara mengimplementasikanARMA(p, q) dalam R.

# install.packages("forecast")
library("forecast")

# Baca datanya
data = scan('fancy.dat')
ts_data <- ts(data, frekuensi = 12, mulai = c(1987,1)) ts_data
plot.ts(ts_data)

Memplot data biasanya merupakan langkah pertama untuk mengetahui apakah ada struktur temporal dalam
data. Kita dapat melihat dari plot bahwa ada lonjakan kuat di setiap akhir tahun.

Kode berikut cocok dengan model ARMA ke data. Ini menjalankan beberapa kombinasi model dan memilih salah satu yang
memiliki lebih sedikit kesalahan.

# Fit model ARMA fit =


auto.arima(ts_data) ringkasan(fit)

# Seri: ts_data
# ARIMA(1,1,1)(0,1,1)[12]
# Koefisien:
# ar1 ma1 sma1
# 0.2401 - 0,9013 0.7499
# se 0.1427 0,0709 0,1790

#
# sigma^2 diperkirakan 15464184: kemungkinan log = -693,69
# AIC = 1395,38 AICc = 1395,98 BIC = 1404,43

# Tindakan kesalahan set pelatihan:


# SAYA RMSE MAE MPE peta MAS
ACF1
# Set pelatihan 328.301 3615.374 2171.002 -2.481166 15.97302 0.4905797
- 0,02521172

Analisis Data Besar - Analisis Teks


Dalam bab ini, kita akan menggunakan data yang tergores di bagian 1 buku ini. Data memiliki teks yang
menjelaskan profil pekerja lepas, dan tarif per jam yang mereka kenakan dalam USD. Ide dari bagian berikut adalah
untuk menyesuaikan model yang diberikan keterampilan seorang freelancer, kita dapat memprediksi gaji per
jamnya.

Kode berikut menunjukkan cara mengonversi teks mentah yang dalam hal ini memiliki keterampilan pengguna dalam
sekantong matriks kata. Untuk ini kami menggunakan pustaka R yang disebut tm. Artinya untuk setiap kata dalam corpus
kita membuat variabel dengan jumlah kemunculan masing-masing variabel.

perpustakaan (tm)
perpustakaan(data.tabel)

source('text_analytics/text_analytics_functions.R') data =
fread('text_analytics/data/profiles.txt') rate = as.numeric(data$rate)

keep = !is.na(tarif)
tingkat = tingkat[pertahankan]

# # # Buat kantong kata dari judul dan isi X_all =


bag_words(data$user_skills[keep]) X_all =
removeSparseTerms(X_all, 0.999) X_all

# <<DocumentTermMatrix (dokumen: 389, istilah: 1422)>>


# Entri non-/jarang: 4057/549101
# Keterbatasan : 99%
# Panjang jangka waktu maksimal: 80
# Pembobotan : frekuensi istilah - frekuensi dokumen terbalik
(dinormalisasi) (tf-idf)

# # # Buat matriks sparse dengan semua data X_all <-


as_sparseMatrix(X_all)

Sekarang kita memiliki teks yang direpresentasikan sebagai matriks sparse, kita dapat memasukkan model yang akan
memberikan solusi sparse. Alternatif yang baik untuk kasus ini adalah menggunakan LASSO (operator penyusutan dan
seleksi paling kecil). Ini adalah model regresi yang mampu memilih fitur yang paling relevan untuk memprediksi target.

train_inx = 1:200
X_train = X_all[train_inx, ] y_train =
rate[train_inx] X_test = X_all[-
train_inx, ] y_test = rate[-train_inx]

# Latih pustaka model regresi


(glmnet)
cocok <- cv.glmnet(x = X_train, y = y_train,
family = 'gaussian', alpha = 1, nfolds = 3,
type.measure = 'mae') plot(fit)

# Membuat prediksi
prediksi = prediksi(fit, newx = X_test) prediksi =
as.vector(prediksi[,1]) head(prediksi)

# 36.23598 36.43046 51.69786 26.06811 35.13185 3766367


# Kita dapat menghitung kesalahan absolut rata-rata untuk rata-rata data uji
(abs(y_test - prediksi))
#15.02175

Sekarang kami memiliki model yang diberikan seperangkat keterampilan yang dapat memprediksi gaji per jam
seorang freelancer. Jika lebih banyak data dikumpulkan, kinerja model akan meningkat, tetapi kode untuk
mengimplementasikan pipeline ini akan sama.

Analisis Big Data - Pembelajaran Online


Pembelajaran online adalah subbidang pembelajaran mesin yang memungkinkan untuk menskalakan model pembelajaran
terawasi ke kumpulan data besar. Ide dasarnya adalah bahwa kita tidak perlu membaca semua data di memori agar sesuai dengan
model, kita hanya perlu membaca setiap instance pada satu waktu.

Dalam hal ini, kami akan menunjukkan bagaimana menerapkan algoritma pembelajaran online
menggunakan regresi logistik. Seperti di sebagian besar algoritma pembelajaran terawasi, ada fungsi
biaya yang diminimalkan. Dalam regresi logistik, fungsi biaya didefinisikan sebagai

J(θ)=−1m[∑saya=1mkamu(saya)catatan(hθ(x(saya)))+(1−kamu(saya))catatan(1−hθ(x(saya)))]

di manaJ()mewakili fungsi biaya danhθ(x)mewakili hipotesis. Dalam kasus regresi


logistik didefinisikan dengan rumus berikut

hθ(x)=11+eθTx

Sekarang kita telah mendefinisikan fungsi biaya, kita perlu menemukan algoritma untuk meminimalkannya.
Algoritma paling sederhana untuk mencapai ini disebut penurunan gradien stokastik. Aturan pembaruan
algoritma untuk bobot model regresi logistik didefinisikan sebagai

θj:=θj−α(hθ(x)−kamu)x

Ada beberapa implementasi dari algoritma berikut, tetapi yang diimplementasikan di wabbit vokal
perpustakaan adalah yang paling berkembang. Pustaka memungkinkan pelatihan model regresi skala besar
dan menggunakan sejumlah kecil RAM. Dalam kata-kata penciptanya sendiri dijelaskan sebagai: "Proyek
Vowpal Wabbit (VW) adalah sistem pembelajaran out-of-core cepat yang disponsori oleh Microsoft Research
dan (sebelumnya) Yahoo! Research".
Kami akan bekerja dengan dataset titanic dari akagglekompetisi. Data asli dapat ditemukan
dibda/part3/vwmap. Di sini, kami memiliki dua file

• Kami memiliki data pelatihan (train_titanic.csv), dan


• data tidak berlabel untuk membuat prediksi baru (test_titanic.csv).

Untuk mengonversi format csv kewabbit vokalformat input menggunakan


csv_to_vowpal_wabbit.pyskrip python. Anda jelas harus menginstal python untuk ini.
Navigasikan kebda/part3/vwfolder, buka terminal dan jalankan perintah berikut

python csv_to_vowpal_wabbit.py

Perhatikan bahwa untuk bagian ini, jika Anda menggunakan windows, Anda perlu menginstal baris perintah
Unix, masukkan:cygwin situs web untuk itu.

Buka terminal dan juga di folderbda/part3/vwdan jalankan perintah berikut

vw train_titanic.vw -f model.vw --binary --passes 20 -c -q ff --sgd --l1 0,00000001 --l2 0,0000001 --


learning_rate 0.5 --loss_function logistic

Mari kita uraikan masing-masing argumen daripanggilan vwcara.

• - f model.vw− berarti kita menyimpan model di file model.vw untuk membuat


prediksi nanti
• - - biner− Melaporkan kerugian sebagai klasifikasi biner dengan label -1,1
• - - melewati 20− Data digunakan 20 kali untuk mempelajari bobot
• - c− buat file cache
• - q ff− Gunakan fitur kuadrat di ruang nama f
• - - sgd− gunakan pembaruan penurunan gradien stokastik reguler/klasik/sederhana, yaitu, nonadaptif,
non-normalisasi, dan non-invarian.
• - - l1 --l2− Regularisasi norma L1 dan L2
• - - learning_rate 0.5− Tingkat pembelajaran sebagaimana didefinisikan dalam rumus aturan pembaruan

Kode berikut menunjukkan hasil menjalankan model regresi di baris perintah. Dalam hasilnya,
kami mendapatkan rata-rata log-loss dan laporan kecil tentang kinerja algoritme.

- logistik loss_function
membuat fitur kuadrat untuk pasangan: ff
menggunakan regularisasi l1 = 1e-08
menggunakan regularisasi l2 = 1e-07

final_regressor = model.vw Jumlah


bit berat = 18
kecepatan belajar = 0,5
initial_t = 1
daya_t = 0,5
pembusukan_learning_rate = 1
menggunakan cache_file = train_titanic.vw.cache
mengabaikan input teks demi input cache num sources =
1

rata-rata sejak contoh contoh arus berat arus saat ini


kehilangan terakhir menangkal label meramalkan fitur
0,000000 0,000000 1 1.0 - 1.0000 - 1.0000 57
0,50000 1.000.000 2 2.0 1.0000 - 1.0000 57
0.250000 0,000000 4 4.0 1.0000 1.0000 57
0.375000 0.500000 8 8.0 - 1.0000 - 1.0000 73
0,625000 0.875000 16 16.0 - 1.0000 1.0000 73
0.468750 0.312500 32 32.0 - 1.0000 - 1.0000 57
0.468750 0.468750 64 64.0 - 1.0000 1.0000 43
0.375000 0.281250 128 128.0 1.0000 - 1.0000 43
0,351562 0.328125 256 256.0 1.0000 - 1.0000 43
0.359375 0,367188 512 512,0 - 1.0000 1.0000 57
0.274336 0.274336 1024 1024.0 - 1.0000 - 1.0000 57 jam
0.281938 0.289474 2048 2048.0 - 1.0000 - 1.0000 43 jam
0.246696 0.211454 4096 4096.0 - 1.0000 - 1.0000 43 jam
0.218922 0.191209 8192 8192.0 1.0000 1.0000 43 jam

selesai lari
jumlah contoh per pass = 802 pass yang
digunakan = 11
contoh weighted sum = 8822 weighted
label sum = -2288 rata-rata loss =
0.179775 h best constant = -0.530826 best
constants loss = 0.659128 total feature
number = 427878

Sekarang kita bisa menggunakanmodel.vwkami dilatih untuk menghasilkan prediksi dengan data baru.

vw -d test_titanic.vw -t -i model.vw -p prediksi.txt

Prediksi yang dihasilkan dalam perintah sebelumnya tidak dinormalisasi agar sesuai antara rentang [0, 1].
Untuk melakukan ini, kami menggunakan transformasi sigmoid.

# Baca prediksinya
preds = fread('vw/predictions.txt')

# Tentukan fungsi sigmoid sigmoid =


function(x) {
1 / (1 + exp(-x))
}
masalah = sigmoid(preds[[1]])

# Hasilkan label kelas preds = ifelse(probs >


0.5, 1, 0) head(preds)

# [1] 0 1 0 0 1 0

Anda mungkin juga menyukai