Akhdani Tech Talk 2021 Series #7 – Penerapan Algoritma Naive Bayes pada Klasifikasi Data Penerimaan Pegawai

PENERAPAN ALGORITMA NAIVE BAYES PADA KLASIFIKASI DATA PENERIMAAN PEGAWAI

oleh: Maulana, Hardi, Akbar

Apa itu Klasifikasi Naive Bayes ?

Naïve Bayes Classifier merupakan Metode pengklasifikasian dg menggunakan metode probabilitas dan statistik yg dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi peluang di masa depan berdasarkan pengalaman di masa sebelumnya sehingga dikenal sebagai Teorema Bayes. Klasifikasi Naive Bayes diasumsikan bahwa ada atau tidak ciri tertentu dari sebuah kelas tidak adahubungannya dengan ciri dari kelas lainnya.

Alasan Memilih Algoritma Klasifikasi Naive Bayes ?

  • Naive Bayes Classifier bekerja sangat baik dibanding dengan model classifier lainnya. Hal ini dibuktikan oleh Xhemali , Hinde Stone dalam jurnalnya “Naïve Bayes vs. Decision Trees vs. Neural Networks in the Classification of Training Web Pages” mengatakan bahwa “Naïve Bayes Classifier memiliki tingkat akurasi yg lebih baik dibandingmodel classifier lainnya”.
  • Penggolong statistik: Melakukan prediksi probabilitas, misalnya: Memprediksi probabilitas keanggotaan kelas
  • Standar: Sekalipun metode Bayesian tidak dapat dilakukan secara komputasional, mereka dpaat memberikan standar pengambilna keputusan yang optimal yang ddapat diukur dengan metode lain.

Kelebihan dan Kekurangan Algoritma Naive Bayes

1. Kelebihan

  • Bisa dipakai untuk data kuantitatif maupun kualitatif
  • Tidak memerlukan jumlah data yang banyak
  • Tidak perlu melakukan data training yang banyak
  • Jika ada nilai yang hilang, maka bisa diabaikan dalam perhitungan.
  • Perhitungannya cepat dan efisien
  • Mudah dipahami
  • Mudah dibuat
  • Pengklasifikasian dokumen bisa dipersonalisasi, disesuaikan dengan kebutuhan setiap orang
  • Jika digunakan dalaam bahasa pemrograman, code-nya sederhana
  • Bisa digunakan untuk klasifikasi masalah biner ataupunmulticlass

2. Kekurangan

  • Apabila probabilitas kondisionalnya bernilai nol, maka probabilitas prediksi juga akan bernilai nol
  • Asumsi bahwa masing-masing variabel independen membuat berkurangnya akurasi, karena biasanya ada korelasi antara variabel yang satu dengan variabel yang lain
  • Keakuratannya tidak bisa diukur menggunakan satu probabilitas saja. Butuh bukti-bukti lain untuk membuktikannya.
  • Untuk membuat keputusan, diperlukan pengetahuan awal atau pengetahuan mengenai masa sebelumnya. Keberhasilannya sangat bergantung pada pengetahuan awal tersebut Banyak celah yang bisa mengurangi efektivitasnya
  • Dirancang untuk mendeteksi kata-kata saja, tidak bisa berupa gambar

skema-naive-bayesGambar 1.1. Skema Naive Bayes

Perancangan Sistem

flowchart-sistemGambar 2.1. Flowchart Sistem

diagram-classGambar 2.2. Diagram Kelas

Implementasi Klasifikasi Naive Bayes dan Rancangan Sistem 

Klasifikasi Naive bayes dibuat menggunakan bahasa pemrograman python yang terintegrasi dengan halaman web yang dibuat berdasarkan rancangan sistem diatas.

data-trainingGambar 3.1. Tabel Data Training

Tabel data training seperti gambar 3.1, data tersebut yang akan diklasifikasi menggunakan algoritma Naive Bayes dan digunakan sebagai pengambil keputusan untuk menentukan lulus atau tidaknya data baru calon pegawai.

halamanGambar 3.2. Halaman Form Input Sistem

dalam halaman web yang dibuat seperti Gambar 3.1. user akan menginput data calon pegawai seperti nama, nilai administrasi, nilai tes 1, nilai tes 2 dan nilai interviewnya. setelah user menginput data calon pegawai, sistem akan menentukan lulus atau tidaknya data calon pegawai berdasarkan hasil klasifikasi data training seperti pada gambar 3.3 dan gambar 3.4.lulus

Gambar 3.3. Tampilan Data Calon Pegawai Lulus

tidak-lulus

Gambar 3.4. Tampilan Data Calon Pegawai Tidak Lulus

Kesimpulan

1. Dengan adanya sistem ini, akan mempermudah pihak panitia penerimaan pegawai dalam memperkirakan calon pegawai yang akan bergabung sehingga panitia bisa mengambil keputusan untuk menerima atau tidak calon pegawai tersebut.

2. Pada algoritma Naive Bayes, semua attribut akan memberikan kontribusinya dalam pengambilan keputusan, dengan bobot atribut yang sama penting dan setiap atribut saling bebas satu sama lain.

Akhdani Tech Talk 2021 Series #6 – Load Test WebRTC

Load Test WebRTC

Oleh: Muhamad Indra Kusmana, Rahmat Hidayat, Rahmat Setiawan

Apa itu WebRTC?

WebRTC (Web Real-TIme Communication) merupakan teknologi yang memungkinkan kita melakukan komunikasi secara real-time menggunakan video dan audio secara langsung pada halaman web. Contoh aplikasi yang menggunakan teknologi ini misalnya Google Meet, Zoom, Microsoft Teams, dan sebagainya.

Teknologi WebRTC

WebRTC menggunakan 3 komponen utama:

  1. Media Stream
    Untuk penggunaan media device dan merepresentasikan data audio dan video kedalam bentuk stream.
  2. Peer Connection
    Memungkinkan 2 atau lebih pengguna terkoneksi secara bersamaan.
  3. Data Channel
    Memungkinkan pengguna mengirim data dalam bentuk text chat, file sharing, dsb secara bersamaan.

Apa itu Load Test?

Load test adalah proses pengujian non-functional suatu aplikasi dimana performa diuji dengan load tertentu. Proses ini dilakukan untuk mengetahui bagaimana suatu aplikasi dapat berjalan pada saat penggunaan dalam jumlah banyak dan waktu bersamaan.

Permasalahan Load Test pada WebRTC

Seperti aplikasi berbasis web yang diakses oleh banyak pengguna pada umumnya, tentunya load test perlu dilakukan pada aplikasi WebRTC untuk mengetahui performa dari aplikasi tersebut saat diakses oleh banyak pengguna pada waktu bersamaan. Sayangnya saat ini tidak banyak tools open source untuk yang tersedia untuk melakukan load test pada WebRTC. Selain itu beberapa tools hanya tersedia untuk aplikasi yang menggunakan platform yang sama dengan tools tersebut.

Tujuan

Sample aplikasi yang kami gunakan pada pengujian kali ini adalah sebuah aplikasi sederhana, dimana terdapat 2 halaman podium dan student. Halaman podium akan melakukan broadcast ke halaman student yang berada pada room yang sama berupa screen sharing dan audio. 

 1-1

Gambar 1.1: tampilan halaman podium

 1-2

Gambar 1.2: tampilan halaman student

Pada pengujian ini, akan dilakukan load test pada aplikasi WebRTC menggunakan Apache Jmeter dan Cypress. Metode pengujian dilakukan dengan cara melakukan sejumlah koneksi pada aplikasi. Hal ini dapat berguna untuk mengetahui berapa jumlah maksimal pengguna yang dapat terhubung pada aplikasi yang dibangun pada waktu bersamaan.

Apache JMeter

JMeter merupakan aplikasi berbasis Java yang didesain untuk melakukan load test mengukur performa suatu aplikasi. Pada pengujian ini, JMeter akan mensimulasikan sejumlah pengguna dengan membuat banyak koneksi menggunakan chrome headless mode.

 2-1

Gambar 2.1: Script untuk melakukan koneksi ke aplikasi WebRTC menggunakan chrome headless mode

2-2

Gambar 2.2: Hasil build dalam bentuk jar

2-3

Gambar 2.3: Konfigurasi pada JMeter dengan sampler menggunakan Java Request

2-4

Gambar 2.4: Hasil eksekusi JMeter(1)

2-5

Gambar 2.5: Hasil eksekusi JMeter (2)

2-6

Gambar 2.6: Console log aplikasi WebRTC menampilkan jumlah subscriber yang terhubung

 

Cypress

Cypress merupakan end-to-end test framework berbasis Javascript. Pada pengujian ini, penggunaan Cypress dilakukan untuk menyimulasikan sejumlah pengguna dengan membuka aplikasi WebRTC pada banyak halaman sekaligus.

3-1

Gambar 3.1: Script untuk melakukan koneksi ke aplikasi WebRTC

3-2

Gambar 3.2: Script untuk melakukan replikasi koneksi

3-3

Gambar 3.3: Hasil eksekusi Cypress

Kesimpulan

Beberapa poin penting pada penggunaan Apache JMeter:

  1. Tidak bisa menggunakan HTTP Sampler, sehingga harus menggunakan Sampler Java Request.
  2. Sulit mencari referensi, karena masih sangat jarang yang melakukan. Referensi terbaik yang didapat: https://www.cnblogs.com/chenkx6/p/13639629.html
  3. Hasil eksekusi pada JMeter menampilkan error meskipun koneksi berhasil dilakukan, sehingga untuk melihat jumlah koneksi yang terhubung dapat dilihat melalui log aplikasi

Poin penting pada penggunaan Cypress:

  1. Selalu terjadi error di sekitar iterasi ke-10. Terdapat tiket terkait issue tersebut pada forum https://github.com/cypress-io/cypress/issues/1305 (status: open saat pengujian dilakukan, 28 Januari 2021)