com
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.
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.
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.
Di bagian ini, kami akan menyoroti masing-masing tahapan siklus hidup data besar ini.
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.
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.
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.
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.
• 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.
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
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.
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
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.
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.
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.
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.
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.
Pertama-tama buat akun twitter, lalu ikuti petunjuk diIndonesiakemasan skema untuk
membuat akun pengembang twitter. Ini adalah ringkasan dari instruksi tersebut
# # # Ganti xxx dengan nilai yang Anda dapatkan dari instruksi sebelumnya
# kunci_konsumen = "xxxxxxxxxxxxxxxxxxxxx"
# rahasia_konsumen = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# access_token =
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# access_token_secret= "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Frekuensi
# Twitter untuk iPhone 71
#Twitter untuk Android 29
# Klien Web Twitter 25
# pengakuan 20
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.
[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 = ""))
# 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.
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.
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)
# # # 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)
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)
# 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')
# Lihat bantuan untuk ?geom_point dan geom_line untuk menemukan contoh serupa
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.
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()
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
dev.off()
# Simpan ke disk
png('boxplot_carrier_by_month.png') print(p)
dev.off()
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.
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.
# [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.
# 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"
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
# 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
• 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
...
kelas(df)
# [1] "data.frame"
# # # Pengindeksan
# Dapatkan baris
pertama df[1, ]
# angka surat-surat
#1 1 sebuah
# 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
# angka surat-surat
#1 1 sebuah
#2 2 b
#3 3 c
#4 4 d
#5 5 e
#6 6 f
# angka Campuran
#1 1 1a
#2 2 2b
#3 3 3c
kepala (df4)
# angka Campuran
#1 1 1a
#2 2 2b
#3 3 3c
#4 4 4d
#5 5 5e
#6 6 6f
# angka Campuran
#1 1 1a
#2 2 2b
#3 3 3c
#4 4 4d
#5 5 5e
# 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
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.
# memuat perpustakaan
perpustakaan ('sqldf')
perpustakaan(nycflights13)
# $ 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:
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
pembawa
")
#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
#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.
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
")
#c1 c2
#2 b
#4 c
PILIH
A.c1, B.c2
DARI
A KIRI LUAR GABUNG B
PADA A.c1 = B.c1
")
# c1 c2
#1 <NA>
#2 b
#3 <NA>
#4 c
• Analisis univariat
• Analisis multivariat
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 kumpulan data berlian untuk menganalisis distribusi variabel numerik
kepala (berlian)
# # # 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
png('02_histogram_diamonds_cut.png')
cetak (p)
dev.off()
Untuk mendemonstrasikan ini, kita akan menggunakan dataset diamonds. Untuk mengikuti kode, buka
skripbda/part2/charts/03_multivariate_analysis.R.
perpustakaan (ggplot2)
data (berlian)
# petak
peta panas(M_cor)
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.
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 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 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')]
# 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.
# # # 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
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)
# 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
# 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.
potong variabel
df1 = data[, c('potong', 'harga')]
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.
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
# 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= +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
SSDB=∑ik∑jn(xsaya−̄x)2
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
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.
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 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.
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
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.
# 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.
perpustakaan (ggplot2)
# Siapkan Data
data = mtcar
# Kita perlu menskalakan data agar memiliki rata-rata nol dan data varians unit <-
scale(data)
# 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.
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.
# Prapemrosesan data
data("Dewasa UCI")
DewasaUCI[1:2,]
AdultUCI[["fnlwgt"]] <- NULL
AdultUCI[["education-num"]] <- NULL
Untuk menghasilkan aturan menggunakan algoritma apriori, kita perlu membuat matriks transaksi. Kode berikut
menunjukkan bagaimana melakukan ini di R.
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}
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.
kepala (berlian)
# Kami akan memprediksi potongan berlian menggunakan fitur yang tersedia di dataset berlian.
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)
# 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
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
Xt=μ+εt+∑saya=1qθsayaεt−saya
dimana1, ...,qadalah parameter model, adalah harapan dari Xt, dant,t 1, ... adalah, istilah
kesalahan white noise.
Xt=c+εt+∑saya=1PϕsayaXt1+∑saya=1qθsayaεt−saya
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.
# 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.
# 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
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]
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]
# Membuat prediksi
prediksi = prediksi(fit, newx = X_test) prediksi =
as.vector(prediksi[,1]) head(prediksi)
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.
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)))]
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
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.
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
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.
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')
# [1] 0 1 0 0 1 0