Pembelajaran mesin pada R: teknik ahli untuk analisis prediktif

gambarHalo, habrozhiteli! Bahasa R menawarkan serangkaian metode pembelajaran mesin yang kuat yang memungkinkan Anda untuk dengan cepat melakukan analisis data non-sepele. Buku ini adalah panduan yang akan membantu menerapkan metode pembelajaran mesin untuk memecahkan masalah sehari-hari. Brett Lanz akan mengajarkan Anda semua yang Anda butuhkan untuk analisis data, peramalan, dan visualisasi data. Di sini Anda akan menemukan informasi tentang perpustakaan baru dan lebih baik, tips tentang aspek etis pembelajaran mesin dan masalah bias, serta pelatihan mendalam.

Dalam buku ini - Dasar-dasar pembelajaran mesin dan fitur pelatihan komputer tentang contoh-contoh. - Persiapan data untuk digunakan dalam pembelajaran mesin dengan menggunakan bahasa R. - Klasifikasi pentingnya hasil. - Prediksi peristiwa menggunakan pohon keputusan, aturan, dan vektor referensi. - Prediksi data numerik dan penilaian data keuangan menggunakan metode regresi. - Pemodelan proses yang kompleks menggunakan jaringan saraf adalah dasar dari pembelajaran yang mendalam. - Evaluasi model dan meningkatkan kinerja mereka. - Teknologi terbaru untuk memproses data besar, khususnya R 3.6, Spark, H2O dan TensorFlow.

Untuk siapa buku itu?


Buku ini ditujukan bagi mereka yang berharap untuk menggunakan data di area tertentu. Anda mungkin sudah sedikit terbiasa dengan pembelajaran mesin, tetapi Anda belum pernah bekerja dengan bahasa R; atau, sebaliknya, Anda tahu sedikit tentang R, tetapi hampir tidak tahu tentang pembelajaran mesin. Bagaimanapun, buku ini akan membantu Anda memulai dengan cepat. Akan bermanfaat untuk menyegarkan sedikit konsep dasar matematika dan pemrograman, tetapi tidak ada pengalaman sebelumnya yang diperlukan. Yang Anda butuhkan adalah keinginan untuk belajar.

Apa yang akan Anda baca di publikasi
1 « » , , , , .

2 « » R. , , .

3 « : » , : .

4 « : » , . , .

5 « : » , , . , .

6 « : » , . , , .

7 « “ ”: » , . , , .

8 « : » , , . - , , , .

9 « : k-» . -.

10 « » , .

11 « » , , . , .

12 « » : R. , , R.


Contoh: memodelkan kekuatan beton menggunakan jaringan saraf


Di bidang teknik sipil, sangat penting untuk memiliki perkiraan akurat tentang efektivitas bahan bangunan. Penilaian ini diperlukan untuk mengembangkan aturan keselamatan yang mengatur penggunaan material dalam konstruksi bangunan, jembatan dan jalan.

Yang menarik adalah penilaian kekuatan konkret. Beton digunakan di hampir semua konstruksi, karakteristik kinerja beton sangat berbeda, karena terdiri dari sejumlah besar bahan yang berinteraksi dalam kompleks. Akibatnya, sulit untuk mengatakan dengan tepat seperti apa kekuatan produk akhir itu. Model yang memungkinkan penentuan kekuatan beton, dengan mempertimbangkan komposisi bahan awal, dapat memberikan tingkat keamanan yang lebih tinggi untuk lokasi konstruksi.

Langkah 1. Pengumpulan data


Untuk analisis ini, kita akan menggunakan data kuat tekan konkret yang disediakan oleh I-Cheng Yeh ke Repositori Pembelajaran Mesin UCI (http://archive.ics.uci.edu/ml). Karena Ai-Cheng Ye berhasil menggunakan jaringan saraf untuk memodelkan data ini, kami akan mencoba mereproduksi karyanya dengan menerapkan model sederhana jaringan saraf di R.

Dilihat oleh situs, dataset ini berisi 1030 catatan tentang berbagai merek beton dengan delapan karakteristik yang menggambarkan komponen yang digunakan dalam komposisi campuran beton. Dipercayai bahwa karakteristik ini mempengaruhi kuat tekan akhir. Ini termasuk: jumlah (dalam kilogram per meter kubik) semen, air, berbagai aditif, agregat besar dan kecil seperti batu pecah dan pasir yang digunakan dalam produk jadi, serta pengaturan waktu (dalam hari).

Untuk menjalankan contoh ini, unduh file concrete.csv dan simpan di direktori kerja R.

Langkah 2. Penelitian dan persiapan data


Seperti biasa, kami memulai analisis dengan memuat data ke objek-R menggunakan fungsi read.csv () dan memastikan bahwa hasilnya sesuai dengan struktur yang diharapkan:

> concrete <- read.csv("concrete.csv")
> str(concrete)
'data.frame':        1030 obs. of 9 variables:
$ cement       : num 141 169 250 266 155 ...
$ slag            : num 212 42.2 0 114 183.4 ...
$ ash             : num 0 124.3 95.7 0 0 ...
$ water          : num 204 158 187 228 193 ...
$ superplastic : num 0 10.8 5.5 0 9.1 0 0 6.4 0 9 ...
$ coarseagg    : num 972 1081 957 932 1047 ...
$ fineagg        : num 748 796 861 670 697 ...
$ age             : int 28 14 28 28 28 90 7 56 28 28 ...
$ strength      : num 29.9 23.5 29.2 45.9 18.3 ...

Sembilan variabel dalam bingkai data sesuai dengan delapan karakteristik dan satu hasil yang diharapkan, tetapi menjadi jelas bahwa ada masalah. Jaringan saraf bekerja paling baik ketika data input diskalakan ke rentang sempit yang berpusat di sekitar 0, dan di sini kita melihat nilai dalam kisaran dari 0 hingga lebih dari 1000.

Biasanya, solusi untuk masalah ini adalah skala data menggunakan fungsi normalisasi atau standardisasi. Jika distribusi data sesuai dengan kurva berbentuk lonceng (distribusi normal, lihat bab 2), maka mungkin masuk akal untuk menggunakan standardisasi menggunakan fungsi skala built-in (). Jika distribusi data mendekati seragam atau sangat berbeda dari normal, maka normalisasi ke kisaran dari 0 hingga 1 mungkin lebih cocok. Dalam hal ini, kami akan menggunakan opsi yang terakhir.

Dalam bab 3, kami membuat fungsi normalisasi () kami sendiri:

> normalize <- function(x) {
       return((x - min(x)) / (max(x) — min(x)))
}

Setelah kode ini dieksekusi, Anda dapat menerapkan fungsi normalize () ke semua kolom frame data yang dipilih menggunakan fungsi lapply ():

> concrete_norm <- as.data.frame(lapply(concrete, normalize))

Untuk memverifikasi bahwa normalisasi telah berfungsi, Anda dapat memeriksa apakah nilai minimum dan maksimum atribut strength adalah 0 dan 1, masing-masing:

> summary(concrete_norm$strength)
       Min.     1st Qu.         Median     Mean      3rd Qu.      Max.
   0.0000     0.2664         0.4001  0.4172      0.5457   1.0000

Sebagai perbandingan: nilai minimum awal dan maksimum atribut ini masing-masing adalah 2,33 dan 82,60:

> summary(concrete$strength)
     Min.       1st Qu.     Median       Mean      3rd Qu.       Max.
    2.33         23.71       34.44      35.82        46.14      82.60

Setiap konversi yang diterapkan pada data sebelum melatih model selanjutnya harus diterapkan dalam urutan terbalik untuk mengubah atribut kembali ke unit aslinya. Untuk memfasilitasi penskalaan, disarankan untuk menyimpan data sumber atau setidaknya ringkasan statistik dari data sumber.

Mengikuti skenario yang dijelaskan oleh Ye dalam artikel asli, kami akan membagi data menjadi satu set pelatihan, yang mencakup 75% dari semua contoh, dan satu set tes, yang terdiri dari 25%. File CSV yang digunakan diurutkan dalam urutan acak, jadi kami hanya dapat membaginya menjadi dua bagian: Kami akan menggunakan dataset pelatihan untuk membangun jaringan saraf dan dataset uji untuk menilai seberapa baik model tersebut menggeneralisasi untuk hasil di masa depan. Karena jaringan saraf mudah dibawa ke keadaan pelatihan ulang, langkah ini sangat penting.

> concrete_train <- concrete_norm[1:773, ]
> concrete_test <- concrete_norm[774:1030, ]




Langkah 3. Pelatihan model tentang data


Untuk memodelkan hubungan antara bahan-bahan yang digunakan dalam produksi beton dan kekuatan produk jadi, kami akan membangun jaringan saraf distribusi langsung multilayer. Paket neuralnet, yang dikembangkan oleh Stefan Fritsch dan Frauke Guenther, memberikan implementasi standar dan mudah digunakan jaringan tersebut. Paket ini juga mencakup fungsi untuk membangun topologi jaringan. Menerapkan neuralnet adalah cara yang baik untuk mendapatkan informasi tambahan tentang jaringan saraf, meskipun ini tidak berarti bahwa itu tidak dapat digunakan untuk melakukan pekerjaan nyata - karena Anda akan segera melihat, itu adalah alat yang agak kuat.

R , , . nnet R, , , . , . — RSNNS, , , .

Karena paket neuralnet tidak termasuk dalam basis R, Anda perlu menginstalnya dengan mengetik install.packages ("neuralnet") dan mengunduhnya menggunakan perintah library (neuralnet). Fungsi neuralnet () dalam paket dapat digunakan untuk melatih jaringan saraf dalam prediksi numerik menggunakan sintaks berikut.

Sintaks jaringan saraf


Menggunakan fungsi neuralnet () dari paket neuralnet

Membangun model:

m <- neuralnet(target ~ predictors, data = mydata,
                       hidden = 1, act.fct = "logistic")

• target - model yang akan dibangun sebagai hasil pelatihan tentang kerangka data mydata;

• prediktor - rumus-R yang menentukan karakteristik dari bingkai data mydata yang akan digunakan dalam peramalan;

• data - kerangka data yang menjadi target dan prediktor;

• tersembunyi - jumlah neuron dalam lapisan tersembunyi (standarnya adalah 1). Catatan: untuk menggambarkan beberapa lapisan tersembunyi, vektor bilangan bulat digunakan, misalnya, c (2, 2);

• act.fct - fungsi aktivasi: "logistik" atau "tanh". Catatan: fungsi terdiferensiasi lainnya juga dapat digunakan.

Fungsi mengembalikan objek jaringan saraf yang dapat digunakan untuk peramalan.

Prediksi:

p <- menghitung (m, tes)

• m - model yang dilatih menggunakan fungsi neuralnet ();

• tes - kerangka data yang berisi data uji dengan karakteristik yang sama dengan data pelatihan yang digunakan untuk membangun pengklasifikasi.

Fungsi mengembalikan daftar yang terdiri dari dua komponen: $ neuron, di mana neuron disimpan untuk setiap lapisan jaringan, dan $ net.result, di mana nilai-nilai yang diprediksi menggunakan model ini disimpan.

Contoh:



concrete_model <- neuralnet(strength ~ cement + slag + ash,
      data = concrete, hidden = c(5, 5), act.fct = "tanh")
model_results <- compute(concrete_model, concrete_data)
strength_predictions <- model_results$net.result

Mari kita mulai dengan melatih jaringan distribusi langsung multi-level paling sederhana dengan parameter default, yang hanya memiliki satu simpul tersembunyi:

> concrete_model <- neuralnet(strength ~ cement + slag
         + ash + water + superplastic + coarseagg + fineagg + age,
         data = concrete_train)

Kemudian, seperti yang ditunjukkan pada gambar. 7.11, Anda dapat memvisualisasikan topologi jaringan menggunakan fungsi plot () dan meneruskannya objek model yang dihasilkan:

> plot(concrete_model)

gambar

Dalam model sederhana ini, ada satu simpul input untuk masing-masing dari delapan fitur, lalu ada satu simpul tersembunyi dan satu simpul keluaran, yang memberikan perkiraan kekuatan beton. Diagram juga menunjukkan bobot untuk setiap koneksi dan nilai offset yang ditunjukkan untuk node yang ditandai dengan angka 1. Nilai offset adalah konstanta numerik yang memungkinkan Anda untuk menggeser nilai dalam node yang ditentukan ke atas atau ke bawah, kira-kira seperti pergeseran dalam persamaan linear.

Sebuah jaringan saraf dengan satu simpul tersembunyi dapat dianggap sebagai "sepupu" dari model regresi linier yang dibahas dalam Bab 6. Bobot antara simpul input dan simpul tersembunyi mirip dengan koefisien beta, dan bobot offset seperti pergeseran.

Di bagian bawah gambar, jumlah langkah pelatihan dan besarnya kesalahan ditampilkan - total kesalahan kuadrat rata-rata (Jumlah Kesalahan Kuadrat, SSE), yang, seperti yang diharapkan, adalah jumlah perbedaan kuadrat antara nilai yang diprediksi dan nilai aktual. Semakin kecil SSE, semakin akurat model tersebut cocok dengan data pelatihan, yang menunjukkan keefektifan data ini, tetapi tidak banyak bicara tentang bagaimana model akan bekerja dengan data yang tidak diketahui.

Langkah 4. Menilai efektivitas model


Diagram topologi jaringan memberikan kesempatan untuk melihat ke dalam "kotak hitam" dari jaringan saraf, tetapi tidak memberikan banyak informasi tentang seberapa baik model cocok dengan data masa depan. Untuk menghasilkan perkiraan pada set data uji, Anda dapat menggunakan fungsi compute ():

> model_results <- compute(concrete_model, concrete_test[1:8])

Fungsi compute () bekerja sedikit berbeda dari fungsi predict () yang telah kami gunakan sejauh ini. Ini mengembalikan daftar yang terdiri dari dua komponen: $ neuron, di mana neuron disimpan untuk setiap lapisan jaringan, dan $ net.result, di mana nilai yang diprediksi disimpan. Ini $ net. Hasil yang kita butuhkan:

> predicted_strength <- model_results$net.result

Karena kita memiliki tugas perkiraan numerik, dan bukan klasifikasi, kita tidak dapat menggunakan matriks inkonsistensi untuk memverifikasi keakuratan model. Kami mengukur korelasi antara prediksi dan nilai sebenarnya dari kekuatan beton. Jika nilai yang diprediksi dan aktual akan sangat berkorelasi, maka, mungkin, model akan berguna untuk menentukan kekuatan beton.

Biarkan saya mengingatkan Anda bahwa untuk mendapatkan korelasi antara dua vektor angka, fungsi cor () digunakan:

> cor(predicted_strength, concrete_test$strength)
                    [,1]
[1,] 0.8064655576

Jangan khawatir jika hasil Anda berbeda dengan kami. Karena jaringan saraf mulai bekerja dengan bobot acak, prediksi yang disajikan dalam buku mungkin berbeda untuk model yang berbeda. Jika Anda ingin mencocokkan hasilnya secara akurat, cobalah perintah set.seed (12345) sebelum Anda mulai membangun jaringan saraf.

Jika korelasinya mendekati 1, ini menunjukkan hubungan linear yang kuat antara kedua variabel. Oleh karena itu, korelasi sekitar 0,806 menunjukkan hubungan yang agak kuat. Ini berarti bahwa model bekerja cukup baik bahkan dengan satu simpul tersembunyi. Karena kami hanya menggunakan satu simpul tersembunyi, kemungkinan kami dapat meningkatkan efisiensi model, yang akan kami coba lakukan.

Langkah 5. Meningkatkan Efisiensi Model


Karena jaringan dengan topologi yang lebih kompleks dapat mempelajari konsep yang lebih kompleks, mari kita lihat apa yang terjadi jika Anda meningkatkan jumlah node tersembunyi menjadi lima. Kami akan menggunakan fungsi neuralnet (), seperti sebelumnya, tetapi menambahkan parameter hidden = 5:

> concrete_model2 <- neuralnet(strength ~ cement + slag +
                                               ash + water + superplastic +
                                               coarseagg + fineagg + age,
                                               data = concrete_train, hidden = 5)

Setelah membangun diagram jaringan lagi (Gbr. 7.12), kita akan melihat peningkatan tajam dalam jumlah koneksi. Bagaimana ini mempengaruhi efisiensi?

> plot(concrete_model2)

Harap dicatat bahwa kesalahan yang dihasilkan (diukur kembali sebagai SSE) menurun dari 5,08 pada model sebelumnya menjadi 1,63. Selain itu, jumlah tahapan pelatihan meningkat dari 4882 menjadi 86.849 - yang tidak mengejutkan, mengingat betapa rumitnya model ini. Semakin kompleks jaringan, semakin banyak iterasi yang diperlukan untuk menemukan bobot optimal.

Menerapkan langkah-langkah yang sama untuk membandingkan nilai yang diprediksi dengan yang benar, kami mendapatkan korelasi sekitar 0,92, yang jauh lebih baik dibandingkan dengan hasil sebelumnya dari 0,80 untuk jaringan dengan satu simpul tersembunyi:

> model_results2 <- compute(concrete_model2, concrete_test[1:8])
> predicted_strength2 <- model_results2$net.result
> cor(predicted_strength2, concrete_test$strength)
                  [,1]
[1,] 0.9244533426

gambar

Meskipun ada peningkatan signifikan, Anda dapat melangkah lebih jauh untuk meningkatkan efektivitas model. Secara khusus, dimungkinkan untuk memperkenalkan lapisan tersembunyi tambahan dan mengubah fungsi aktivasi jaringan. Dengan melakukan perubahan ini, kami meletakkan dasar untuk membangun jaringan saraf yang dalam dan sederhana.

Pilihan fungsi aktivasi sangat penting untuk pembelajaran yang mendalam. Fungsi terbaik untuk tugas belajar tertentu biasanya ditemukan secara eksperimental, dan kemudian banyak digunakan oleh komunitas peneliti pembelajaran mesin.

Baru-baru ini, fungsi aktivasi, yang disebut fungsi distilasi, atau penyearah, telah menjadi sangat populer karena aplikasi yang sukses dalam tugas-tugas kompleks, seperti pengenalan gambar. Node jaringan saraf di mana penyearah digunakan sebagai fungsi aktivasi disebut Rectified Linear Unit (ReLU). Seperti yang ditunjukkan pada gambar. 7.13, fungsi aktivasi tipe penyearah dijelaskan sedemikian rupa sehingga mengembalikan x jika x lebih besar dari atau sama dengan 0, dan 0 sebaliknya. Pentingnya fungsi ini adalah bahwa, di satu sisi, itu non-linear, dan di sisi lain, ia memiliki sifat matematika sederhana yang membuatnya murah secara komputasi dan sangat efisien untuk gradient descent. Sayangnya, untuk x = 0, turunan penyearah tidak ditentukan,oleh karena itu, penyearah tidak dapat digunakan bersamaan dengan fungsi neuralnet ().

Sebagai gantinya, Anda dapat menggunakan perkiraan yang dihaluskan dari ReLU yang disebut softplus atau SmoothReLU, fungsi aktivasi yang didefinisikan sebagai log (1 + ex). Seperti yang ditunjukkan pada gambar. 7.13, fungsi softplus mendekati nol untuk nilai x kurang dari 0 dan kira-kira sama dengan x untuk x lebih besar dari 0.

gambar

Untuk mendefinisikan fungsi softplus () di R, kami menggunakan kode berikut:

> softplus <- function(x) { log(1 + exp(x)) }

Fungsi aktivasi semacam itu dapat disediakan untuk input neuralnet () menggunakan parameter act.fct. Selain itu, kami menambahkan lapisan tersembunyi kedua yang terdiri dari lima node, menetapkan parameter tersembunyi nilai vektor integer c (5, 5). Hasilnya, kami mendapatkan jaringan dua lapis, yang masing-masing lapisannya memiliki lima simpul, dan semuanya menggunakan fungsi aktivasi softplus:

> set.seed(12345)
> concrete_model3 <- neuralnet(strength ~ cement + slag +
                                               ash + water + superplastic +
                                               coarseagg + fineagg + age,
                                               data = concrete_train,
                                               hidden = c(5, 5),
                                               act.fct = softplus)

Seperti sebelumnya, jaringan dapat divisualisasikan (Gbr. 7.14):

> plot(concrete_model3)

gambar

Korelasi antara kekuatan beton yang diprediksi dan yang sebenarnya dapat dihitung sebagai berikut:

> model_results3 <- compute(concrete_model3, concrete_test[1:8])
> predicted_strength3 <- model_results3$net.result
> cor(predicted_strength3, concrete_test$strength)
                  [,1]
[1,] 0.9348395359

Korelasi antara kekuatan yang diprediksi dan yang sebenarnya adalah 0,935, yang merupakan indikator terbaik yang diperoleh sejauh ini. Menariknya, dalam publikasi asli, Ye melaporkan korelasi 0,885. Ini berarti bahwa, dengan usaha yang relatif sedikit, kami bisa mendapatkan hasil yang sebanding dan bahkan melampaui hasil ahli di bidang ini. Benar, hasil Ye diterbitkan pada tahun 1998, yang memberi kami awal lebih dari 20 tahun penelitian tambahan di bidang jaringan saraf!

Detail penting lainnya harus diperhitungkan: karena kami menormalkan data sebelum model dilatih, prakiraan juga dalam interval normal dari 0 hingga 1. Misalnya, kode berikut menunjukkan kerangka data yang membandingkan garis-demi-garis nilai kekuatan beton dari set data awal dengan prakiraan yang sesuai:

> strengths <- data.frame(
      actual = concrete$strength[774:1030],
      pred = predicted_strength3
   )
> head(strengths, n = 3)
      actual        pred
774 30.14 0.2860639091
775 44.40 0.4777304648
776 24.50 0.2840964250


Dengan memeriksa korelasinya, kita melihat bahwa pilihan data yang dinormalisasi atau non-normal tidak mempengaruhi statistik kinerja yang dihitung - seperti sebelumnya, korelasinya adalah 0,935: Tetapi jika kita menghitung indikator kinerja yang berbeda, misalnya, perbedaan absolut antara nilai yang diprediksi dan nilai aktual, maka pilihan skala akan sangat penting. Dengan mengingat hal ini, Anda dapat membuat fungsi unormalize (), yang akan melakukan kebalikan dari normalisasi minimum, dan akan memungkinkan Anda untuk mengubah perkiraan normalisasi ke skala asli:

> cor(strengths$pred, strengths$actual)
[1] 0.9348395359






> unnormalize <- function(x) {
     return((x * (max(concrete$strength)) -
           min(concrete$strength)) + min(concrete$strength))
   }

Setelah menerapkan fungsi unormalize () yang kami tulis ke prakiraan, menjadi jelas bahwa skala prakiraan baru serupa dengan nilai awal dari kekuatan beton. Ini memungkinkan Anda menghitung nilai bermakna kesalahan absolut. Selain itu, korelasi antara nilai kekuatan abnormal dan awal tetap tidak berubah:

> strengths$pred_new <- unnormalize(strengths$pred)
> strengths$error <- strengths$pred_new — strengths$actual
> head(strengths, n = 3)
           actual                pred             pred_new                    error
774          30.14         0.2860639091               23.62887889      -6.511121108
775          44.40         0.4777304648               39.46053639      -4.939463608
776          24.50         0.2840964250               23.46636470      -1.033635298

> cor(strengths$pred_new, strengths$actual)
[1] 0.9348395359

Menerapkan jaringan saraf pada proyek Anda, Anda harus mengikuti urutan langkah yang sama untuk mengembalikan data ke skala aslinya.

Anda juga dapat menemukan bahwa jaringan saraf dengan cepat menjadi lebih kompleks karena mereka digunakan untuk tugas belajar yang semakin sulit. Misalnya, Anda mungkin mengalami masalah gradien kecil yang disebut "menghilang" dan masalah gradien "meledak" yang terkait erat, ketika algoritma propagasi belakang tidak menemukan solusi yang berguna, karena tidak menyatu dalam waktu yang wajar. Untuk mengatasi masalah ini, Anda dapat mencoba mengubah jumlah node tersembunyi, menerapkan berbagai fungsi aktivasi, seperti ReLU, menyesuaikan kecepatan belajar, dll. Pada halaman bantuan untuk fungsi neuralnet, Anda akan menemukan informasi tambahan tentang berbagai parameter yang dapat dikonfigurasi. Namun, ini mengarah ke masalah lain,ketika hambatan dalam membangun model yang sangat efisien adalah memeriksa sejumlah besar parameter. Ini adalah harga dari menggunakan jaringan saraf, dan bahkan jaringan pembelajaran yang lebih dalam: potensi besar mereka membutuhkan banyak waktu dan kekuatan pemrosesan.

, ML . , Amazon Web Services (AWS) Microsoft Azure, . 12.


Metode Support Vector Machine (SVM) dapat direpresentasikan sebagai permukaan yang membentuk batas antara titik data yang diplot dalam ruang multidimensi yang menggambarkan contoh dan nilai atributnya. Tujuan SVM adalah untuk membangun perbatasan datar - hyperplane yang membagi ruang sedemikian rupa sehingga kelompok-kelompok homogen terbentuk di kedua sisi. Dengan demikian, pelatihan SVM menggabungkan aspek-aspek baik pelatihan tetangga terdekat berdasarkan contoh yang dijelaskan dalam Bab 3 dan pemodelan regresi linier, dibahas dalam Bab 6. Ini adalah kombinasi yang sangat kuat yang memungkinkan SVM untuk memodelkan hubungan yang sangat kompleks.

Terlepas dari kenyataan bahwa matematika dasar yang mendasari SVM telah ada selama beberapa dekade, minat terhadap metode ini telah tumbuh secara signifikan setelah mereka mulai diterapkan pada ML. Popularitas metode ini meningkat setelah kisah sukses profil tinggi dalam memecahkan masalah pembelajaran yang kompleks, serta setelah pengembangan algoritma SVM, yang diberikan dan diimplementasikan di perpustakaan yang didukung dengan baik dalam banyak bahasa pemrograman, termasuk R. Setelah itu, metode SVM diterima oleh khalayak luas. Kalau tidak, mungkin tidak mungkin untuk menerapkan matematika kompleks yang diperlukan untuk mengimplementasikan SVM. Berita baiknya adalah meskipun matematika mungkin kompleks, konsep dasarnya dapat dipahami.

Metode SVM dapat diadaptasi untuk menggunakan hampir semua jenis tugas pelatihan, termasuk klasifikasi dan peramalan numerik. Banyak keberhasilan kunci dari algoritma ini berkaitan dengan pengenalan pola. Aplikasi paling terkenal untuk metode ini meliputi yang berikut:

  • klasifikasi data tentang ekspresi gen microarray dalam bioinformatika untuk deteksi kanker dan penyakit genetik lainnya;
  • kategorisasi teks, seperti menentukan bahasa yang digunakan dalam suatu dokumen, atau mengklasifikasikan dokumen berdasarkan topik;
  • Deteksi peristiwa langka tapi penting, seperti kegagalan mesin pembakaran internal, pelanggaran keamanan, atau gempa bumi.


Metode SVM paling mudah dipahami dengan menggunakan klasifikasi biner sebagai contoh - ini adalah cara mereka biasa digunakan. Oleh karena itu, di bagian yang tersisa, kami hanya akan fokus pada pengklasifikasi SVM. Prinsip-prinsip yang mirip dengan yang disajikan di sini juga digunakan ketika mengadaptasi metode SVM untuk peramalan numerik.

tentang Penulis


Brett Lantz (@DataSpelunking) telah menggunakan teknik pemrosesan data inovatif untuk mempelajari perilaku manusia selama lebih dari satu dekade. Menjadi seorang sosiolog melalui pelatihan, Brett pertama kali tertarik pada pembelajaran mesin sambil menjelajahi basis data besar profil remaja di jejaring sosial. Brett adalah seorang guru di DataCamp dan sering membuat presentasi di konferensi pembelajaran mesin dan seminar di seluruh dunia. Dia adalah penggemar terkenal di bidang aplikasi praktis ilmu data di bidang olahraga, kendaraan tak berawak, studi bahasa asing dan mode, serta di banyak industri lainnya. Brett berharap suatu hari menulis tentang semua ini di datapelunking.com, pertukaran pengetahuan tentang menemukan pola dalam data.

Tentang Editor Sains


Raghav Bali (Raghav Bali) - peneliti senior dari salah satu organisasi perawatan kesehatan terbesar di dunia. Dia terlibat dalam penelitian dan pengembangan solusi perusahaan berdasarkan pembelajaran mesin, pembelajaran mendalam dan pemrosesan bahasa alami untuk digunakan dalam perawatan kesehatan dan asuransi. Dalam posisi sebelumnya di Intel, ia berpartisipasi dalam inisiatif proaktif di bidang teknologi informasi, berdasarkan data besar, menggunakan pemrosesan bahasa alami, pembelajaran mendalam dan metode statistik tradisional. Di American Express, ia bekerja di perikatan digital dan retensi pelanggan.

Raghav adalah penulis beberapa buku yang diterbitkan oleh penerbit terkemuka. Buku terbarunya adalah tentang studi transfer terbaru.

Raghav lulus dari Institut Internasional Teknologi Informasi di Bangalore, memiliki gelar master (gelar kehormatan). Di saat-saat langka ketika dia tidak sibuk menyelesaikan masalah ilmiah, Raghav suka membaca dan memotret semuanya secara berurutan.

»Informasi lebih lanjut tentang buku ini dapat ditemukan di situs web penerbit
» Isi
» Kutipan

Untuk Khabrozhiteley Diskon 25% pada kupon - Pembelajaran Mesin

Setelah pembayaran versi kertas buku, sebuah buku elektronik dikirim melalui email.

All Articles