R

Iterasi Numerik Newton Raphson

Halo halo sobat Exsight, dalam artikel kali ini, kita akan membahas suatu metode iterasi bernama Newton Raphson. Sobat Exsight pernah gak sih merasa bingung saat mencoba menyelesaikan suatu soal matematika yang rumit? Jika ya, sobat Exsight tidak sendirian! Kadang-kadang, solusi dari persoalan matematika khususnya berkaitan dengan persamaan non linier tidak bisa ditemukan dengan mudah menggunakan rumus-rumus yang telah dipelajari di kelas, maka dari itu diperlukan suatu metode numerik.

Metode numerik merupakan suatu metode alternatif yang digunakan untuk menyelesaikan persoalan-persoalan matematis selain metode analitik. Pemakaian metode numerik umumnya dilengkapi dengan suatu algoritma agar penyelesaian masalah dapat dilakukan secara sistematis dan logis sehingga diperoleh jawaban numerik yang efisien dan efektif dari berbagai macam permasalahan yang diselesaikan.

Salah satu metode numerik yang paling umum digunakan yaitu Iterasi Newton Raphson. Tanpa berlama-lama lagi, yuk simak artikel ini dengan seksama yaa!

Definisi

Metode Iterasi Newton-Raphson adalah suatu metode numerik yang digunakan untuk mendapatkan nilai solusi dari suatu persamaan nonlinear. Metode ini termasuk dalam metode pendekatan iteratif yang menggunakan nilai titik awal atau sebagai titik permulaan, kemudian dengan teknik ini, secara berulang dilakukan perhitungan untuk memperbaiki perkiraan solusi tersebut.

Iterasi Newton-Rhapson pertama kali dikembangkan oleh Isaac Newton dan Joseph Raphson. Metode ini memanfaatkan konsep turunan fungsi untuk mendapatkan perkiraan solusi hasil yang lebih baik dengan melakukan iterasi. Metode iterasi Newton Raphson digunakan dalam berbagai bidang ilmu, termasuk teknik, ilmu komputer, matematika, fisika, dan ekonomi, untuk menyelesaikan berbagai masalah nonlinear.

Konsep Dasar

Metode Iterasi Newton Raphson adalah salah satu algoritma yang paling umum digunakan untuk menyelesaikan persamaan nonlinear. Algoritma ini bekerja dengan cara memperbarui tebakan awal secara berulang hingga mendekati solusi yang diinginkan. Berikut adalah komponen-komponen utama dari algoritma ini:

A. Proses Konvergensi
Proses konvergensi terjadi saat iterasi dilakukan berulang kali dan solusi mendekati solusi yang sebenarnya. Dalam metode Newton-Raphson, proses konvergensi terjadi ketika nilai fungsi mendekati nol, atau ketika perubahan antara perkiraan solusi baru dan solusi sebelumnya menjadi sangat kecil.

B. Kriteria Penghentian Iterasi
Sebagai upaya untuk menghentikan proses iterasi, diperlukan kriteria penghentian yang memadai. Beberapa kriteria umum yang digunakan untuk menghentikan iterasi Newton Raphson antara lain:
– Perubahan relatif atau absolut antara dua perkiraan solusi berturut-turut kurang dari suatu ambang batas yang ditentukan.
– Jumlah iterasi mencapai batas yang ditentukan.
– Nilai fungsi mendekati nol secara memadai.

Galat dan Toleransi dalam Iterasi Numerik

Galat

Ketika metode numerik digunakan untuk menyelesaikan suatu masalah, kita awali dengan menetapkan sembarang nilai awal (initial value). Dengan nilai awal tersebut selanjutnya dilakukan langkah-langkah komputasi numerik sehingga diperoleh suatu penyelesaian yang diinginkan, baik berupa bilangan ataupun model hampiran. Semakin kecil kesalahan/galat yang ditimbulkan oleh penggunaan suatu rumus/formula maka semakin baik hampiran yang dihasilkan. Galat berdasarkan tipe dibedakan atas 2 jenis diantaranya:

newton raphson

A. Galat Inheren (Inherent Error)
Galat inheren merupakan galat bawaan akibat penggunaan suatu metode numerik. Akibat perhitungan numerik yang sebagian besar adalah tidak eksak, dapat menyebabkan data yang diperoleh adalah data aproksimasi. Selain itu, keterbatasan dari alat komputasi seperti tabel matematika, kalkulator, dan komputer digital juga membuat perhitungan numerik tidak eksak. Karena keterbatasan tersebut, bilangan-bilangan yang diperoleh adalah hasil pembulatan. Di dalam perhitungan, galat inheren dapat diperkecil melalui penggunaan data yang besar, pemeriksaan galat yang jelas dalam data, dan penggunaan alat komputasi dengan ketelitan yang tinggi.

B. Galat Pemotongan (Truncated Errror)
Galat ini disebabkan oleh adanya penghilangan sebarisan suku dari suatu deret/ekspansi untuk tujuan peringkasan pekerjaan perhitungan. Galat pemotongan adalah galat yang tak dapat dihindarkan dalam proses komputasi secara numerik.

Toleransi

Toleransi mengacu pada batasan atau tingkat kesalahan yang diterima atau diizinkan dalam proses iterasi. Toleransi (Tol) dapat pula didefinisikan sebagai batas penerimaan suatu galat. Toleransi ditentukan sebelumnya oleh pengguna atau pemodel dan biasanya diukur dalam bentuk nilai numerik, misalnya 0.001 atau 0.0001. Ini menunjukkan bahwa jika galat antara solusi iteratif dan solusi yang diinginkan kurang dari nilai toleransi yang ditentukan, maka iterasi dianggap sudah mencapai solusi yang memadai dan dapat dihentikan.

Tahapan- Tahapan Iterasi Newton Raphson

Secara sistematis, tahapan- tahapan dari iterasi Newton Raphson adalah sebagai berikut.

1. Inisialisasi
Langkah pertama adalah memilih nilai awal x0 sebagai tebakan awal. Tebakan ini harus dekat dengan solusi yang sebenarnya untuk memulai proses iterasi.

2. Perhitungan Fungsi
Hitung nilai fungsi f(xn) pada tebakan awal xn . Fungsi ini merupakan persamaan nonlinear yang ingin diselesaikan.

3. Perhitungan Turunan
Hitung nilai turunan pertama f”(xn) dari fungsi pada tebakan awal xn ​. Turunan pertama ini diperlukan dalam rumus iterasi Newton-Raphson.

4. Gunakan Rumus Iterasi Newton-Raphson
Gunakan rumus iterasi Newton-Raphson untuk menghitung perkiraan solusi berikutnya xn+1 berdasarkan nilai xn ​, f(xn) , dan f”(xn). Rumus iterasi Newton- Raphson adalah sebagai berikut.

x_{n+1}=x_{n}-\frac{f\left ( x_{n} \right )}{f'\left ( x_{n} \right )}

5. Perhitungan Galat
Hitung galat antara solusi iteratif baru xn+1​ dengan solusi sebelumnya xn . Galat ini bisa dihitung sebagai selisih absolut atau relatif antara kedua solusi.

6. Pengecekan Konvergensi
Periksa apakah solusi iteratif sudah konvergen atau mendekati solusi yang diinginkan. Hal ini dapat dilakukan dengan memeriksa apakah nilai fungsi f(xn+1) mendekati nol atau apakah galat sudah lebih kecil dari nilai toleransi yang ditetapkan.

7. Iterasi Berulang
Jika solusi belum konvergen atau galat masih lebih besar dari toleransi, maka iterasi dilanjutkan dengan menggunakan nilai xn+1​ sebagai tebakan baru dan kembali ke tahap 3 untuk menghitung solusi iteratif berikutnya.

8. Penghentian Iterasi
Iterasi dihentikan ketika solusi sudah konvergen atau galat sudah lebih kecil dari toleransi yang ditetapkan. Pada tahap ini, solusi iteratif dianggap sudah memadai dan dapat digunakan sebagai perkiraan solusi dari persamaan nonlinear yang sedang diselesaikan.

Kelebihan dan Keterbatasan Newton Raphson

Metide iterasi Newton Raphson memiliki beberapa kelebihan dan kelemahan diantaranya:

Kelebihan

A. Laju Konvergensi Tinggi
1. Metode ini cenderung konvergen dengan cepat menuju solusi.
2. Membutuhkan jumlah iterasi yang relatif sedikit untuk mencapai akurasi yang tinggi.

B. Efisiensi Penggunaan Turunan
1. Memanfaatkan informasi turunan pertama untuk percepatan konvergensi.
2. Mengurangi beban komputasi dibandingkan dengan metode iteratif tanpa turunan.

C. Aplikasi Luas
1. Cocok untuk penyelesaian sistem persamaan nonlinear.
2. Digunakan secara luas dalam bidang optimisasi dan analisis numerik.

Kelemahan

A. Sensitif terhadap Pemilihan Titik Awal
1. Kinerja metode sangat tergantung pada pemilihan titik awal yang baik.
2. Kesalahan dalam memilih titik awal dapat mengakibatkan ketidakkonvergenan.

B. Kesulitan pada Akar Ganda
1. Tidak selalu berhasil menangani akar ganda dengan baik.
2. Mungkin mengalami konvergensi ke salah satu akar atau bahkan tidak konvergen sama sekali.

C. Memerlukan Perhitungan Turunan
1. Bergantung pada perhitungan turunan pertama yang akurat.
2. Menyulitkan jika turunan tidak mudah dihitung atau tidak tersedia dalam bentuk tertutup.

D. Keterbatasan pada Fungsi Nonmulur
1. Tidak selalu konvergen pada fungsi yang memiliki singularitas atau tidak bersifat mulur.
2. Memerlukan pemahaman mendalam terhadap sifat-sifat fungsi.

Tutorial Iterasi Newton Raphson dengan R Studio

Studi Kasus

Misalkan kita memiliki fungsi f(x)=x2-3 dan kita ingin mencari akar persamaan f(x)=0. Kita dapat menggunakan metode iteratif untuk mendekati akar persamaan ini. Salah satu metode yang sederhana adalah metode Newton-Raphson.

Newton Raphson

Tahapan R Studio Iterasi Newton Raphson

* Load Library

Tahapan awal, sebelum melakukan running syntax di software R terlebih dahulu melakukan load library R.  Adapun syntax R yang digunakan adalah sebagai berikut.

#Library
library(ggplot2)

* Iterasi Newton Raphson

Iterasi Newton-Rhapson dilakukan menggunakan syntax R yaitu sebagai berikut (Sebagai catatan, dalam proses penulisan syntax juga melibatkan perhitungan nilai turunan fungsi, dimana hasil turunan dari f(x)=x2-3  yaitu sebesar f(x)=2x. 

# Fungsi yang akan diiterasi
f <- function(x) {
  return(x^2 - 3)
}

# Turunan pertama dari fungsi
f_prime <- function(x) {
  return(2*x)
}

# Metode iterasi Newton-Raphson
newton_raphson <- function(x0, tol, max_iter) {
  x <- x0
  for (i in 1:max_iter) {
    x_new <- x - f(x) / f_prime(x)
    if (abs(x_new - x) < tol) {
      break
    }
    x <- x_new
  }
  return(x)
}

# Nilai awal, toleransi, dan maksimum iterasi
x0 <- 2
tolerance <- 1e-6
max_iterations <- 100

# Memanggil fungsi iterasi Newton-Raphson
result <- newton_raphson(x0, tolerance, max_iterations)

# Menampilkan hasil
print(paste("Nilai akar yang dihitung: ", result))
newton rhapson

Setelah dilakukan proses running, maka didapatkan hasil dari nilai akar yang dihitung yaitu sebesar 1.73205081001473.

Tahapan berikutnya yaitu melakukan visualisasi hasil iterasi Newton-Rhapson dengan menggunakan syntax R yaitu sebagai berikut.

x_values <- seq(-3, 3, 0.01)
y_values <- f(x_values)

plot_data <- data.frame(x = x_values, y = y_values)

ggplot(plot_data, aes(x, y)) +
  geom_line() +
  geom_hline(yintercept = 0, linetype="dashed", color = "red") +
  geom_vline(xintercept = result, linetype="dashed", color = "blue") +
  geom_point(aes(x = result, y = 0), color = "blue", size = 3) +
  labs(title = "Iterasi Newton-Raphson",
       x = "Nilai x",
       y = "Nilai f(x)")
# Plot fungsi dan akar yang ditemukan
newton rhapson

Berdasarkan hasil output software R berupa hasil perhitungan dan hasil visualisasi, diketahui bahwa dalam contoh ini, kita mencari akar persamaan f(x)=x2-3 menggunakan metode Newton-Raphson dengan nilai awal x0=2, toleransi 1×10−6, dan maksimum iterasi sebanyak 100 kali.

Sebagai catatan, dalam perhitungan kali ini, jumlah iterasi maksimum yang digunakan yaitu sebanyak 100 kali. Adapun penentuan jumlah iterasi dalam hal ini dapat menyesuaikan kebutuhan dari tiap penelitian. Pada penelitian ini, iterasi sebanyak 100 kali, diasumsikan telah menghasilkan hasil perhitungan yang konvergen, sehingga iterasi maksimum dilakukan sebanyak 100 kali.

Referensi

Zakaria, L., & Muharramah, U. (2013). Pengantar Metode Numerik (Solusi Masalah dengan Mathematica. Bandar Lampung: AURA CV. Anugrah Utama Raharja.

Mualifin, M. I. (2023, December 6th). Iterasi Newton-Raphson untuk Mencari Akar Persamaan: Implementasi dalam RStudio. Retrieved from https://rpubs.com/mualifin/Iterasi-Newton-Raphson

Finally, sampai sudah kita di penghujung artikel, sekian penjelasan terkait Iterasi Numerik Newton-Raphson. Apabila masih ada yang dibingungkan bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.

Iterasi Numerik Newton Raphson Read More »

Fuzzy C-Means Clustering with R Studio

Sobat Exsight tau gak nih, dalam statistika khususnya pada metode Clustering terdapat suatu algoritma yang cukup unik yaitu algoritma Fuzzy C-Means. Mau tau apa aja keunikan-keunikannya? Yuk yuk simak artikel ini dengan seksama yaa!

Definisi

Clustering Fuzzy C-Means (FCM) merupakan sebuah algoritma dalam statistika yang digunakan untuk mengelompokkan data ke dalam beberapa kelompok atau cluster. Fuzzy C-Means termasuk dalam kategori metode non hierarchical clustering. Metode ini menggambarkan tingkat ketidakpastian dalam pengelompokan data dengan mengizinkan setiap data untuk termasuk dalam beberapa kelompok dengan derajat keanggotaan yang berbeda-beda. Dimana tentunya algoritma FCM berbeda dengan algoritma clustering k-means yang memaksa setiap data termasuk ke dalam satu kelompok tertentu.

Konsep Dasar Clustering Fuzzy C-Means (FCM)

Beberapa konsep dasar dari Fuzzy C-Means (FCM) adalah sebagai berikut:

A. Pengelompokan Data
Penerapan algoritma clustering Fuzzy C-Means digunakan untuk mengelompokkan data ke dalam beberapa kelompok berdasarkan kesamaan karakteristik. Tujuan utama FCM adalah untuk mengidentifikasi kelompok data yang memiliki tingkat kemiripan tinggi.

B. Pendekatan Fuzzy
FCM menggunakan pendekatan “fuzzy” dalam pengelompokan data. Ini berarti bahwa dalam FCM, setiap data dapat termasuk dalam semua kelompok dengan derajat keanggotaan yang berbeda-beda. Sebagai contoh, data tidak harus tegas termasuk dalam satu kelompok tertentu, tetapi bisa memiliki derajat keanggotaan yang menunjukkan sejauh mana data tersebut cocok dengan masing-masing kelompok.

C. Fungsi Objektif
Algoritma Fuzzy C-Means berusaha untuk meminimalkan fungsi objektif, yang mengukur sejauh mana data sesuai dengan kelompok yang dihasilkan. Fungsi objektif dalam hal ini melibatkan derajat keanggotaan dan pusat kelompok cluster.

d. Iteratif
Fuzzy C-Means adalah algoritma iteratif di mana pusat kelompok dan derajat keanggotaan diperbarui secara berulang sampai kondisi konvergensi tercapai. Konvergensi terjadi ketika perubahan dalam derajat keanggotaan dan pusat kelompok menjadi sangat kecil.

e. Parameter Fuzziness
Fuzzy C-Means memiliki parameter keanggotaan (fuzziness) yang memungkinkan kita untuk mengontrol sejauh mana data dapat termasuk dalam kelompok lain. Nilai fuzziness yang tinggi akan memberikan derajat keanggotaan yang lebih merata, sementara nilai yang rendah akan membuat derajat keanggotaan lebih pasti.

Tahapan Matematis FCM

Algoritma Clustering Fuzzy C-Means (FCM) memiliki beberapa tahapan secara matematis meliputi:

  1. Melakukan input data yang nantinya akan dikelompokkan, berupa matriks berukuran n x p (di mana n =jumlah sampel data, p = variabel setiap data).
  2. Menentukan jumlah cluster (c), pangkat pembobot (m > 1), maksimum iterasi (MaxIter), error terkecil yang diharapkan (ε), serta fungsi objektif awal (P0 = 0).
  3. Membangkitkan bilangan random Uik, dimana i = 1,2,3,…,n dan k = 1,2,…,c.
  4. Menghitung pusat cluster ke-k pada variabel ke-j dalam hal ini disimbollkan dengan vkj, dimana k = 1,2,…,c dan j =1,2,…,p.
V=\left [ v_{kj} \right ]=\frac{\sum_{i=1}^{n}\left ( u_{ik} \right )^{m}x_{ij}}{\sum_{i=1}^{n}\left ( u_{ik} \right )^{m}}

5. Menghitung nilai fungsi objektif pada iterasi ke-t (Pt) dengan formula yaitu.

P_{t}=\sum_{i=1}^{n}\sum_{k=1}^{c}\left ( u_{ik} \right )^{m}d_{ik}\left ( x_{i},v_{kj} \right )

6. Selanjutnya menghitung perubahan matriks keanggotaan uik dengan formula sebagai berikut.

u_{ik}=\left [ \frac{\left [ \sum_{j=1}^{p}d_{jk}\right ]^{{\frac{1}{m-1}} }}{\sum_{k=1}^{c}\left [ \sum_{j=1}^{p}d_{jk} \right ]^{\frac{1}{m-1}}} \right ]^{-1}

7. Lalu memeriksa kondisi berhenti. Jika (|Pt – Pt-1|) < ε) atau (t > MaxIter) maka iterasi berhenti. Jika tidak, maka t = t+1, kembali ke langkah 4.

Kelebihan dan Kelemahan

Dalam penggunaanya sebagai algoritma clustering, Fuzzy C-Means (FCM) memiliki beberapa kelebihan dan kelemahan, diantaranya:

Kelebihan

  1. Bersifat Feksibel
    Salah satu kelebihan utama dari FCM adalah kemampuannya dalam mengelompokkan data dengan lebih fleksibel. Data dapat termasuk dalam beberapa kelompok dengan derajat keanggotaan yang berbeda, sehingga lebih mencerminkan ketidakpastian dalam pengelompokan.
  2. Mengatasi Data yang Ambigu
    FCM mampu mengatasi data yang tidak memiliki batasan pengelompokan yang jelas sehingga FCM sangat berguna dalam situasi di mana ketika data dapat secara masuk akal bisa masuk dalam beberapa kategori sekaligus.
  3. Hasil yang Lebih Akurat
    Karena setiap data memiliki derajat keanggotaan dalam semua kelompok, FCM dapat memberikan hasil yang lebih akurat dan informatif dalam pengelompokan.
  4. Mudah diimplementasikan
    Algoritma FCM relatif mudah diimplementasikan, selain itu terdapat banyak perangkat lunak (software) dan library tersedia yang mendukungnya.
  5. Penggunaan yang Luas
    Algoritma FCM dapat diterapkan dalam berbagai bidang, diantaranya meliputi pengolahan citra, analisis data, dan machine learning.

Kelemahan

  1. Sensitif terhadap Inisialisasi
    Hasil pengelompokan pada algoritma FCM dapat bergantung pada inisialisasi awal pusat kelompok, lalu apabila inisialisasi bernilai buruk maka dapat menghasilkan hasil yang tidak memuaskan.
  2. Komputasi yang Intensif
    Algoritma FCM memerlukan komputasi yang intensif, terutama ketika bekerja dengan jumlah data atau dimensi yang besar.
  3. Kemungkinan Konvergensi ke Optimum Lokal
    Seperti algoritma clustering lainnya, algoritma FCM rentan terhadap konvergensi ke optimum lokal yang mungkin tidak menghasilkan pengelompokan yang optimal.
  4. Kesulitan Menentukan Jumlah Kelompok
    Seperti k-means, menentukan jumlah kelompok yang optimal dalam FCM bisa menjadi tantangan, dan hasilnya dapat bervariasi tergantung pada jumlah kelompok yang dipilih.
  5. Ketergantungan pada Parameter
    FCM memiliki parameter seperti parameter keanggotaan (fuzziness) yang perlu ditentukan, dan pemilihan parameter yang tidak tepat dapat mempengaruhi hasil pengelompokan.

Kelebihan dan kelemahan FCM harus dipertimbangkan dengan cermat ketika memilih algoritma clustering yang sesuai untuk suatu data maupun aplikasi tertentu. Algoritma FCM cocok untuk situasi di mana data memiliki ketidakpastian dan fleksibilitas dalam pengelompokan.

Penerapan FCM dalam Berbagai Bidang

Algoritma Fuzzy C-Means (FCM) merupakan algoritma clustering yang memiliki berbagai penerapan dalam berbagai bidang. Berikut adalah beberapa contoh penerapannya.

A. Bidang Keuangan
Algoritma FCM dapat digunakan dalam analisis keuangan untuk mengelompokkan portofolio investasi dari suatu perusahaan berdasarkan kinerja atau risiko dari perusahaan tersebut.

C-Means

B. Sistem Kendali dan Robotika
FCM dapat digunakan dalam sistem kendali maupun robotika untuk mengendalikan pergerakan robot atau sistem otomatis. Algoritma FCM dapat membantu robot atau sistem untuk mengidentifikasi lingkungan sekitarnya dan membuat keputusan berdasarkan data yang diterima.

C-Means

C. Manajemen Inventori
Dalam manajemen inventori, algoritma FCM dapat digunakan untuk mengelompokkan produk berdasarkan karakteristik tertentu, yang dapat membantu dalam perencanaan dan pengelolaan stok.

C-Means

Tutorial Algoritma FCM dengan R

Studi Kasus

Studi kasus yang akan kita gunakan dalam hal ini menggunakan data terkait Tindak Pindak Kriminal yang didapatkan dari situs Badan Pusat Statistik Indonesia tahun 2022. Adapun data bisa di-download disini.
* Tidak terdapat missing value pada data.
* Data terdiri atas 34 observasi.

C-Means

Tahapan R Studio Fuzzy C-Means

* Load Library

Tahapan awal, sebelum melakukan running syntax di software R terlebih dahulu melakukan load library R.  Adapun syntax R yang digunakan adalah sebagai berikut.

#Library
library(cluster) # Algoritma Clustering
library(factoextra) # Algoritma Clustering dan visualisasi
library(tidyverse)
library(Rcpp)
library(ppclust)
library(factoextra)
library(dplyr)
library(fclust)
library(psych)
library(clusterSim)
library(clValid)
library(olsrr)
library(car)
library(corrplot)
library(MVN)
library(readxl)

* Load Data

data<-read.csv(file.choose(),header=TRUE,sep=”,”)
rownames(data) <- data$Provinsi
dataclus <- data[,-1]

datafix<-scale(dataclus)

* Clustering Fuzzy C-Means

Tahapan berikutnya melakukan clustering Fuzzy C-Means. Dalam hal ini algoritma dicobakan dengan jumlah cluster sebanyak 2, 3, dan 4.

##JUMLAH CLUSTER 2
set.seed(1)
fcm2<- fcm(datafix, 2, m=2, dmetric="sqeuclidean", pw = 2, 
                    alginitv="kmpp", alginitu="imembrand", 
                    nstart=1, iter.max=1000, con.val=1e-09)
summary(fcm2)

##JUMLAH CLUSTER 3
set.seed(1)
fcm3<- fcm(datafix, 3, m=2, dmetric="sqeuclidean", pw = 2, 
           alginitv="kmpp", alginitu="imembrand", 
           nstart=1, iter.max=1000, con.val=1e-09)
summary(fcm3)

##JUMLAH CLUSTER 4
set.seed(1)
fcm4<- fcm(datafix, 4, m=2, dmetric="sqeuclidean", pw = 2, 
           alginitv="kmpp", alginitu="imembrand", 
           nstart=1, iter.max=1000, con.val=1e-09)
summary(fcm4)

Berdasarkan hasil running dari cluster sebanyak 2, 3, dan 4, selanjutnya akan ditentukan jumlah cluster optimal. Dalam hal ini menggunakan bantuan validasi Davies Bouldin Index (DBI) dan validasi Calinski-Harabasz .

*Indeks Davies bouldin merupakan suatu ukuran yang menunjukkan kesamaan cluster yang kerapatan datanya merupakan fungsi penurunan jarak dari karakteristik vektor cluster. Semakin kecil nilai indeks Davies Bouldin pada suatu cluster, semakin baik hasil clustering-nya. Dengan meminimalkan indeks ini terdapat perbedaan yang jelas antara satu cluster dengan cluster lainnya sehingga dapat mencapai partisi terbaik.

*Indeks Calinski-Harabasz merupakan rasio antara nilai Sum of Square between cluster (SSB) dan nilai Sum of Square within-cluster (SSW) yang dikalikan dengan faktor normalisasi. Faktor normaliasi ini akan mengurangi nilai indeks ketika jumlah cluster (k) bertambah. Semakin besar nilai indeks calinski-harabasz pada suatu cluster, semakin baik hasil clustering-nya.

#VALIDASI DAVIES BOULDIN INDEX (DBI)
d <-dist(datafix)
dbi_fcm2 <-print(index.DB(datafix,fcm2$cluster, d, centrotypes = 'centroids'))
dbi_fcm3 <-print(index.DB(datafix,fcm3$cluster, d, centrotypes = 'centroids'))
dbi_fcm4 <-print(index.DB(datafix,fcm4$cluster, d, centrotypes = 'centroids'))
dbi_fcm5 <-print(index.DB(datafix,fcm5$cluster, d, centrotypes = 'centroids'))
dbi_fcm6 <-print(index.DB(datafix,fcm6$cluster, d, centrotypes = 'centroids'))

##Melihat Nilai DB
dbi_fcm2$DB
dbi_fcm3$DB
dbi_fcm4$DB
dbi_fcm5$DB
dbi_fcm6$DB

################################################################################
#VALIDASI CALINSKI-HARABASZ
index.G1(datafix,fcm2$cluster)
index.G1(datafix,fcm3$cluster)
index.G1(datafix,fcm4$cluster)
index.G1(datafix,fcm5$cluster)
index.G1(datafix,fcm6$cluster)
Jumlah ClusterDavies Bouldin IndexCalinski- Harabasz
20,890549436,42613
31,31718923,5736
41,11381224,53334
Tabel 1. Indeks Validasi Penentuan Cluster Optimal

Apabila kita perhatikan pada Tabel 1, diketahui bahwa pada nilai Davies Bouldin Index terkecil yaitu sebesar 0,8905494 di mana dalam hal ini terdapat 2 cluster. Hasil ini juga sejalan dengan nilai Calinski-Harabasz terbesar yaitu sebesar 36,42613 untuk cluster 2. Jadi, dengan kedua indeks tersebut dapat dikatakan jumlah cluster optimal adalah sebanyak 2.

Selanjutnya melakukan visualisasi hasil clustering Fuzzy C-Means, dalam hal ini syntax R yang digunakan adalah sebagai berikut.

#Berdasarkan Hasil Validasi Jumlah Cluster (2) adalah yg terbaik

#Visualisasi Hasil Cluster Fuzzy C-Means
fcm.visual<- ppclust2(fcm2,"fanny")
factoextra::fviz_cluster(fcm.visual, data = datafix, 
                         ellipse.type = "convex",
                         palette = "jco",
                         repel = TRUE)
c-means
Image Source: R Pribadi

Referensi

Suraya, G., & Wijayanto, A. (2022). Comparison of Hierarchical Clustering, K-Means, K-Medoids, and Fuzzy C-Means Methods in Grouping Provinces in Indonesia According to The Special Index for Handling Stunting. Indonesia Journal of Statistics and Its Applications, Vol.8, No.2, 180-201.

Chusna, H., & Rumiati, A. (2020). Penerapan Metode K-Means dan Fuzzy C-Means untuk Pengelompokan Sekolah Menengah Pertama (SMP) di Indonesia Berdasarkan Standar Nasional Pendidikan (SNP). Jurnal Sains dan Seni ITS, Vol.9, No.2.

Ningrat, D., Maruddani, D., & Wuryandari, T. (2016). Analisis Cluster dengan Algoritma K-Means dan Fuzzy C-Means Clustering untuk Pengelompokan Data Obligasi Korporasi. Jurnal Gaussian, Volume 5, No.4.

Nah, sekian penjelasan terkait Clustering Fuzzy C-Means. Jika sobat Exsight masih ada yang dibingungkan, bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.

Fuzzy C-Means Clustering with R Studio Read More »

KNN (K-Nearest Neighbors) Algorithm with Easy Steps in R

Haloo haloo sobat Exsight, dalam dunia statistika, tentunya sobat Exsight sudah tidak asing dengan istilah klasifikasi. Salah satu algoritma yang umum digunakan dalam klasifikasi yaitu algoritma KNN (K-Nearest Neighbors). Nah pada artikel ini, akan dibahas lebih lanjut terkait algoritma KNN, meliputi definisi, cara kerja, kelebihan & keterbatasan, serta penerapannya. Yuk yuk simak dengan seksama yaa!

Definisi

Algoritma K-Nearest Neighbors (KNN) merupakan suatu algoritma machine learning yang dapat digunakan dalam klasifikasi maupun regresi. Algoritma KNN bekerja dengan cara mencari sejumlah k tetangga terdekat (neighbors) dari data yang akan diprediksi (data testing) berdasarkan kesamaan maupun jarak antara data tersebut dengan data yang sudah ada dalam dataset pelatihan (data training).

Dalam hal ini k tetangga terdekat (neighbors) berupa bilangan bulat positif yang dapat ditentukan oleh pengguna, serta memiliki sifat semakin kecil nilai k, maka akan semakin rentan terhadap data outlier.

Cara Kerja Algoritma KNN

KNN

Prinsip utama dari algoritma K-Nearest Neighbors yaitu data-data yang mirip cenderung termasuk dalam kelas yang sama atau memiliki nilai yang mirip. Nilai k dalam KNN mengacu pada jumlah tetangga terdekat yang akan digunakan untuk membuat prediksi. Nilai k dipilih sebelumnya dan dapat memengaruhi hasil klasifikasi. Nilai k yang lebih besar akan membuat model lebih halus, sementara k yang lebih kecil cenderung lebih sensitif terhadap noise dalam data.

Beberapa metrik jarak yang kerap kali digunakan digunakan dalam algoritma K-Nearest Neighbors diantaranya jarak Euclidean, jarak Manhattan, maupun jarak Minkowski. Dalam hal ini metrik jarak digunakan untuk mengukur seberapa dekat atau berbedanya data yang akan diprediksi dengan data dalam dataset pelatihan (data training).

Dalam penerapannya, metrik jarak yang seringkali digunakan yaitu jarak Euclidean. Hal ini dikarenakan jarak Euclidean memiliki tingkat akurasi dan juga productivity yang tinggi. Adapun rumus untuk perhitungan jarak Euclidean adalah sebagai berikut.

d\left ( x_{i} ,x_{j}\right )=\sqrt{\sum_{n=1}^{p}\left ( x_{ip}-x_{jp} \right )^{2}}

Dimana berdasarkan rumus di atas.
xip = data ke-i pada variabel ke-p
xjp = data ke-j pada variabel ke-p
d(xip ,xjp) = jarak euclidean
p = dimensi data variabel bebas

Kelebihan dan Keterbatasan

Terdapat beberapa kelebihan dan keterbatasan dalam algoritma K-Nearest Neighbors di antaranya:

KNN

Kelebihan

  1. Sederhana
    KNN merupakan algoritma yang relatif mudah dipahami dan diimplementasikan.
  2. Tidak Memerlukan Asumsi Statistik
    Algoritma KNN tidak bergantung pada asumsi statistik tertentu tentang data sehingga algoritma ini dapat berguna untuk berbagai jenis data, termasuk data yang tidak mengikuti suatu distribusi tertentu.
  3. Adaptif terhadap Perubahan Data
    KNN adalah algoritma non-parametrik, sehingga dapat dikatakan algoritma ini dapat dengan baik menangani dataset yang berubah seiring waktu atau memiliki variasi dalam jumlah kelas atau kelompok data.
  4. Cocok untuk Data Berdimensi Tinggi
    Meskipun seringkali agoritma K-Nearest Neighbors cenderung bekerja lebih baik pada data berdimensi rendah, namun algoritma ini juga dapat diterapkan pada data berdimensi tinggi dengan menggunakan teknik seperti pemilihan fitur (feature selection) dan normalisasi.
  5. Hasil yang Didapatkan Cukup Baik
    Algoritma K-Nearest Neighbors seringkali dapat menghasilkan hasil yang cukup baik dalam banyak kasus dibandingkan algoritma klasifikasi lainnya, terutama ketika jumlah tetangga (K) yang dipilih tepat dan data yang digunakan memiliki struktur yang jelas.

Keterbatasan

  1. Sensitif terhadap Nilai K (Jumlah Tetangga)
    Hasil KNN dapat sangat bervariasi tergantung pada nilai K (jumlah tetangga) yang digunakan. KNN cenderung overfitting dengan K (jumlah tetangga) yang terlalu kecil dan underfitting dengan K (jumlah tetangga) yang terlalu besar.
  2. Perlunya Ketelitian dalam Pemrosesan Data dan Pemilihan Metrik Jarak
    Ketelitian dalam pemrosesan data serta pemilihan metrik jarak memiliki peran sangat penting dalam algoritma K-Nearest Neighbors (KNN) karena faktor-faktor ini secara langsung memengaruhi kualitas dan keandalan hasil prediksi model KNN. Pilihan yang salah dapat menghasilkan hasil yang buruk.
  3. Rentan terhadap Outlier
    Algoritma K-Nearest Neighbors rentan terhadap pengaruh adanya data outlier. Hal ini dikarenakan algoritma KNN hanya mengandalkan tetangga terdekat sehingga adanya outlier dapat mengganggu hasil klasifikasi.

Ketika akan menggunakan algoritma K-Nearest Neighbors untuk menangani suatu studi kasus, maka penting untuk mempertimbangkan kelebihan dan kekurangannya serta memilih parameter yang tepat (nilai K) dengan tujuan untuk mencapai hasil yang optimal.

Studi Kasus Penerapan Algoritma KNN

Algoritma K-Nearest Neighbors memiliki beragam aplikasi dalam berbagai bidang. Berikut ini beberapa contoh aplikasi penerapan algoritma K-Nearest Neighbors.

1.Sistem Rekomendasi
Algoritma K-Nearest Neighbors dapat diterapkan dalam sistem rekomendasi, diantaranya rekomendasi produk dalam e-commerce, rekomendasi film dalam layanan streaming, atau rekomendasi teman dalam jejaring sosial. Algoritma ini membandingkan preferensi pengguna dengan data dari pengguna-pengguna lain untuk memberikan rekomendasi yang lebih relevan.

KNN

2. Diagnostik Medis
Dalam bidang kesehatan, algoritma K-Nearest Neighbors dapat digunakan untuk mendiagnosis penyakit atau kondisi medis dengan membandingkan gejala pasien dengan data pasien lain yang sudah terdiagnosis.

KNN

3. Klasifikasi Gambar
Algoritma K-Nearest Neighbors dapat digunakan untuk mengklasifikasikan gambar dalam tugas seperti pengenalan wajah, deteksi objek, maupun klasifikasi hewan dan tumbuhan berdasarkan gambar.

KNN

4. Deteksi Intrusi (Intrusion Detection)
Algoritma K-Nearest Neighbors dapat digunakan dalam keamanan jaringan untuk mendeteksi aktivitas yang mencurigakan atau serangan siber maupun aktivitas yang mencurigakan pada jaringan komputer.

KNN

Tutorial Algoritma KNN dengan R

Nah setelah mengetahui tentang apa itu algoritma K-Nearest Neighbors berikutnya, kita akan melakukan tutorial K-Nearest Neighbors dengan menggunakan software R.

Studi Kasus

Studi kasus yang akan kita gunakan dalam hal ini menggunakan data sampel terkait Lung Cancer (Kanker Paru-Paru) yang didapatkan dari situs kaggle.com, dimana data di-publish oleh Ms. Nancy Al Aswad.
* Tidak terdapat missing value pada data.
* Data terdiri atas 309 observasi.

KNN

Data terdiri atas 16 variabel yaitu:

VariabelKeterangan VariabelSkala Data
GenderM = Male
F = Female
Kategorik
AgeNumerik
Smoking1 = No
2 = Yes
Kategorik
Yellow Finger1 = No
2 = Yes
Kategorik
Anxiety1 = No
2 = Yes
Kategorik
Peer Pressure1 = No
2 = Yes
Kategorik
Chronic Disease1 = No
2 = Yes
Kategorik
Fatigue1 = No
2 = Yes
Kategorik
Allergy1 = No
2 = Yes
Kategorik
Wheezing1 = No
2 = Yes
Kategorik
Alcohol1 = No
2 = Yes
Kategorik
Coughing1 = No
2 = Yes
Kategorik
Shortness of Breath1 = No
2 = Yes
Kategorik
Swallowing Difficulty1 = No
2 = Yes
Kategorik
Chest Pain1 = No
2 = Yes
Kategorik
Lung Cancer1 = No
2 = Yes
Kategorik
Tabel 1. Data

Pada Tabel 1. variabel Lung Cancer berperan sebagai variabel Dependen, sedangkan lainnya merupakan variabel Independen.

Load Library

Tahapan paling awal sebelum running syntax di software R yaitu melakukan load library R. Adapun library yang diperlukan untuk K-Nearest Neighbors yaitu caret. Adapun syntax R yang digunakan adalah sebagai berikut.

library(caret)

Load Data

Kemudian melakukan input data ke R. Data yang diinput diberi nama sebagai data. Perlu diperhatikan untuk jenis file data yang diinput ke R, untuk tutorial kali ini jenis file data yang digunakan yaitu dalam format CSV. Syntax yang digunakan untuk load data adalah sebagai berikut.

data<-read.csv(file.choose(),header=TRUE,sep=",")

Pre-Processing

Data yang telah kita load selanjutnya di-split menjadi data training testing 70/30. Artinya dari data yang ada, 70% dari data kita jadikan sebagai data training dan 30% data kita jadikan data testing.

##Membuat data training dan data testing (training 70, testing 30)
n_train <- round(nrow(data) * 0.7)
idx_train <- sample(seq_len(n_train))

data_train <- data[idx_train, ]
data_test <- data[-idx_train, ]

#Menyimpan data hasil training dan testing dalam format csv
write.csv(data_train,"training.csv")
write.csv(data_test,"testing.csv")

#Membuka file hasil training dan testing
data_train=read.csv(file.choose(),header=TRUE,sep=",")
data_test=read.csv(file.choose(),header=TRUE,sep=",")

Selanjutnya mengacu pada Tabel 1. variabel dengan skala data “kategorik” baik pada data training dan data testing, kita pastikan tipe data menjadi “factor” di R.

#Mengubah tipe data
##Data Train
data_train$GENDER=as.factor(data_train$GENDER)
data_train$SMOKING=as.factor(data_train$SMOKING)
data_train$YELLOW_FINGERS=as.factor(data_train$YELLOW_FINGERS)
data_train$ANXIETY=as.factor(data_train$ANXIETY)
data_train$PEER_PRESSURE=as.factor(data_train$PEER_PRESSURE)
data_train$CHRONIC.DISEASE=as.factor(data_train$CHRONIC.DISEASE)
data_train$FATIGUE=as.factor(data_train$FATIGUE)
data_train$ALLERGY=as.factor(data_train$FATIGUE)
data_train$WHEEZING=as.factor(data_train$WHEEZING)
data_train$ALCOHOL.CONSUMING=as.factor(data_train$ALCOHOL.CONSUMING)
data_train$COUGHING=as.factor(data_train$COUGHING)
data_train$SHORTNESS.OF.BREATH=as.factor(data_train$SHORTNESS.OF.BREATH)
data_train$SWALLOWING.DIFFICULTY=as.factor(data_train$SWALLOWING.DIFFICULTY)
data_train$CHEST.PAIN=as.factor(data_train$CHEST.PAIN)
data_train$LUNG_CANCER=as.factor(data_train$LUNG_CANCER)

##Data Test
data_test$GENDER=as.factor(data_test$GENDER)
data_test$SMOKING=as.factor(data_test$SMOKING)
data_test$YELLOW_FINGERS=as.factor(data_test$YELLOW_FINGERS)
data_test$ANXIETY=as.factor(data_test$ANXIETY)
data_test$PEER_PRESSURE=as.factor(data_test$PEER_PRESSURE)
data_test$CHRONIC.DISEASE=as.factor(data_test$CHRONIC.DISEASE)
data_test$FATIGUE=as.factor(data_test$FATIGUE)
data_test$ALLERGY=as.factor(data_test$FATIGUE)
data_test$WHEEZING=as.factor(data_test$WHEEZING)
data_test$ALCOHOL.CONSUMING=as.factor(data_test$ALCOHOL.CONSUMING)
data_test$COUGHING=as.factor(data_test$COUGHING)
data_test$SHORTNESS.OF.BREATH=as.factor(data_test$SHORTNESS.OF.BREATH)
data_test$SWALLOWING.DIFFICULTY=as.factor(data_test$SWALLOWING.DIFFICULTY)
data_test$CHEST.PAIN=as.factor(data_test$CHEST.PAIN)
data_test$LUNG_CANCER=as.factor(data_test$LUNG_CANCER)
SVM
Gambar 1. Struktur Data Training dan Data Testing

Berikutnya, kita perhatikan kembali data training dan testing, kita hilangkan kolom yang tidak perlu, dalam hal ini kolom pertama (x) yang hanya menunjukkan urutan observasi.

#Removing Kolom "Nomor urut di awal data train & test"
data_train=data_train[,-1]
data_test=data_test[,-1]
SVM
Gambar 2. Data TrainingBefore dan After Removing Kolom Urutan Observasi

Pemodelan

Setelah melakukan Pre-Processing, tahapan berikutnya melakukan pemodelan K-Nearest Neighbors. Pemodelan K-Nearest Neighbors mula-mula dilakukan pada data training. Dalam hal ini ditentukan pula nilai k tetangga terdekat (neighbor) optimal dengan syntax sebagai berikut.

#Choosing K Value
# Run algorithms using 10-fold cross validation
trainControl <- trainControl(method="repeatedcv", number=10, repeats=10)
metric <- "Accuracy"

#Pemodelan KNN
set.seed(1)
fit.knn <- train(LUNG_CANCER~., data=data_train, method="knn",
                 metric=metric ,trControl=trainControl)
knn.k1 <- fit.knn$bestTune # keep this Initial k for testing with knn() function in next section
print(fit.knn)
knn
Gambar 3. Hasil Pemodelan Data Training pada K- Nearest Neighbors

Tahapan berikutnya, melakukan prediksi data Testing pada algoritma K-Nearest Neighbors dengan syntax R sebagai berikut.

#Hasil Prediksi KNN
set.seed(1)
prediction <- predict(fit.knn, newdata = data_test)

Setelah melakukan running syntax R untuk prediksi hasil algoritma K-Nearest Neighbors pada data testing, berikutnya menentukan confusion matrix dengan syntax sebagai berikut.

#Confusion Matrix
cm.testing_knn=table(data_test$LUNG_CANCER, prediction)
confusionMatrix(cm.testing_knn)
knn
Gambar 4. Hasil Confusion Matrix pada Algoritma K- Nearest Neighbors

Apabila kita perhatikan pada Gambar.4, dari hasil confusion matrix, terlihat bahwa nilai accuracy sudah cukup tinggi yaitu sebesar 0,871 atau 87,1%. Meskipun accuracy dari model ini sudah cukup tinggi, namun sayangnya untuk sensitivity bernilai NA dan Kappa bernilai 0. Sehingga dapat dikatakan hasil pemodelan KNN ini, masih belum baik.

Maka dari itu, untuk pengoptimalan model dapat dilakukan dengan memeriksa kembali data khususnya pada bagian data training dan data tesing, lalu kita dapat mencoba dan running ulang model dengan nilai K hasil cross validation yang berbeda, untuk mendapatkan hasil pemodelan KNN yang lebih baik lagi.

Referensi

Han, J., Kamber, M., & Pei, J. (2012). Data Mining Concept and Techniques Third Edition. Elsevier Inc.

Aisyah, S., & Fithriasari, K. (2016). Klasifikasi Berita Online Menggunakan Metode Support Vector Machine dan K- Nearest Neighbor. Jurnal Sains dan Seni ITS Vol. 5, No.2.

Sampai disini dulu yaa penjelasan terkait Algoritma KNN (K-Nearest Neighbor). Apabila masih ada yang dibingungkan bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya.

KNN (K-Nearest Neighbors) Algorithm with Easy Steps in R Read More »

Hubungi Admin
Halo, selamat datang di Exsight! 👋

Hari ini kita ada DISKON 20% untuk semua transaksi. Klaim sekarang!