KATA PENGANTAR
Alhamdulillah, puji dan syukur kehadirat Allah SWT atas semua berkah dan rahmat yang senantiasa diberikan sehingga penulis dapat menyelesaikan buku ini dengan baik dan lancar. Salawat serSebelumnya , penulis memanjatkanta salam kita panjatkan pula terhadap nabi besar muhammad SAW.
Buku ini ditulis untuk melengkapi tugas dari mata kuliah Desain Pemodelan Grafik (Softskill) yang diajar oleh Pak Dr. Rer. Nat. I Made Wiryana, Skom, SSi, MappSc. Tujuan dari penulisan buku ini diharapkan, agar pembaca dapat memahami teori permodelan grafik ,perangkat lunak yang berkaitan dengan Joint Kernel Density Estimate.
Tujuan penulisan buku ini untuk melatih kami untuk memiliki knowledge, skill menulis, mendengar, berbicara, beragumen dan berdiskusi dengan kelompok. Pembahasan buku ini akan dimulai dari hal sederhana, yaitu pemahaman konsep visualisasi, instalasi software yang di butuhkan, bagaimana langkah atau cara yang diperlukan untuk instalasi software tersebut, contoh kasus software yang menggunakan teori joint kernel density estimate dalam pemodelan grafik.
Sebagai kata kata terakhir, penulis ucapkan terimakasih kepada semua pihak dan tempat yang telah memberikan kontribusi bantuan dan dukungan terhadap proses penulisan dan pencetakan buku ini
Semoga bermanfaat
Depok, Januari 2015
Penulis
Kupersembahkan buku ini untuk teman temanku tercinta; terimakasih atas usaha dan jerih payah atas pembuatan buku ini -Fadlillah Ramdhani
Kupersembahkan buku ini untuk pak made tercinta selaku dosen saya yang telah memberikan tugas penulisan buku ini, karena dengan tugas ini membuatku saya bertambah skill dalam penulisan dan teamwork dalam pengerjaan nya -Parulian Tambunan
Kupersembahkan buku ini untuk kedua orangtuaku tersayang; terimakasih untuk semuanya dan doanya selama ini sehingga kami dapat menyelesaikan buku ini -Ika Yunita Anggraeni
Kupersembahkan buku ini untuk orangtua atas semua pemberian yang diberikan; sangat membantuku dalam menjalani proses hidup dan juga untuk teman seperjuangan yang sudah berusaha dengan tekun dalam proses penulisan buku ini -Sutri Hartono
BAB 1 PENDAHULUAN
A. Latar Belakang
Kualitas hasil produksi menjadi salah satu faktor dasar keputusan konsumen dalam memilih sebuah produk. Sebuah pengendalian kualitas sangat dibutuhkan dalam proses produksi guna menjaga kestabilan suatu produk. Dalam pengendalian kualitas sering digunakan pengendalian proses statistik. Salah satu teknik pengendalian proses statistik adalah grafik pengendali (control chart). Mengingat karakteristik kualitas proses produksi tidak selalu berdistribusi normal, maka dikembangkan alternatif grafik pengendali dengan metode non-parametrik . Salah satunya adalah menggunakan estimasi fungsi densitas kernel (kernel density estimation).
Dalam makalah ini di jelaskan tentang penerapan grafik pengendali berdasarkan estimasi fungsi densitas kernel bivariat pada data bivariat k, pencapaian dari tugas ini mahasiswa dapat memilki kemampuan teamwork yang dapat berguna di dalam dunia kerja. arakteristik pH dan berat jenis sabun sirih (Pattihahuan et al., 2012). m menduga selang kepercayaan dari kurva dugaan. Selanjutnya, makalah ini akan membahas tentang bagaimana menerapkan grafik pengendali non-parametrik berdasarkan pendekatan fungsi densitas kernel bivariat untuk dua titik dan untuk data simulasi bivariat. Tujuan dari penelitian ini adalah menerapkan grafik menduga selang kepercayaan dari kurva dugaan. pengendali non-parametrik berdasarkan pendekatan kernel untuk data simulasi bivariat dan mengidentifikasi titik sampel yang berada di luar grafik pengendali.
Pengendalian kualitas secara statistik dapat dilakukan dengan menggunakan grafik pengendali, Salah satunya adalah penggunaan grafik pengendali berdasarkan Estimasi Fungsi Densitas Kernel. Data yang digunakan adal
KATA PENGANTAR
Alhamdulillah, puji dan syukur kehadirat Allah SWT atas semua berkah dan rahmat yang senantiasa diberikan sehingga penulis dapat menyelesaikan buku ini dengan baik dan lancar. Salawat serSebelumnya , penulis memanjatkanta salam kita panjatkan pula terhadap nabi besar muhammad SAW.
Buku ini ditulis untuk melengkapi tugas dari mata kuliah Desain Pemodelan Grafik (Softskill) yang diajar oleh Pak Dr. Rer. Nat. I Made Wiryana, Skom, SSi, MappSc. Tujuan dari penulisan buku ini diharapkan, agar pembaca dapat memahami teori permodelan grafik ,perangkat lunak yang berkaitan dengan Joint Kernel Density Estimate.
Tujuan penulisan buku ini untuk melatih kami untuk memiliki knowledge, skill menulis, mendengar, berbicara, beragumen dan berdiskusi dengan kelompok. Pembahasan buku ini akan dimulai dari hal sederhana, yaitu pemahaman konsep visualisasi, instalasi software yang di butuhkan, bagaimana langkah atau cara yang diperlukan untuk instalasi software tersebut, contoh kasus software yang menggunakan teori joint kernel density estimate dalam pemodelan grafik.
Sebagai kata kata terakhir, penulis ucapkan terimakasih kepada semua pihak dan tempat yang telah memberikan kontribusi bantuan dan dukungan terhadap proses penulisan dan pencetakan buku ini
Semoga bermanfaat
Depok, Januari 2015
Penulis
Kupersembahkan buku ini untuk teman temanku tercinta; terimakasih atas usaha dan jerih payah atas pembuatan buku ini -Fadlillah Ramdhani
Kupersembahkan buku ini untuk pak made tercinta selaku dosen saya yang telah memberikan tugas penulisan buku ini, karena dengan tugas ini membuatku saya bertambah skill dalam penulisan dan teamwork dalam pengerjaan nya -Parulian Tambunan
Kupersembahkan buku ini untuk kedua orangtuaku tersayang; terimakasih untuk semuanya dan doanya selama ini sehingga kami dapat menyelesaikan buku ini -Ika Yunita Anggraeni
Kupersembahkan buku ini untuk orangtua atas semua pemberian yang diberikan; sangat membantuku dalam menjalani proses hidup dan juga untuk teman seperjuangan yang sudah berusaha dengan tekun dalam proses penulisan buku ini -Sutri Hartono
BAB 1PENDAHULUAN
A. Latar Belakang
Kualitas hasil produksi menjadi salah satu faktor dasar keputusan konsumen dalam memilih sebuah produk. Sebuah pengendalian kualitas sangat dibutuhkan dalam proses produksi guna menjaga kestabilan suatu produk. Dalam pengendalian kualitas sering digunakan pengendalian proses statistik. Salah satu teknik pengendalian proses statistik adalah grafik pengendali (control chart). Mengingat karakteristik kualitas proses produksi tidak selalu berdistribusi normal, maka dikembangkan alternatif grafik pengendali dengan metode non-parametrik . Salah satunya adalah menggunakan estimasi fungsi densitas kernel (kernel density estimation).
Dalam makalah ini di jelaskan tentang penerapan grafik pengendali berdasarkan estimasi fungsi densitas kernel bivariat pada data bivariat k, pencapaian dari tugas ini mahasiswa dapat memilki kemampuan teamwork yang dapat berguna di dalam dunia kerja. arakteristik pH dan berat jenis sabun sirih (Pattihahuan et al., 2012). m menduga selang kepercayaan dari kurva dugaan. Selanjutnya, makalah ini akan membahas tentang bagaimana menerapkan grafik pengendali non-parametrik berdasarkan pendekatan fungsi densitas kernel bivariat untuk dua titik dan untuk data simulasi bivariat. Tujuan dari penelitian ini adalah menerapkan grafik menduga selang kepercayaan dari kurva dugaan. pengendali non-parametrik berdasarkan pendekatan kernel untuk data simulasi bivariat dan mengidentifikasi titik sampel yang berada di luar grafik pengendali.
Pengendalian kualitas secara statistik dapat dilakukan dengan menggunakan grafik pengendali, Salah satunya adalah penggunaan grafik pengendali berdasarkan Estimasi Fungsi Densitas Kernel. Data yang digunakan adalah dua titik sampel bivariat yaitu 2,11 x ,4,32 x dan data simulasi bivariat yang dibangkitkan dari kombinasi dua distribusi normal bivariat dengan ukuran sampel (sample size) tertentu. Berdasarkan data tersebut dapat ditentukan estimasi densitas kernelnya (kernel density estimation) selanjutnya digunakan untuk membuat grafik pengendali dalam menentukan titik sampel yang out of control. Dari studi simulasi dapat dibangkitkan sampel dengan ukuran n berbeda- beda dan diperoleh hasil proporsi titik sampel out of control cenderung mendekati nilai batas kesalahan (level of significance).
KENAPA MENGGUNAKAN KERNEL DENSITY ESTIMATE?
Kualitas hasil produksi menjadi salah satu faktor dasar keputusan konsumen dalam memilih sebuah produk
Seperti yang kita ketahui, histogram dapat secara visual frustasi dan menyesatkan, terutama ketika sampah atau midpoints tidak appropriatel y ukuran d atau ditempatkan (l s o dibahas dalam bagian teori karya ini). Perkiraan kepadatan kernel menyediakan garis halus untuk mengikuti; Namun-mirip dengan “ukuran bin” yang dapat mengubah distribusi data di histogram – bandwidth seleksi adalah bagian penting dari kernel kepadatan estima te. Namun, ada beberapa metode seleksi bandwidth otomatis tersedia di SAS \circledR
perangkat lunak; ini dibahas pada bagian berikutnya.
DASAR TEORI
Grafik Pengendali
Grafik pengendali adalah teknik pengendali proses pada jalur yang digunakan secara luas yang biasanya digunakan untuk menaksir parameter suatu proses produksi menentukan kemampuan dan memberikan informasi yang berguna dalam meningkatkan proses itu (Montgomery, 1990). Berdasarkan banyaknya karakteristik kualitas yang diukur, grafik pengendali dibedakan menjadi 2 jenis yaitu grafik pengendali univariat dan grafik pengendali bivariat atau multivariat. Grafik pengendali univariat digunakan jika hanya ada satu karakteristik kualitas yang diukur, sedangkan grafik pengendali bivariat atau multivariat digunakan jika diperlukan pengendalian dua atau lebih karakteristik kualitas yang berhubungan secara bersama-sama.
Estimasi Fungsi Densitas Bivariat
Estimasi fungsi densitas merupakan salah satu bagian dalam analisis data statistik, dimana estimasi fungsi densitas adalah suatu gambaran tentang sebuah sebaran data. Dalam statistik, estimasi fungsi densitas kernel merupakan salah satu metode non-parametrik untuk menduga fungsi kepadatan probabilitas dari suatu variabel acak (WEB1).
Memahami bagaimana kernel estimasi bekerja membantu analis data yang menghasilkan histogram lebih efektif. Bagian ini berjalan melalui komponen dasar dan perhitungan untuk proses KDE yang disediakan oleh perangkat lunak SAS ®. Perkiraan kepadatan kernel KERNEL kepadatan memperkirakan adalah NONPARAMETRIC metode A yang adalah grafik nonparametric — berarti bahwa ia tidak memiliki fungsi kepekatan probabilitas yang mendasari (Yeh, Shi-Tao, 2004). Sebaliknya, itu diambil berdasarkan pada pengamatan data. Dengan kata lain, perkiraan kepadatan kernel yang tidak menggunakan regresi agar sesuai dengan garis data. Metode grafik lain akrab, nonparametric dalam perangkat lunak SAS ® termasuk pilihan HISTOGRAM dalam prosedur UNIVARIAT, BOXPLOT dan prosedur LOESS. Sebagai lawan untuk contoh-contoh di atas, parametrik regresi SAS ® software termasuk prosedur GLM, REG dan NLIN.
METODE PENELITIAN
Dalam penelitian ini digunakan langkah-langkah yang dijelaskan sebagai berikut:
• Membuat grafik pengendali dengan estimasi densitas kernel untuk dua titik sampel
• Menghitung estimasi fungsi densitas kernel dari data simulasi berdasarkan nilai H bandwidth optimal.
• Membuat grafik pengendali untuk data simulasi bivariat berdasarkan estimasi fungsi densitas kernel. Menentukan banyaknya titik sampel yang out of control.
• Menentukan banyaknya titik yang out of control untuk n=500, n=1000, n=1500 dan p=0.5.
• Melakukan pengulangan dengan p yang berbeda-beda yaitu p=0.1, p=0.8.
B. RUMUSAN MASALAH
Dalam makalah ini dijelaskan proses pembentukan grafik pengendali bivariat berdasarkan estimasi densitas kernel untuk dua titik sampel dan untuk banyaknya sampel dengan n yang berbeda-beda sehingga dapat digunakan untuk mengidentifikasi titik-titik sampel yang out of control.
C.TUJUAN PENULISAN
Dengan Memilih tema dan Menyusun buku ini diharapkan agar para pembaca ,serta penulis sendiri mampu memahami apa itu Joint kernel Density Estimate serta teknik-teknik dalam meningkatkan pemahaman Joint Kernel Density Estimate. Sekaligus, buku ini dibuat untuk memenuhi tugas perkuliahan, yaitu Mata kuliah Softskill Desain Permodelan Grafik. Kami sebagai mahasiswa dari jurusan teknologi industry.
BAB II Teori Tentang Konsep Visualisasi
Kernels
Kita telah mengetahui Gaussian kernel, tetapi hal ini tidak hanya tersedia pilihan. Estimasi Densitas Kernel (KDE) dapat digunakan dengan fungsi kernel apapun, dan kernel yang berbeda menyebabkan perkiraan kepadatan dengan karakteristik yang berbeda. Scipy KDE implementasi berisi hanya Kernel Gaussian umum. Statsmodels berisi tujuh kernel, sementara belajar Scikit berisi kernel enam, yang masing-masing dapat digunakan dengan satu dari sekitar selusin jarak metrik, mengakibatkan berbagai sangat fleksibel bentuk efektif kernel.
Berikut ini visualisasi cepat bentuk enam kernel yang tersedia di Scikit-belajar. Untuk kejelasan, fungsi plot_kernels() yang digunakan di sini didefinisikan pada akhir notebook:
In [8]:
plot_kernels()
Kernel berbagai bentuk menyebabkan penduga dengan karakteristik yang sangat berbeda. Untuk beberapa contoh ini dalam tindakan, lihat dokumentasi Scikit-belajar atau contoh-contoh AstroML.
Estimasi densitas kernel
Dalam statistik, estimasi densitas kernel (KDE) adalah cara untuk memperkirakan dengan fungsi kepadatan probabilitas dari variabel acak. Estimasi densitas kernel adalah masalah penghalusan data mendasar di mana kesimpulan tentang populasi yang dibuat berdasarkan data yang terbatas sampel. Dalam beberapa bidang seperti pemrosesan sinyal dan ekonometrik disebut juga metode window Parzen-Rosenblatt, setelah Emanuel Parzen dan Murray Rosenblatt, yang biasanya dikreditkan dengan mandiri menciptakan itu dalam bentuk yang sekarang.
Gambar diatas: Estimasi densitas kernel dari 100 terdistribusi normal nomor acak menggunakan bandwidth smoothing yang berbeda.
Definisi
Biarkan (x 1, x 2, …, x n) menjadi independen dan terdistribusi secara identik sampel yang diambil dari beberapa distribusi dengan tidak diketahui kepadatan f
. Kami tertarik dalam memperkirakan bentuk fungsi f
ini. Its kepadatan kernel estimator adalah
\overset{\mathcircumflex}{f}_{h}\left(x\right)=\frac{1}{n}\stackrel{[}{i}=1]{n}{\sum}K_{h}\left(x-x_{i}\right)=\frac{1}{nh}\stackrel{[}{i}=1]{n}{\sum}K\left(\frac{x-x_{i}}{h}\right)
dimana K (\bullet
) adalah kernel – fungsi non-negatif yang mengintegrasikan ke satu dan memiliki berarti nol – dan h> 0 adalah smoothing parameter yang disebut bandwidth. Sebuah kernel dengan subscript h disebut kernel skala dan didefinisikan sebagai K h (x) = 1 / h K (x / h). Intuitif seseorang ingin memilih h sekecil data memungkinkan, namun selalu ada trade-off antara bias estimator dan varians nya; lebih pada pilihan bandwidth bawah.
Berbagai fungsi kernel yang umum digunakan: seragam, segitiga, biweight, triweight, Epanechnikov, yang normal, dan lain-lain. The Epanechnikov kernel optimal dalam arti kesalahan berarti persegi, [3] meskipun hilangnya efisiensi kecil untuk kernel terdaftar sebelumnya, [4] dan karena sifat matematika yang strategis, kernel normal sering digunakan K (x) = \varphi
(x), di mana \varphi
adalah normal standar fungsi kepadatan.
Pembangunan perkiraan kepadatan kernel menemukan interpretasi dalam bidang luar estimasi kepadatan. [5] Sebagai contoh, dalam termodinamika, ini setara dengan jumlah panas yang dihasilkan ketika kernel panas (solusi mendasar untuk persamaan panas) ditempatkan pada setiap lokasi data titik x i. Metode serupa digunakan untuk membangun operator Laplace diskrit pada awan titik untuk belajar berjenis.
Estimasi densitas kernel yang erat kaitannya dengan histogram, tetapi dapat memiliki sifat-sifat seperti kehalusan atau kontinuitas dengan menggunakan kernel yang cocok. Untuk melihat ini, kita membandingkan pembangunan histogram dan kepadatan kernel estimator, menggunakan titik data 6 ini: x 1 = -2,1, x 2 = -1,3, x 3 = -0,4, x 4 = 1,9, x 5 = 5.1, x 6 = 6.2. Untuk histogram, pertama sumbu horisontal dibagi menjadi sub-interval atau sampah yang mencakup rentang data. Dalam hal ini, kami memiliki 6 tempat sampah masing-masing lebar 2. Setiap kali sebuah titik data berada di dalam interval ini, kami menempatkan kotak tinggi 12/1. Jika lebih dari satu titik data jatuh di dalam bin sama, kita tumpukan kotak di atas satu sama lain.
Untuk estimasi densitas kernel, kita menempatkan sebuah kernel normal dengan varians 2,25 (ditandai dengan garis putus-putus merah) pada masing-masing titik data x i. Kernel dijumlahkan untuk membuat estimasi densitas kernel (kurva biru solid). Kelancaran estimasi densitas kernel jelas dibandingkan dengan discreteness histogram, seperti perkiraan kepadatan kernel konvergen lebih cepat untuk kepadatan yang mendasari berlaku untuk variabel acak kontinu.
Perbandingan histogram (kiri) dan kepadatan kernel perkiraan (kanan) dibangun menggunakan data yang sama. 6 kernel individu merah putus-putus kurva, kepadatan kernel memperkirakan kurva biru. Titik data yang plot karpet pada sumbu horisontal.
Kernel estimasi dengan Python
Ada beberapa pilihan yang tersedia untuk komputasi perkiraan kepadatan kernel dengan Python. Pertanyaannya pelaksanaan KDE optimal untuk setiap situasi, bagaimanapun, tidak sepenuhnya langsung, dan banyak tergantung pada apa tujuan tertentu. Berikut ini adalah implementasi KDE empat yang aku sadar dalam tumpukan SciPy Scikits:
• Di SciPy: gaussian_kde.
• Di Statsmodels: KDEUnivariate dan KDEMultivariate .
• Di Scikit-belajar: KernelDensity .
Masing-masing memiliki keuntungan dan kerugian, dan masing-masing memiliki area penerapan. Saya akan mulai dengan sebuah table rangkuman kekuatan dan kelemahan masing-masing, sebelum membahas setiap fitur secara lebih rinci dan menjalankan beberapa benchmark sederhana untuk mengukur biaya komputasi mereka:
Implementasi empat yang disebutkan di atas memiliki antarmuka yang sangat berbeda. Untuk contoh dan benchmark di bawah ini, kita akan mulai dengan mendefinisikan antarmuka yang seragam untuk semua empat, dengan asumsi dimensi data input. Fungsi-fungsi berikut harus membuat jelas bagaimana membandingkan antarmuka:
In [1]:
from sklearn.neighbors import KernelDensity
from scipy.stats import gaussian_kde
from statsmodels.nonparametric.kde import KDEUnivariate
from statsmodels.nonparametric.kernel_density import KDEMultivariate
def kde_scipy(x, x_grid, bandwidth=0.2, **kwargs):
“””Kernel Density Estimation with Scipy”””
# Note that scipy weights its bandwidth by the covariance of the
# input data. To make the results comparable to the other methods,
# we divide the bandwidth by the sample standard deviation here.
kde = gaussian_kde(x, bw_method=bandwidth / x.std(ddof=1), **kwargs)
return kde.evaluate(x_grid)
def kde_statsmodels_u(x, x_grid, bandwidth=0.2, **kwargs):
“””Univariate Kernel Density Estimation with Statsmodels”””
kde = KDEUnivariate(x) kde.fit(bw=bandwidth, **kwargs)
return kde.evaluate(x_grid)
def kde_statsmodels_m(x, x_grid, bandwidth=0.2, **kwargs):
“””Multivariate Kernel Density Estimation with Statsmodels”””
kde = KDEMultivariate(x, bw=bandwidth * np.ones_like(x),
var_type=’c’, **kwargs)
return kde.pdf(x_grid)
def kde_sklearn(x, x_grid, bandwidth=0.2, **kwargs):
“””Kernel Density Estimation with Scikit-learn”””
kde_skl = KernelDensity(bandwidth=bandwidth, **kwargs)
kde_skl.fit(x[:, np.newaxis])
# score_samples() returns the log-likelihood of the samples
log_pdf = kde_skl.score_samples(x_grid[:, np.newaxis])
return np.exp(log_pdf)
kde_funcs = [kde_statsmodels_u, kde_statsmodels_m, kde_scipy, kde_sklearn]
kde_funcnames = [‘Statsmodels-U’, ‘Statsmodels-M’, ‘Scipy’, ‘Scikit-learn’]
print “Package Versions:”
import sklearn; print ” scikit-learn:”, sklearn.__version__
import scipy; print ” scipy:”, scipy.__version__
import statsmodels; print ” statsmodels:”, statsmodels.__version__
Package Versions:
scikit-learn: 0.14.1
scipy: 0.13.1
statsmodels: 0.5.0
Karena beberapa dari fungsi baru (secara khusus, KernelDensity pengukur ditambahkan dalam versi 0.14 Scikit-belajar), saya menambahkan eksplisit cetak-keluar dari versi yang digunakan dalam menjalankan notebook ini. Sekarang bahwa kita sudah didefinisikan antarmuka ini, mari kita lihat hasil dari pendekatan KDE empat. Kita akan mulai dengan perintah backend normal matplotlib, dan kemudian plot visualisasi dari hasil empat pada data yang sama 1 Dimensi bimodal:
In [2]: %matplotlib inline import numpy as np import matplotlib.pyplot as plt
In [3]: from scipy.stats.distributions import norm
# The grid we’ll use for plotting x_grid = np.linspace(-4.5, 3.5, 1000)
# Draw points from a bimodal distribution in 1D np.random.seed(0) x = np.concatenate([norm(-1,1.).rvs(400), norm(1, 0.3).rvs(100)])
pdf_true = (0.8 * norm(-1,1).pdf(x_grid) + 0.2 * norm(1,0.3).pdf(x_grid))
# Plot the three kernel density estimates fig, ax = plt.subplots(1, 4, sharey=True, figsize=(13, 3)) fig.subplots_adjust(wspace=0)
for i in range(4):
pdf = kde_funcs[i](x, x_grid, bandwidth=0.2)ax[i].plot(x_grid, pdf, color=’blue’, alpha=0.5, lw=3)ax[i].fill(x_grid, pdf_true, ec=’gray’, fc=’gray’, alpha=0.4)ax[i].set_title(kde_funcnames[i]) ax[i].set_xlim(-4.5, 3.5)
from IPython.display import HTML HTML(“<font color=’#666666′>Gray = True underlying distribution</font><br>” “<font color=’6666ff’>Blue = KDE model distribution (500 pts)</font>”)
Out[3]:
Gray = True underlying distribution Blue = KDE model distribution (500 pts)
Hasil sama, seperti yang kita harapkan: semua empat algoritma efektif komputasi hasil yang sama dengan cara yang berbeda.
Fitur dari algoritma
Temukan Bandwidth
Kernel density perkiraan (KDE) dengan bandwidth yang berbeda dari sampel acak dari 100 poin dari distribusi normal standar. Grey: density benar (standar normal). Red: KDE dengan h = 0,05. Black: KDE dengan h = 0,337. Hijau: KDE dengan h = 2.
Bandwidth dari kernel adalah parameter bebas yang menunjukkan pengaruh yang kuat pada perkiraan yang dihasilkan. Untuk menggambarkan efeknya, kita mengambil simulasi sampel acak dari standar distribusi normal (diplot pada paku biru di petak karpet pada sumbu horizontal). Kurva abu-abu adalah densitas benar (kepadatan normal dengan mean 0 dan varians 1). Sebagai perbandingan, kurva merah undersmoothed karena mengandung terlalu banyak artefak Data palsu yang timbul dari menggunakan h bandwith = 0,05, yang terlalu kecil. Kurva hijau oversmoothed karena menggunakan bandwidth h = 2 mengaburkan banyak struktur dasar. Kurva hitam dengan bandwidth h = 0,337 dianggap optimal merapikan sejak estimasi densitas dekat dengan kepadatan yang benar.
Kriteria optimalitas yang paling umum digunakan untuk memilih parameter ini adalah yang diharapkan L_{2}
fungsi risiko, juga disebut berarti terintegrasi kesalahan kuadrat:
MISE\left(h\right)=E\int\left(\overset{\mathcircumflex}{f}_{h}\left(x\right)-f\left(x\right)\right)^{2}dx.
Di bawah asumsi lemah pada f
dan K, [1] [2] MISE (h) = AMISE (h) + o (1 / (nh) + h 4) di mana o adalah sedikit notasi o. AMISE adalah MISE Asymptotic yang terdiri dari dua istilah terkemuka
AMISE\left(h\right)=\frac{R\left(K\right)}{nh}+\frac{1}{4}m_{2}\left(K\right)^{2}h^{4}R\left(f^{\prime\prime}\right)
dimanaR\left(g\right)=\int g\left(x\right)^{2}dx
untuk fungsi g, m_{2}\left(K\right)=\int x^{2}K\left(x\right)dx
dan f^{\prime\prime}
adalah turunan kedua f
. Minimum AMISE ini adalah solusi untuk persamaan diferensial ini
\frac{\partial}{\partial h}AMISE\left(h\right)=-\frac{R\left(K\right)}{nh^{2}}+m_{2}\left(K\right)^{2}h^{3}R\left(f^{\prime\prime}\right)=0
atau
h_{AMISE}=\frac{R\left(K\right)^{1/5}}{m_{2}\left(K\right)^{2/5}R\left(f^{\prime\prime}\right)^{1/5}n^{1/5}}
Baik AMISE maupun formula h AMISE dapat digunakan secara langsung karena mereka melibatkan diketahui fungsi kepadatan f
atau turunan f
kedua ”, sehingga berbagai, metode berbasis data otomatis telah dikembangkan untuk memilih bandwidth. Banyak penelitian tinjauan telah dilakukan untuk membandingkan efficacities mereka, [7] [8] [9] [10] [11] [12] [13] dengan konsensus umum bahwa plug-in pemilih yang [5] [14] dan validasi silang penyeleksi [15] [16] [17] yang paling berguna atas berbagai data set.
Mengganti setiap h bandwith yang memiliki urutan asimtotik yang sama \left(n^{-1/5}\right)
sebagai h AMISE ke AMISE memberikan yang AMISE (h) = O \left(n^{-4/5}\right)
, di mana O adalah notasi o besar. Hal ini dapat menunjukkan bahwa, di bawah asumsi yang lemah, tidak bisa eksis estimator non-parametrik yang menyatu pada tingkat yang lebih cepat daripada estimator kernel. [18] Perhatikan bahwa \left(n^{-4/5}\right)
tingkat lebih lambat dibandingkan dengan khas \left(n^{-1}\right)
konvergensi tingkat metode parametrik.
Jika bandwidth tidak diadakan tetap, tetapi bervariasi tergantung lokasi baik estimasi (balon estimator) atau sampel (pointwise estimator), ini menghasilkan metode sangat kuat disebut adaptif atau variabel estimasi kepadatan kernel bandwith.
Estimasi praktis bandwidth
Jika fungsi dasar Gaussian digunakan untuk mendekati univariat data, dan kepadatan yang mendasari yang diperkirakan adalah Gaussian maka dapat ditunjukkan bahwa pilihan optimal untuk h adalah [19]
h=\left(\frac{4\overset{\mathcircumflex}{\sigma^{5}}}{3n}\right)^{\frac{1}{5}}\thickapprox1.06\overset{\mathcircumflex}{\sigma}n^{-1/5},
dimana\overset{\mathcircumflex}{\sigma}
adalah standar deviasi dari sampel. Pendekatan ini disebut pendekatan normal distribusi, pendekatan Gaussian, atau Silverman aturan ‘s praktis.
Temukan bandwidth untuk estimasi kepadatan kernel distribusi berat ekor dikatakan relatif sulit.
Kaitannya dengan estimator densitas fungsi karakteristik
Mengingat sampel (x 1, x 2, …, x n), adalah wajar untuk memperkirakan fungsi karakteristik \varphi
(t) = E \left[e^{ITX}\right]
sebagai
\overset{\mathcircumflex}{\varphi}\left(t\right)=\frac{1}{n}\stackrel{[}{j}=1]{n}{\sum}e^{itxj}
Mengetahui fungsi karakteristik, adalah mungkin untuk menemukan yang sesuai fungsi kepadatan probabilitas melalui Fourier transform rumus. Salah satu kesulitan dengan menerapkan rumus inversi ini adalah bahwa hal itu mengarah ke divergen terpisahkan, karena perkiraan \overset{\mathcircumflex}{\varphi}\left(t\right)
tidak dapat diandalkan untuk t besar ‘s. Untuk menghindari masalah ini, estimator \overset{\mathcircumflex}{\varphi}\left(t\right)
dikalikan dengan fungsi redaman \psi
h (t) = \psi
(ht), yang sama dengan 1 pada asal dan kemudian jatuh ke 0 di tak terhingga. The “parameter bandwidth” h kontrol seberapa cepat kita mencoba untuk meredam fungsi \overset{\mathcircumflex}{\varphi}\left(t\right)
. Khususnya ketika h kecil, maka \psi
h (t) akan menjadi sekitar satu untuk berbagai macam t ‘s, yang berarti bahwa \overset{\mathcircumflex}{\varphi}\left(t\right)
tetap praktis tidak berubah di wilayah yang paling penting dari t ‘s.
Pilihan yang paling umum untuk fungsi \psi
adalah baik fungsi seragam \psi
(t) = 1 \left\{ -1\leq t\leq1\right\}
, yang secara efektif berarti truncating interval integrasi dalam rumus inversi untuk [-1 / jam, 1 / h] , atau fungsi gaussian \psi
(t) = e^{-xt2}
. Setelah fungsi \psi
telah dipilih, rumus inversi dapat diterapkan, dan estimator densitas akan
\overset{\mathcircumflex}{f}\left(x\right)=\sideset{\frac{1}{2\pi}}{_{-\infty}^{+\infty}}\int\overset{\mathcircumflex}{\varphi}\left(t\right)\psi_{h}\left(t\right)e^{-itx}dt=\sideset{\frac{1}{2\pi}}{_{-\infty}^{+\infty}}\int\frac{1}{n}\stackrel{[}{j}=1]{n}{\sum}e^{it\left(x_{j}-x\right)}\psi\left(ht\right)dt
=\frac{1}{nh}\stackrel{[}{j}=1]{n}{\sum}\sideset{\frac{1}{2\pi}}{_{-\infty}^{+\infty}}\int e^{-i\left(ht\right)\frac{x-x_{j}}{h}}\psi\left(ht\right)d\left(ht\right)=\frac{1}{nh}\stackrel{[}{j}=1]{n}{\sum}K\left(\frac{x-x_{j}}{h}\right),
di mana K adalah Transformasi Fourier dari fungsi \psi
redaman. Dengan demikian estimator densitas kernel bertepatan dengan karakteristik kepadatan fungsi estimator.
Bandwidth seleksi
Pemilihan bandwidth adalah bagian penting dari KDE. Untuk data input yang sama, bandwidth yang berbeda dapat menghasilkan hasil yang sangat berbeda: In [4]:
fig, ax = plt.subplots()
for bandwidth in [0.1, 0.3, 1.0]:
ax.plot(x_grid, kde_sklearn(x, x_grid, bandwidth=bandwidth),
label=’bw={0}’.format(bandwidth), linewidth=3, alpha=0.5)
ax.hist(x, 30, fc=’gray’, histtype=’stepfilled’, alpha=0.3, normed=True)
ax.set_xlim(-4.5, 3.5) ax.legend(loc=’upper left’)
Out[4]:
<matplotlib.legend.Legend at 0x108b8c3d0>
Menggunakan bandwidth yang berbeda dapat menyebabkan ide-ide yang sama sekali berbeda dari sifat dasar data! Mengingat pentingnya bandwidth, bagaimana mungkin Anda menentukan bandwidth yang optimal untuk masalah tertentu? Ada dua kelas pendekatan untuk masalah ini: dalam masyarakat statistik, ini umum untuk menggunakan aturan referensi, mana optimal bandwidth diperkirakan dari bentuk-bentuk teoritis yang didasarkan pada asumsi tentang distribusi data. Aturan referensi umum adalah aturan Silverman’s, yang diturunkan untuk univariat KDE dan disertakan dalam implementasi Scipy dan Statsmodels. Aturan referensi lain potensi adalah yang berdasarkan kriteria informasi, terkenal AIC dan BIC. Dalam dunia pembelajaran mesin, penggunaan referensi aturan kurang umum. Sebaliknya, pendekatan empiris seperti lintas validasi sering digunakan. Di salib validasi, model adalah cocok untuk bagian dari data, dan kemudian kuantitatif metrik dihitung untuk menentukan seberapa baik model ini sesuai dengan data yang tersisa. Sebuah pendekatan empiris untuk model parameter pilihan sangat fleksibel, dan dapat digunakan tanpa distribusi data yang mendasarinya. Karena berbagai referensi aturan umumnya tergantung pada asumsi-asumsi (sering meragukan) tentang distribusi mendasari data, pemilihan bandwidth yang berbasis di kayu salib-validasi dapat menghasilkan lebih banyak hasil yang dapat dipercaya untuk dunia nyata dataset. Skema cross-validation meninggalkan-satu-out built-in Statsmodels KDEMultivariate kelas. Untuk dataset besar, namun, meninggalkan-satu-out cross-validation bisa sangat lambat. Scikit-Pelajari tidak saat ini menyediakan built-in lintas validasi dalam pengukur KernelDensity, tapi alat-alat standar lintas validasi dalam modul dapat diterapkan cukup mudah, seperti ditunjukkan pada contoh di bawah.
Belajar Bandwidth Cross-Validation di scikit
Menggunakan salib validasi dalam belajar Scikit mudah dengan GridSearchCV meta-pengukur :
In [5]:
from sklearn.grid_search import GridSearchCV
grid = GridSearchCV(KernelDensity(),
{‘bandwidth’: np.linspace(0.1, 1.0, 30)},
cv=20) # 20-fold cross-validation
grid.fit(x[:, None]) print grid.best_params_ {‘bandwidth’: 0.19310344827586207}
Menurut nilai cross-validation (yaitu kemungkinan maksimum), bandwidth yang terbaik adalah di sekitar 0.19. Mari kita plot hasil:
In [6]:
kde = grid.best_estimator_ pdf = np.exp(kde.score_samples(x_grid[:, None]))
fig, ax = plt.subplots()
ax.plot(x_grid, pdf, linewidth=3, alpha=0.5, label=’bw=%.2f’ % kde.bandwidth) ax.hist(x, 30, fc=’gray’, histtype=’stepfilled’, alpha=0.3, normed=True)
ax.legend(loc=’upper left’)
ax.set_xlim(-4.5, 3.5);
Kita melihat bahwa hasil cross-validation a bandwidth yang dekat dengan apa yang kita mungkin pilih oleh mata, dan perkiraan kepadatan dihasilkan erat mencerminkan distribusi data yang mendasarinya.
Heterogen Data
Salah satu keuntungan yang Statsmodels’ KDEMultivariate memiliki algoritma lainnya adalah kemampuannya untuk menangani data heterogen, yaitu campuran kontinyu, memerintahkan diskrit, dan unordered bijaksana variabel. Semua lain implementasi membutuhkan dataset homogen. Meskipun masalah heterogen menarik, saya tidak akan membahas lebih di sini. Untuk lebih jelasnya, lihat dokumentasi KDEMultivariate.
Perhitungan berbasis FFT
Untuk dataset besar, perkiraan kepadatan kernel yang dapat dihitung secara efisien melalui teorema lilitan menggunakan transformasi Fourier cepat. Hal ini memerlukan binning data, sehingga pendekatan yang dengan cepat menjadi tidak efisien dalam dimensi yang lebih tinggi. Algoritma empat yang dibahas di sini, hanya Statsmodels’ KDEUnivariate mengimplementasikan FFT berbasis KDE. Seperti yang akan kita lihat di bawah, FFT menyediakan beberapa keuntungan komputasi untuk sejumlah besar poin, tapi dalam kebanyakan situasi tidak seefektif berbasis pohon KDE implementasi.
Perhitungan berbasis pohon
Untuk M evaluasi N poin, perhitungan KDE naif memerlukan perhitungan O O [MN] [MN] (yaitu perhitungan jarak antara setiap pasangan input/output). Hal ini menempatkan KDE dalam kategori yang sama sebagai tetangga terdekat, N-titik fungsi korelasi dan regresi proses Gaussian, semuanya adalah contoh dari masalah Generalized N-tubuh yang dapat efisien dihitung menggunakan data khusus struktur seperti pohon KD (saya dibahas spasial pohon dalam konteks pencarian tetangga terdekat dalam posting blog sebelumnya).
Ide utama adalah ini: jika Anda dapat menunjukkan bahwa query titik Q0Q0 geometris jauh dari serangkaian pelatihan poin {Ti} {Ti}, maka Anda tidak perlu menghitung setiap kernel berat antara Q0Q0 dan poin di {Ti} {Ti}: cukup untuk menghitung satu kernel berat pada jarak rata-rata, dan menggunakannya sebagai proxy untuk yang lain. Dengan pertimbangan yang cermat dari batas-batas pada jarak dan toleransi kesalahan maksimum untuk hasil akhir, dimungkinkan untuk sangat mengurangi jumlah operasi diperlukan untuk perhitungan KDE.
Untuk rilis 0,14 Scikit-belajar, saya menulis sebuah implementasi KDE efisien yang dibangun di KD pohon dan pohon bola. Dengan menetapkan parameter dengan rtol (relatif toleransi) dan atol (mutlak toleransi), dimungkinkan untuk menghitung perkiraan kepadatan sangat cepat perkiraan kernel pada setiap tingkat yang diinginkan akurasi. Hasil akhir pp algorithmically dijamin akan memuaskan
abs(p−ptrue)<atol+rtolptrue
Skema ini secara efektif set up tradeoff antara waktu perhitungan dan akurasi. Seperti yang akan kita lihat di bawah, bahkan marjinal penurunan akurasi (katakanlah, memungkinkan kesalahan 1 bagian dalam 108108) dapat menyebabkan keuntungan yang mengesankan dalam efisiensi komputasi.
Efisiensi komputasi
Berikutnya datang menyenangkan bagian: membandingkan efisiensi komputasi berbagai algoritma. Di sini kita akan melihat waktu perhitungan sebagai fungsi dari jumlah poin dalam distribusi untuk kasus 1-dimensi. Seperti disebutkan di atas, beberapa algoritma juga menerapkan perhitungan yang multi-dimensi: skala dengan jumlah poin harus tidak mengubah lumayan dalam kasus multi-dimensi. Di sini dan seluruh, kita akan menghitung KDE untuk 5000 query poin. Untuk kejelasan, fungsi plot_scaling yang digunakan di sini didefinisikan pada akhir notebook: jika Anda men-download dan menjalankan notebook ini, silakan gulir ke bawah dan mengeksekusi sel pertama.
Scaling dengan jumlah poin
Pertama kita akan melihat skala dengan jumlah poin dalam distribusi masukan, menyebar dari 10 poin ke 10.000 poin:
In [9]:
plot_scaling(N=np.logspace(1, 4, 10),
kwds={‘Statsmodels-U’:{‘fft’:False}});
SciPy algoritma (jalur merah) pameran O diharapkan [N] O [N] scaling untuk implementasi KDE naif. Implementasi berbasis pohon di scikit-belajar sedikit lebih baik untuk sejumlah besar poin (untuk dataset kecil, overhead bangunan pohon mendominasi). Cara statsmodels kedua lumayan lambat: khususnya, implementasi KDEMultivariate menampilkan overhead komputasi yang relatif besar.
Namun, benchmark ini tidak sepenuhnya adil untuk algoritma univariat Statsmodels atau Scikit-belajar algoritma. Untuk KDEUnivariate, kami tidak menggunakan versi FFT perhitungan; untuk Scikit-belajar, kami telah menetapkan dengan rtol dan atol ke nol, efektif meminta algoritma untuk perhitungan sempurna tepat yang memungkinkan node pohon sangat sedikit untuk dipotong dari perhitungan.
Mari kita mengubah ini, menggunakan FFT perhitungan untuk statsmodels dan mengatur dengan rtol = 1E-4 untuk scikit-belajar. Pengaturan kedua mengatakan bahwa kita ingin komputasi lebih cepat, dengan mengorbankan menerima kesalahan 0,01% dalam hasil akhir:
In [10]:
plot_scaling(N=np.logspace(1, 4, 10),
rtol=1E-4,
kwds={‘Statsmodels-U’:{‘fft’:True}});
Perhitungan FFT secara signifikan kecepatan perhitungan univariat statsmodels dalam hal jumlah besar poin. Pemenang sebenarnya di sini, meskipun, adalah Scikit-Pelajari penerapan: dengan membiarkan kesalahan Bagian 1 dalam 10.000, kita telah melesat perhitungan untuk dataset terbesar oleh faktor tambahan 5 atau lebih, membuat urutan besarnya lebih cepat daripada algoritma terbaik berikutnya.
Ketergantungan pada dengan rtol
Anda mungkin bertanya-tanya apa efek dengan rtol pada kecepatan perhitungan. Dalam kebanyakan situasi untuk scikit-belajar pengukur, meningkatkan dengan rtol akan secara langsung mengarah pada peningkatan efisiensi komputasi, sebagai node pohon jauh dapat dipotong sebelumnya dalam perhitungan.
Untuk menggambarkan hal ini, kita akan memplot perhitungan waktu sebagai fungsi dari dengan rtol, dari 11 bagian dalam 10161016 (efektif yang mengambang titik presisi pada mesin 64-bit) sepanjang jalan hingga 11 bagian dalam 1010 (yakni 10% kesalahan pada hasil):
In [11]: plot_scaling(N=1E4,
rtol=np.logspace(-16, -1, 10),
bandwidth=0.2);
Plot ini menampilkan langsung tradeoff antara presisi dan efisiensi yang diaktifkan oleh Scikit-belajar dari algoritma berbasis pohon. Setiap variasi dalam waktu untuk algoritma lain adalah hanya Statistik kebisingan: mereka tidak bisa mengambil keuntungan dari dengan rtol.
Ketergantungan pada Bandwidth
Satu efek agak kontra-intuitif berbasis pohon KDE perkiraan adalah bahwa bandwidth menjadi pertimbangan penting dalam waktu untuk komputasi. Hal ini karena bandwidth efektif mengontrol seberapa “dekat” poin adalah satu sama lain.
Ketika poin sangat jauh terpisah dalam kaitannya dengan ukuran kernel, kontribusi mereka terhadap kepadatan adalah sangat mendekati nol. Dalam kisaran ini, seluruh rombongan poin tersebut akan dihapus dari perhitungan. Ketika poin sangat dekat bersama-sama dalam kaitannya dengan ukuran kernel, jarak efektif adalah nol, dan seluruh rombongan tersebut poin di pohon dapat dianggap, sebagai sebuah kelompok, berkontribusi kontribusi maksimal kernel.
Perhitungan KDE berbasis pohon di Scikit-belajar mengambil keuntungan dari situasi ini, menyebabkan ketergantungan yang kuat waktu perhitungan pada bandwidth: untuk bandwidth yang sangat besar dan sangat kecil, sangat cepat. Untuk bandwidth di suatu tempat di tengah, bisa lebih lambat dari algoritma lainnya, terutama karena overhead komputasi membangun dan melintasi pohon:
In [12]:
plot_scaling(N=1E4, rtol=1E-4,
bandwidth=np.logspace(-4, 3, 10));
Untungnya bandwidth tidak efisien umumnya terlalu besar untuk menjadi berguna dalam praktek, dan bandwidth di kisaran lebih cepat menguntungkan untuk sebagian besar masalah.
Perhatikan bahwa hanya hasil belajar Scikit sangat tergantung pada bandwidth: implementasi lain punya waktu perhitungan konstan untuk dalam kesalahan acak. Ini adalah karena implementasi KDE berbasis pohon yang digunakan oleh Scikit-belajar, karena alasan-alasan yang dibahas di atas. Bandwidth optimal dekat 0,15 terletak di wilayah komputasi relatif cepat, terutama dibandingkan dengan algoritma alternatif.
Ketergantungan pada Kernel
Seperti yang Anda duga, prinsip yang sama yang menyebabkan ketergantungan perhitungan waktu bandwidth juga menyebabkan ketergantungan perhitungan waktu pada bentuk kernel yang digunakan. Untuk jauh poin, kernel beberapa memiliki bobot lebih dekat ke nol daripada yang lain: dalam kasus kernel dengan celana pendek “keras” (seperti tophat kernel), jauh poin berkontribusi persis nol kepadatan, dan dengan demikian speedup akan menyadari bahkan jika dengan rtol dan atol adalah nol.
Pada ekstrem yang berlawanan, poin yang sangat dekat dibandingkan dengan ukuran kernel, kernel yang sangat “datar” (misalnya tophat kernel) akan memungkinkan seluruh rombongan poin untuk dipertimbangkan sekaligus, ketika kernel yang kurang datar (misalnya linear atau eksponensial kernel) tidak akan mengakui efisiensi tersebut.Kita bisa melihat ini di bawah ini: di sini kita akan plot waktu perhitungan sebagai fungsi dari lebar kernel untuk implementasi Scikit-belajar, menggunakan beberapa kernel:
In [13]:
plot_scaling_vs_kernel(kernels=[‘tophat’, ‘linear’, ‘exponential’,
‘gaussian’],
bandwidth=np.logspace(-4, 3, 10),
N=1E4, rtol=1E-4);
Melihat dua daerah menarik: untuk bandwidth yang sangat kecil, kernel dengan keras cutoff (tophat, linear) keluar melakukan kernel dengan sebuah lancip yang luas (gaussian, eksponensial). Dan tapered kernel yang jatuh lebih cepat (gaussian, dengan p∼exp p∼exp (−d2) (−d2)) yang lebih efisien dihitung dari kernel yang jatuh lebih perlahan-lahan (eksponensial, dengan p∼exp p∼exp (−d) (−d)).
Di ujung lain, kernel dengan sangat datar profil dekat nol (tophat, gaussian) menunjukkan peningkatan bandwidth besar, sementara kernel dengan profil yang sangat curam dekat zero (linier, eksponensial) menunjukkan tidak ada perbaikan: mereka mencapai batas asimtotik cara dimana O O [MN] [MN] jarak harus dihitung.
Untuk mengukur baik, berikut adalah scalings perhitungan dengan rtol dan dengan N:
In [14]: plot_scaling_vs_kernel(kernels=[‘tophat’, ‘linear’, ‘exponential’,
‘gaussian’],
bandwidth=0.15, N=1E4, rtol=np.logspace(-16, -1, 10));
Seperti yang kami harapkan, untuk ukuran wajar kernel, dengan rtol tidak signifikan untuk kernel dengan cutoff keras, dan menjadi lebih signifikan adalah “sayap” kernel yang lebih luas. Skala dengan N juga karena kami telah mengharapkan:
In [15]:
plot_scaling_vs_kernel(kernels=[‘tophat’, ‘linear’, ‘exponential’,
‘gaussian’], bandwidth=0.15, rtol=1E-4, N=np.logspace(1, 4, 10));
Ketergantungan ini waktu perhitungan bentuk bandwidth dan kernel adalah masalah untuk diingat ketika Anda memilih algoritma KDE: dalam kasus pendekatan berbasis pohon, bandwidth dan kernel dapat masalah untuk lagu beberapa kali lipat dalam perhitungan waktu.
MATLAB KDE Class Description
Kelas KDE adalah kelas matlab umum untuk k-dimensi kernel estimasi. Tertulis dalam campuran matlab “.m” file dan MEX C++ code. Dengan demikian, untuk menggunakannya Anda akan perlu untuk dapat mengkompilasi kode C++ code Matlab. Perhatikan bahwa default compiler untuk Windows tidak mendukung c + +, sehingga Anda akan membutuhkan GCC di Linux, atau GCC atau Visual C++ for Windows. Pertumpahan darah persediaan lingkungan pengembangan bagus bersama dengan kompilator MinGW. Lihat Halaman ini untuk membantu menyiapkan MEX dengan MinGW.
[Catatan: karena beberapa dikompilasi mexglx dan dll file disertakan, Anda mungkin tidak perlu untuk melakukan kompilasi ulang toolbox sekali; Namun, saya merekomendasikan hal ini jika mungkin alasan kompatibilitas.]
Kernel yang didukung adalah:
• Gaussian
• Epanetchnikov (truncated quadratic)
• Laplacian (Double-exponential)
Untuk perkiraan kepadatan multivarian, kode mendukung produk kernel–kernel yang produk fungsi kernel di masing-masing dimensi. Misalnya, untuk Gaussian kernel ini setara dengan memerlukan kovarians diagonal. Juga dapat mendukung bandwidth non-seragam kernel–yaitu bandwidth yang berbeda atas kernel pusat.
Implementasi menggunakan “kd-pohon”, representasi heirarchical set titik yang cache cukup statistik tentang lokasi jalur dll untuk mencapai potensi speedups dalam perhitungan. Untuk Epanetchnikov kernel ini dapat menerjemahkan ke dalam speedups dengan tidak kehilangan presisi; tetapi untuk kernel dengan dukungan yang tak terbatas memberikan perkiraan tingkat toleransi, yang memungkinkan timbal balik antara kecepatan evaluasi kualitas dan komputasi. Secara khusus, kami menerapkan Alex Gray’s “Dual pohon” evaluasi algoritma; Lihat abu-abu dan Moore, “sangat cepat multivarian Kernel estimasi menggunakan melalui komputasi geometri”, dalam proses, 2003 Rapat Manzanar bersama untuk lebih jelasnya.
Ini memberikan parameter toleransi yang merupakan kesalahan persen (dari yang tepat, N\mathcircumflex
2 perhitungan) pada nilai setiap dievaluasi titik. Dalam umum, “toleransi” parameter dalam kode matlab / catatan mengacu pada toleransi persen ini. Kesalahan persentase ini diterjemahkan menjadi mutlak kesalahan aditif pada log berarti-kemungkinan, misalnya. Pengecualian untuk ini adalah fungsi gradien calcuation, yang menghitung menggunakan nilai mutlak toleransi. Ini karena sulitnya mencari persentase pasti ketika fungsi dihitung tidak benar-benar positif.
Kami juga baru dilaksanakan disebut meningkat Fast Gauss mengubah, dijelaskan dalam [Yang, Duraiswami, dan Gumerov, “Peningkatan cepat Gauss mengubah”, dikirimkan ke Siam jurnal dari komputasi ilmiah]. Ini sering melakukan jauh lebih cepat daripada algoritma pohon ganda yang disebutkan di atas, tetapi batas-batas kesalahan yang mengendalikan perhitungan sering cukup longgar, dan agak berat (misalnya, sangat sulit untuk mendapatkan batas-batas kesalahan pecahan disediakan & digunakan oleh metode dual pohon dan fungsi lainnya dalam KDE toolbox). Dengan demikian untuk saat ini kami telah meninggalkan IFGT terpisah, dengan alternatif kontrol untuk kompleksitas komputasi (Lihat di bawah, dan file “evalIFGT.m”).
Definisi kelas KDE Matlab
Konstruktor:
Accesor: (akses data, yang sangat terbatas atau tidak ada pengolahan req data)
Display: (visualisasi / Keterangan)
Statistics: (manfaat statistik & operasi di kde)
Mixture products: (NBP stuff) ( HANYA KERNEL GAUSSIAN)
BAB III Perangkat Lunak
Definisi MATLAB (Matrix Laboratory)
MATLAB (Matrix Laboratory) adalah sebuah program untuk menganalisis dan mengkomputasi data numerik, dan MATLAB juga merupakan suatu bahasa pemrograman matematika lanjutan, yang dibentuk dengan dasar pemikiran yang menggunakan sifat dan bentuk matriks.
Dikembangkan oleh The Mathwork Inc. yang hadir dengan fungsi dan karakteristik yang berbeda dengan bahasa pemrograman lain yang sudah ada lebih dahulu seperti Delphi, Basic maupun C++.
Pengenalan dan program aplikasi MATLAB (Matrix Laboratory)
Awalnya program aplikasi MATLAB ini merupakan suatu interface untuk koleksi rutin-rutin numerik dari proyek LINPACK dan EISPACK, dan dikembangkan dengan menggunakan bahasa FORTRAN, namun sekarang ini MATLAB merupakan produk komersial dari perusahaan Mathworks, Inc.
Yang selanjutnya dikembangkan dengan menggunakan bahasa C++ dan assembler. MATLAB telah berkembang menjadi sebuah environment pemprograman yang canggih yang berisi fungsi-fungsi built-in untuk melakukan tugas pengolahan sinyal, aljabar linier, dan kalkulasi matematis lainnya. MATLAB juga menyediakan berbagai fungsi untuk menampilkan data, baik dalam bentuk dua dimensi maupun dalam bentuk tiga dimensi.
MATLAB juga bersifat extensible, dalam arti bahwa seorang pengguna dapat menulis fungsi baru untuk menambahkan pada library, ketika fungsi-fungsi built-in yang tersedia tidak dapat melakukan tugas tertentu. Kemampuan pemrograman yang dibutuhkan tidak terlalu sulit bila kita telah memiliki pengalaman dalam pemrograman bahasa lain seperti C, PASCAL, atau FORTRAN. (sumber; http://www.mathworks.com)
MATLAB juga merupakan bahasa pemrograman tingkat tinggi berbasis pada matriks, sering digunakan untuk teknik komputasi numerik, yang kita gunakan untuk menyelesaikan masalah-masalah yang melibatkan operasi matematika elemen, matrik, optimasi, aproksimasi dll. Sehingga Matlab banyak digunakan pada :
• Matematika dan komputansi,
• Pengembangan dan algoritma,
• Pemrograman modeling, simulasi, dan pembuatan prototipe,
• Analisa data , eksplorasi dan visualisasi,
• Analisis numerik dan statistik,
• Pengembangan aplikasi teknik.
Matlab juga merupakan bahasa pemrograman computer berbasis window dengan orientasi dasarnya adalah matrik, namun tidak menutup kemungkinan program ini untuk pengerjaan permasalahan non matrik. Selain itu matlab juga merupakan bahasa pemrograman yang berbasis pada obyek (OOP), namun karena matlab bukanlah type compiler, maka program yang dihasilkan tidak dapat berdiri sendiri.
Agar hasil program dapat berdiri sendiri maka harus dilakukan transfer pada bahasa pemrograman yang lain, misalnya C++. Pada matlab terdapat tiga windows yang digunakan dalam operasinya yaitu ;
• Command windows (layar perintah)
• Figure windows (layar gambar),
• Note Pad (sebagai editor program).
Fungsi dari setiap window MATLAB
A. MATLAB Command window/editor
• MATLAB Command window/editor merupakan window yang muncul ketika kita membuka pertama kali setiap kita menjalankan aplikasi MATLAB,
• Pada window kita dapat melakukan akses-akses ke command-command MATLAB dengan mengetikkan barisan-barisan ekpresi MATLAB, seperti mengakses help window dan lain-lainnya.
• Command Window digunakan untuk menjalankan program/perintah yang dibuat pada layar editor matlab. Pada windows ini kita dapat mengakses perintah maupun komponen pendukung (help file dll) yang ada di matlab secara langsung. Salah satu cirri dari command windows ditandai dengan tanda prompt \left(\gg\right)
.
B. MATLAB Editor/Debugger (Editor M-File/Pencarian Kesalahan)
Window ini merupakan tool yang disediakan oleh Matlab 5 keatas. Berfungsi sebagai editor script Matlab (M-file). Meskipun sebenarnya script ini untuk pemrograman Matlab dapat saja menggunakan editor yang lain seperi notepad, wordpad dan bahkan word.
Untuk mengakses window m-file ini dapat kita lakukan dengan cara :
1. Memilih menu File – kemudian pilih New
2. Pilih m-file, maka MATLAB akan menampilkan editor window
Untuk menampilkan editor M-file selain dengan cara diatas, kita dapat juga melakukanya dengan cara :
\gg edit
C. Figure Windows
Window ini merupakan hasil visualisasi dari script Matlab. Namun Matlab memberi kemudahan bagi programer untuk mengedit window ini juga memberikan program khusus untuk itu. Sehingga selain berfungsi sebagai visualisasi output dapat juga sekaligus menjadi media input yang interaktif.
D. MATLAB help window
MATLAB juga menyediakan sistem help yang dapat diakses dengan perintah help. Misalnya, untuk memperoleh informasi mengenai fungsi elfun yaitu fungsi untuk trigonometri, eksponensial, complex dan lain-lain, maka kita hanya perlu mengetikkan perintah berikut :
\gg
help elfun
kemudian menekan enter maka di layar akan muncul informasi dalam bentuk teks pada layar MATLAB yaitu : Elementary math functions.
Trigonometric.
• sin – Sine.
• sinh – Hyperbolic sine.
• asin – Inverse sine.
• asinh – Inverse hyperbolic sine.
• cos – Cosine.
• cosh – Hyperbolic cosine.
• acos – Inverse cosine.
• acosh – Inverse hyperbolic cosine.
• tan – Tangent.
• tanh – Hyperbolic tangent.
• atan – Inverse tangent.
• atan2 – Four quadrant inverse tangent.
• atanh – Inverse hyperbolic tangent.
• sec – Secant.
• sech – Hyperbolic secant.
• asec – Inverse secant.
• asech – Inverse hyperbolic secant.
• csc – Cosecant.
• csch – Hyperbolic cosecant.
• acsc – Inverse cosecant.
• acsch – Inverse hyperbolic cosecant.
• cot – Cotangent.
• coth – Hyperbolic cotangent.
• acot – Inverse cotangent.
• acoth – Inverse hyperbolic cotangent.
Exponential.
• exp – Exponential.
• log – Natural logarithm.
• log10 – Common (base 10) logarithm.
• log2 – Base 2 logarithm and dissect floating point number.
• pow2 – Base 2 power and scale floating point number.
• sqrt – Square root.
• nextpow2 – Next higher power of 2.
Complex.
• abs – Absolute value.
• angle – Phase angle.
• complex – Construct complex data from real and imaginary parts.
• conj – Complex conjugate.
• imag – Complex imaginary part.
• real – Complex real part.
• unwrap – Unwrap phase angle.
• isreal – True for real array.
• cplxpair – Sort numbers into complex conjugate pairs.
Rounding and remainder.
• fix – Round towards zero.
• floor – Round towards minus infinity.
• ceil – Round towards plus infinity.
• round – Round towards nearest integer.
• mod – Modulus (signed remainder after division).
• rem – Remainder after division.
• sign – Signum.
Perintah yang sangat berguna untuk mempelajari pemrograman MATLAB yaitu intro, yang membahas konsep-konsep dasar tentang bahasa MATLAB. Selain itu juga terdapat banyak program demonstrasi yang mengilustrasikan berbagai kapabilitas MATLAB, yang dapat dimulai dengan perintah demo.
Atau untuk lebih lengkapnya dapat kita lihat di tampilan MATLAB, dengan cara memilih menu Window kemudian pilih help window, dan untuk mengetahui informasi yang ada maka dapat dilakukan dengan mengeklik dua kali info yang ada di MATLAB Help Window, atau dengan mengetikkan informasi yang ingin didapatkan pada sudut sebelah kiri MATLAB Help Window.
Fungsi pengaturan file dalam MATLAB :
• dir / ls : Digunakan untuk melihat isi dari sebuah direktori aktif.
• cd : Digunakan untuk melakukan perpindahan dari direktori aktif.
• pwd : Digunakan untuk melihat direktori yang sedang aktif.
• mkdir : Digunakan untuk membuat sebuah direktori.
• what : Digunakan untuk melihat nama file m dalam direktori aktif.
• who : Digunakan untuk melihat variabel yang sedang aktif.
• whos : Digunakan untuk menampilkan nama setiap variabel.
• delete : Digunakan untuk menghapus file.
• clear : Digunakan untuk menghapus variabel.
• clc : Digunakan untuk membersihkan layar.
• doc : Digunakan untuk melihat dokumentasi The MathWorks, Inc. dalam format html secara online.
• demo : Digunakan untuk mencoba beberapa tampilan demo yang disediakan oleh Matlab.
Fungsi help plot di command window
• Function subplot digunakan untuk membuat suatu figure dapat memuat lebih dari satu gambar. Perintah subplot didefinisikan sebagai :
subplot(n,m,i)
Perintah ini membagi suatu figure menjadi suatu matriks m x n area grafik dan i, berfungsi sebagai indeks penomoran gambar. Subplot dinomori dari kiri ke kanan dimulai dari baris teratas.
• Function title digunakan untuk memberi judul pada gambar. Input dari perintah title berupa string. Syntax title sebagai berikut :
title(‘string’)
• Function xlabel digunakan untuk memberi label sumbu pada sumbu x. Input dari perintah xlabel berupa string. Syntax xlabel sebagai berikut :
xlabel(‘string’)
• Function ylabel digunakan untuk memberi label sumbu y. Input dari perintah ylabel berupa string. Syntax ylabel sebagai berikut :
ylabel(‘string’)
• Function axis digunakan untuk mengatur nilai minimum dan maksimum dari sumbu x dan sumbu y , function axis didefinisikan sebagai :
axis([ xmin xmax ymin ymax ])
• Function grid digunakan untuk memberi grid pada gambar kita (sumber: http://dir.yahoo.com/science/mathematics/software/matlab)
\begin{verbatim}
Syntax-syintax dasar Matlab :
Operasi Dasar Matematika
+ = tambah = penjumlahan
– = kurang = pengurangan
* = perkalian (vektor) = perkalian (vektor)
.* = perkalian (skalar) = perkalian (skalar)
/ = bagi = pembagian
^ = pangkat = perpangkatan
Fungsi syintax-syintax lainya:
>> eye(N) = matrix identitas NxN
>> inv(A) = invers matrix A
>> det(A) = determinan matrix A
>> A’ = transpose matrix A
>> Pi = phi = 3.14
>> exp(a) = e^a
>> sin(a) = sinus sudut a dalam rad
>> sinh(a) = fungsi hiperbolik sinus
>> log(a) = ln a
>> log2(a) = 2log a
>> log10(a) = 10log a
Ex :Membuat Persamaan Matriks:
>> [1 2 ; 3 4] =
Ex : Membuat Persamaan Quadrat
>> tf([a b],[c d e]) =
>> zpk([a -b],[-c d],k) =
Ex : Mencari Integral Fungsi
>> syms a b t = definisi variabel a, b, t
>> int(x) = integral fungsi x
>> int(x,t,a,b) =
Ex : Perintah Lain-lain
>> i=1:1:10 = membuat deret 1 s/d 10
>> max(A) = nilai max. pada matrix A
>> clear = clear workspace
>> clc = clear command window
>> help
Ex : Membuat Grafik
>> plot(a,b) = plot a (sb x) dan b (sb y)
>> figure = menambah figure baru
>> hold on = menimpa gambar lama
>> hold off = membersihkan figure
>> plot (x,y,’–rs’,’Linewidth’,2,’MarkerEdgeColor’,’k’,’MarkerFaceColor’,’g’, ’MarkerSize’,2)
artinya : — garis putus-putus, r red, s square, tebal garis 2, warna garis kotak hitam, warna didalam kotak hijau, ukuran kotak 2.
Fitur FiturPada MATLAB
Fitur-fitur MATLAB sudah banyak dikembangkan, yang lebih kita kenal dengan nama toolbox. Sangat penting bagi pengguna Matlab, toolbox mana yang mendukung untuk learn dan apply technologi yang sedang dipelajarinya. Toolbox tersebut merupakan kumpulan dari fungsi-fungsi MATLAB (M-files) yang dikembangkan ke suatu lingkungan kerja MATLAB untuk memecahkan masalah dalam kelas particular.
Area-area yang sudah dapat dipecahkan dengan toolbox saat ini meliputi pengolahan sinyal, system kontrol, neural networks, fuzzy logic, wavelets, dan lain-lain. Selain toolbox, matlab juga dilengakapi dengan Simulink yang sangat powerfull untuk mensimulasikan dan menyelesaikan masalah – masalah yang berhubungan dengan Pemodelan Matematika. Dengan Simulink, kita dapat dengan mudah mengecek kestabilan suatu model Matematika. Sebagai sebuah sistem, MATLAB tersusun dari 5 bagian utama:
1.Development Environment.
Merupakan sekumpulan perangkat yang membantu anda untuk menggunakan fungsi-fungsi dan file-file MATLAB. Perangkat ini merupakan sebuah graphical user interfaces (GUI). Termasuk di-dalamnya adalah MATLAB desktop dan Command Window, command history, sebuah editor dan debugger, dan browsers untuk melihat help, workspace, files, dan search path.
2.MATLAB Mathematical Function Library.
Merupakan sekumpulan algoritma komputasi mulai dari fungsi-fungsi dasar seperti: sum, sin, cos, dan complex arith-metic, sampai dengan fungsi-fungsi yang lebih komplek seperti matrix inverse, ma-trix eigenvalues, Bessel functions, dan fast Fourier transforms.
3.MATLAB Language.
Merupakan suatu high-level matrix/array language dengan control flow statements, functions, data structures, input/output, dan fitur-fitur object-oriented programming. Yang memungkinkan bagi kita untuk melakukan kedua hal baik “pemrograman dalam lingkup sederhana” untuk hasil yang cepat, dan “pemrograman dalam lingkup yang lebih besar” untuk hasil dan aplikasi yang komplek.
4.Graphics.
MATLAB memiliki fasilitas untuk menampilkan vector dan matrik sebagai suatu grafik. Di dalamnya melibatkan high-level functions (fungsi-fungsi level tinggi) untuk visualisasi data dua dimensi dan data tiga dimensi, image processing, animation, dan graphics presentation.Ini juga melibatkan fungsi level rendah yang memungkinkan bagi anda untuk membiasakan diri untuk memunculkan grafik mulai dari bentuk yang sederhana sampai dengan tingkatan graphical userinterfaces (GUI).
5.MATLAB Application Program Interface (API)
Merupakan suatu library yang memungkinkan program yang telah ditulis dalam bahasa C dan Fortran mampu berinterakasi dengan MATLAB. Melibatkan fasilitas untuk pemanggilan routines dari MATLAB (dynamic linking), pemanggilan MATLAB sebagai computational engine, dan membaca serta menuliskan MAT-files.
Memulai MATLAB
JIka computer sudah terinstal program Matlab, maka kita dapat dengan mudah membuka program Matlab. Dengan cara klik Menu Start pada Desktop, kemudian pilih All Program, lalu pilih program Matlab sesuai dengan versi yang sudah terinstal atau klik 2 kali pada shortcut program Matlab pada Desktop. Tampilan program Matlab seperti gambar di bawah ini :
Untuk percobaan pertama, kita akan membuat 2 variabel yakni panjang dan lebar dengan nilai tertentu. Kemudian akan di cari Luas dari 2 variabel yang disimpan tersebut.
>>panjang=10 (lalutekan “enter”)
panjang =
10
>>lebar=5
lebar =
5
>>Luas=panjang*lebar
Luas =
50
>> Untuk percobaan kedua, akan dicoba operasi matrik. Operasi yang akan dicoba adalah operasi penambahan.
>> a=[1 2 3 4]
a =
1 2 3 4
>> b=[8 7 6 5]
b =
8 7 6 5
>> c=a+b
c =
9 9 9 9
>> Untuk percobaan ketiga, akan dicoba program yang memanfaatkan fungsi – fungsi bawaan Matlab seperti Sinus, Cosinus, dan pi. Selain itu juga akan dicoba perintah dengan menambahkan;
Yang berfungsi untuk menyembunyikan hasil yang baru saja dikerjakan dengan Matlab.
>> A=pi/6;
>> sin(A)
ans =0.5000
>>cos(A)
ans =0.8660>>
BAB IV Contoh Kasus Pemanfaatan Perangkat Lunak
CONTOH KASUS 1
Jodi ingin mengajak Dina makan di restoran. Sebelum berangkat dinner, Jodi ingin membagi kebahagiaannya pada malam ini kepada pelayan restoran dengan memberikan uang tip. Dia akan memberikan uang tip sebesar 5-25% dari total belanjanya. Besarnya uang TIP akan dilihat dari kualitas MAKANAN (food) dan tingkat PELAYANAN(service). Bantulah Jodi untuk memutuskan besarnya uang tip yang akan diberikan kepada pelayan restoran, jika setelah menikmati hidangan dan fasilitas PELAYANAN Jodi memberi nilai, sebagai berikut :
PELAYANAN = 7
MAKANAN = 8
Penilaian PELAYANAN dan MAKANAN berada pada rentang nilai 0-10. Ingat, kisaran uang tip adalah 5 – 25%.
Adapun aturan pemberian tip yg ditetapkan oleh Jodi adalah sebagai berikut:
1. Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah
2. Jika PELAYANAN Sedang, maka TIP Standar
3. Jika PELAYANAN Bagus ATAU MAKANAN Lezat, maka TIP Mahal
Pembahasan:
Dapat kita simpulkan bahwa pasangan input-output dari kasus kita adalah sebagai berikut :
• INPUT: PELAYANAN (Jelek, Sedang, Bagus) dan MAKANAN (Tengik, Lezat)
• OUTPUT: TIP (Murah, Standar, Mahal)
Tahapan dalam desain fuzzy menggunakan bahasa pemrograman memiliki kemiripan dengan desain fuzzy menggunakan FIS Editor. Langkah awal adalah mendefinisikan apaa saja yang menjadi pasangan input dan output beserta fungsi keanggotaannya masing-masing. Pertama, kita buat nama file FIS kita. Langkah ini menggunakan sintaks newfis. FIS berarti Fuzzy Inference Systems. Misalkan saat ini kita beri nama projek kita DinnerForTwo.
a=newfis(‘DinnerForTwo’);
Selanjutnya, definisikan input pertama kita, yaitu PELAYANAN, yang memiliki rentang antara 0 sampai 10. Gunakanlah sintaks addvar.
a=addvar(a,’input’,’PELAYANAN’,[0 10]);
Tambahkan semua fungsi keanggotaan yang menyusun variabel input PELAYANAN. Misalkan kita beri nama jenis pelayanan berupa Jelek, Sedang, dan Bagus. Setiap fungsi keanggotaan harus dilengkapi dengan parameter pembentuknya. Karena berupa segitiga (trimf), maka wajib memiliki tiga input parameter, yaitu titik awal, puncak dan titik akhir. Untuk menambahkan fungsi keanggotaan (membership function), gunakanlah sintaks addmf.
a=addmf(a,’input’,1,’Jelek’,’trimf’,[-404]);
a=addmf(a,’input’,1,’Sedang’,’trimf’,[159]);
a=addmf(a,’input’,1,’Bagus’,’trimf’,[6 10 14]);
Untuk memastikan bagaimana bentuk dari input PELAYANAN dan masing-masing fungsi keanggotaannya, dapat kita plot dengan sintaks plotmf, sebagai berikut: plotmf(a,’input’,1)
Hasilnya tampak seperti berikut:
Gambar 1. Fungsi Keaanggotaan Input PELAYANAN
Lakukan hal yang sama untuk variabel input kedua, yaitu MAKANAN. MAKANAN memiliki rentang yang sama dengan PELAYANAN, yaitu dari 0 sampai dengan 10. Khusus untuk MAKANAN, fungsi keanggotaan yang dibentuk menggunakan keanggotaan trapesium (trapmf). Input parameter yang digunakan sebanyak empat titik, yaitu titik awal, titik puncak pertama, titik puncak kedua, dan titik akhir. Logikanya sama persis dengan bagaimana menggambarkan sebuah segitiga, hanya parameternya yang berbeda.
a=addvar(a,’input’,’MAKANAN’,[010]);
a=addmf(a,’input’,2,’Tengik’,’trapmf’,[0013]);
a=addmf(a,’input’,2,’Lezat’,’trapmf’,[7 9 10 10]);
Untuk melihat hasilnya, kita gunakan sintaks berikut: figure; plotmf(a,’input’,2)
Gambar 2. Fungsi Keaanggotaan Input MAKANAN
Definisi input beserta fungsi keanggotaannya telah selesai. Sekarang, saatnya kita buat untuk fungsi output, yaitu TIP. Langkahnya mirip dengan definisi kedua input tadi.
a=addvar(a,’output’,’TIP’,[030]);
a=addmf(a,’output’,1,’Murah’,’trimf’,[0510]);
a=addmf(a,’output’,1,’Standar’,’trimf’,[101520]);
a=addmf(a,’output’,1,’Mahal’,’trimf’,[20 25 30]);
Mari kita lihat hasilnya: figure; plotmf(a,’output’,1)
Gambar 3. Fungsi Keaanggotaan output TIP
Setelah pasangan input-output terdefinisi, langkah selanjutnya adalah menyusun aturan-aturan yang berlaku dalam sistem fuzzy kita.Penulisan aturan ini perlu diperhatikan dengan baik.Sebab, penulisannya berupa matriks, dan kesalahan kecil dapat berakibat sistem tidak sesuai yang kita inginkan. Jika kita memiliki m input dan n output, maka matriks yang disusun harus memiliki kolom m+n+2. Sebagai contoh jika kita merujuk pada kasus kita, maka kita memiliki dua input (PELAYANAN dan MAKANAN), dan satu output (TIP). Dengan demikian, total kolom yang digunakan adalah 2+1+2 = 5. Nilai m kolom pertama mewakili indeks dari input kita. Contoh, jika input PELAYANAN memiliki anggota: Jelek, Sedang dan Bagus, maka indeks 1 mewakili jelek, indeks 2 mewakili Sedang, dan indeks 3 meakili Bagus. Nilai n kolom berikutnya adalah indeks dari output kita. Nilai kolom m+n+1 mewakilipembobotan dari aturan kita.Bobot ini memiliki nilai antara 0 – 1.Umumnya, nilai ini kita biarkan menjadi 1.Nilai kolomm+n+1 mewakili operator dalam aturan fuzzy. Nilai 1 akan mewakili logika AND, sedangkan nilai 2 mewakili OR.
Aturan1: Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah aturan1 = [1 1 1 1 2];
Aturan2: Jika PELAYANAN Sedang, maka TIP Standar aturan2 = [2 0 2 1 0]; %
Aturan3: Jika PELAYANAN Bagus ATAU MAKANAN Lezat, maka TIP Mahal aturan3 = [3 2 3 1 2];
gabungkan semua aturan tersebut dengan sintaks: listAturan = [aturan1;aturan2;aturan3]; a = addrule(a,listAturan);
Untuk memastikan apakah aturan kita telah benar, mari gunakan sintaks berikut yang dieksekusi melalui Command Window: >>showrule(a)
ans =
1.If (PELAYANAN is Jelek) or (MAKANAN is Tengik) then (TIP is Murah) (1)
2.If (PELAYANAN is Sedang) then (TIP is Standar) (1)
3. If (PELAYANAN is Bagus) or (MAKANAN is Lezat) then (TIP is Mahal) (1)
Sekarang, kita sudah di penghujung pemrograman kita. Pada langkah terakhir, kita akan melakukan evaluasi hasil akhir dari sistem fuzzy kita. Seperti yang telah kita ketahui bahwa nilai PELAYANAN = 7, dan MAKANAN = 8
gunakalah sintaks evalfis, sebagai berikut:
>> evalfis([7 8], a) ans = 19.9980
Nilainya sama dengan menggunakan penurunan matematis dan FIS Editor, yaitu sebesar 20%.
Berikut koding selengkapnya:
1. Buatlah variabel FIS a=newfis(‘DinnerForTwo’);
2. Tambahkan input PELAYANAN a=addvar(a,’input’,’PELAYANAN’,[0 10]);
3. Tambahkan fungsi keanggotaan PELAYANAN: Jelek, Sedang, Bagus
4. a=addmf(a,’input’,1,’Jelek’,’trimf’,[-4 0 4]);
5. a=addmf(a,’input’,1,’Sedang’,’trimf’,[1 5 9]);
6. a=addmf(a,’input’,1,’Bagus’,’trimf’,[6 10 14]);
7. plot input PELAYANAN utk melihat hasilnya plotmf(a,’input’,1)
8. Tambahkan input MAKANAN
9. a=addvar(a,’input’,’MAKANAN’,[0 10]);
10. Tambahkan fungsi keanggotaan MAKANAN: Tengik, Lezat
11. a=addmf(a,’input’,2,’Tengik’,’trapmf’,[0 0 1 3]);
12. a=addmf(a,’input’,2,’Lezat’,’trapmf’,[7 9 10 10]);
13. plot input MAKANAN utk melihat hasilnya figure; plotmf(a,’input’,2)
14. Tambahkan output TIP
15. a=addvar(a,’output’,’TIP’,[0 30]);
16. Tambahkan fungsi keanggotaan TIP: Murah, Standar, Mahal
17. a=addmf(a,’output’,1,’Murah’,’trimf’,[0 5 10]);
18. a=addmf(a,’output’,1,’Standar’,’trimf’,[10 15 20]);
19. a=addmf(a,’output’,1,’Mahal’,’trimf’,[20 25 30]);
20. plot output TIP utk melihat hasilnya figure; plotmf(a,’output’,1)
21. Sekarang masukkan aturan-aturan
22. Aturan1: Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah
23. aturan1 = [1 1 1 1 2];
24. Aturan2: Jika PELAYANAN Sedang, maka TIP Standar
25. aturan2 = [2 0 2 1 0];
26. Aturan3: Jika PELAYANAN Bagus ATAU MAKANAN Lezat, maka TIP Mahal
27. aturan3 = [3 2 3 1 2];
28. Padukan semua aturan listAturan = [aturan1;aturan2;aturan3];
29. a = addrule(a,listAturan);
30. Perlihatkan aturan, apakah sudah sesuai?
31. showrule(a);
32. Lakukan evaluasi untuk PELAYANAN = 7 dan MAKANAN = 8
33. evalfis([7 8], a)
CONTOH KASUS 2
Pembahasan terkait logika fuzzy adalah untuk menyelesaikan permasalah suatu sistem yang sulit dimodelkan secara matematis.Untuk belajar tentang logika fuzzy membutuhkan tool untuk dapat menerapkan logika tersebut.Salah satu tool yang mudah dan umum digunakan adalah dengan menggunakan Matlab Fuzzy Logic Toolbox.Pada aplikasi logika fuzzy menggunakan Matlab ini yang perlu dipahami adalah bagian-bagian yang ada pada logika fuzzy.Bagian tersebut adalah fuzzifikasi, rule evaluasi dan defuzzyfikasi.
Langkah-langkah untuk membuat logika fuzzy pada Matlab adalah :
1. Buka program Matlab, dan ketik pada command window >> fuzzy.
2. Instruksi tersebut akan menampilkan fuzzy toolbox, seperti gambar dibawah ini :
3. Pada langkah ini, tentukan jumlah input dari fuzzy toolbox, dalam hal ini akan digunakan 2 buah input, caranya adalah pilih menu Edit > Add Variable pilih Input.
4. Dalam kasus disini akan diambil, tentang sistem penerimaan karyawan dimana inputnya adalah hasil tes potensi akademik dan psikologi.
5. Letakkan kursor pada kotak input 1 dan double click pada kotak tersebut atau pilih Edit > Membership Functions.
6. Atur Input 1 Range = 0..100, untuk MBF 1 : Name = Rendah, Type = trapmf (trapesium membership function), params = [0 0 20 50]. MBF2 : Name = Sedang, Type = trimf (triangle membership function), params = [20 50 80]. MBF 3 Name =Tinggi, Type = trapmf , params = [50 80 100 100]. Detail hasilnya seperti gambar dibawah ini :
7. Klik kotak input 2 dan ulangi langkah no.6.
8. Klik kotak output untuk mengatur nilai membership functions pada output.
9. Atur Range = 0..100, untuk MBF 1 : Name = Ditolak, Type = trapmf , params = [0 0 20 40]. MBF2 : Name = Dipertimbangkan, Type = trapmf, params = [10 40 60 90]. MBF 3 Name = Diterima, Type = trapmf , params = [60 80 100 100]. Detail hasilnya seperti gambar dibawah ini :
10. Setelah semua mbf input maupun output diatur sesuai dengan kebutuhan maka pengaturan terakhir adalah bagian rule evaluasi atau aturan fuzzy, caranya pilih menu Edit > Rules, deatil caranya seperti gambar dibawah ini :
11. Pada contoh kasus untuk sistem penerimaan karyawan disini rule evaluasinya adalah seperti ditunjukkan gambar dibawah ini, untuk mendapatkan rule evaluasi seperti ini adalah dengan memilih pasangan rule evaluasi untuk pasangan input 1, input 2 dan output. Caranya adalah pilih input 1,input 2 dan output kemudian klik Add rule, apabila terjadi kesalahan pilih rule evaluasi kemudian klik Delete rule.
12. Setelah selesai semua, pilih menu View > Rule.
13. Hasil dari sistem yang dibangun menggunakan fuzzy dapat, pada contoh kasus penerimaan karyawan ini adalah seperti gambar dibawah ini. Apabila ingin melihat hasil output logika
fuzzy, makagaris merah pada input 1 dan input 2 dapat digeser yang otomatis nilai output akan berubahmengikuti nilai-nilai input tersebut.
Pada buku ini nilai range, nilai mbf, type mbf dan susunan rule evaluasi hanya sebuah contoh kasus untuk sistem penerimaan karyawan dari dua jenis test. Jika dibuat dalam bentuk sistem yang berbeda perlu adanya penyesuaian komponen yang membangun logika fuzzy tersebut. Aplikasi logika fuzzy dengan menggunakan Matlab Fuzzy Toolbox sangat membantu bagi mereka yang baru belajar.Logika fuzzy sebagai pemrosesan disini berguna untuk membantu tugas dari manusia dimana tugas yang dibangun menggunakan sistem ini terkadang sulit untuk dibuat model matematisnya. Pada prakteknya sistem logika fuzzy ini akan ditanamkan dalam sebuah mesin, mesin yang dimaksud disini adalah komputer. Padahal tidak semua mesin yang dipergunakan berwujud komputer, bisa jadi dalam bentuk smartphone, microcomputer, microcontroller dan embedded system yang lain.
Contoh soal
Kami mengambil ilustrasi sintetis bivariat set data 50 poin untuk menggambarkan pembangunan histogram. Ini membutuhkan pilihan titik anchor (sudut kiri bawah histogram grid). Untuk histogram di sebelah kiri, kita pilih (-1.5, -1.5): untuk yang di sebelah kanan, kita menggeser titik anchor oleh 0.125 di kedua arah ke (-1,625, -1,625). Kedua histogram memiliki binwidth 0,5, sehingga setiap perbedaan adalah karena perubahan titik anchor saja. Warna-coding menunjukkan jumlah titik data yang jatuh ke dalam bin: 0 = putih, 1 = kuning pucat, 2 = kuning cerah, 3 = orange, 4 = merah. Histogram meninggalkan tampaknya menunjukkan bahwa bagian atas memiliki kepadatan lebih tinggi dari bagian bawah, sedangkan itu adalah sebaliknya adalah kasus untuk histogram kanan, mengkonfirmasikan bahwa histogram sangat sensitif terhadap penempatan titik jangkar.
Perbandingan histogram 2D. Kiri. Histogram dengan anchor titik di (-1,5, -1,5). Kanan. Histogram dengan anchor titik di (-1,625, -1,625). Kedua histogram memiliki lebar bin 0,5, sehingga perbedaan penampilan dari dua histogram adalah karena penempatan titik anchor.
Salah satu solusi untuk anchor masalah penempatan titik ini adalah untuk menghapus histogram Binning jaringan sepenuhnya. Pada gambar sebelah kiri bawah, kernel (diwakili oleh garis-garis abu-abu) berpusat di masing-masing 50 poin data di atas. Hasil menjumlahkan kernel ini diberikan pada sosok yang tepat, yang merupakan estimasi densitas kernel. Perbedaan yang paling mencolok antara perkiraan kepadatan kernel dan histogram adalah bahwa mantan lebih mudah untuk menafsirkan karena mereka tidak mengandung artifices disebabkan oleh grid Binning. Kontur berwarna sesuai dengan wilayah terkecil yang berisi massa probabilitas masing: merah = 25%, orange + merah = 50%, kuning + orange + merah = 75%, yang mengindikasikan bahwa wilayah pusat tunggal mengandung kepadatan tertinggi.
Pembangunan estimasi densitas kernel 2D. Kiri. Kernel individu. Kanan. Kernel density perkiraan.
Tujuan dari estimasi kepadatan adalah untuk mengambil sampel terbatas data dan membuat kesimpulan tentang mendasari fungsi kepadatan probabilitas di mana-mana, termasuk di mana tidak ada data yang diamati. Dalam estimasi densitas kernel, kontribusi masing-masing titik data merapikan dari satu titik ke daerah ruang sekitarnya. Menggabungkan kontribusi merapikan individual memberikan gambaran keseluruhan dari struktur data dan fungsi densitasnya. Dalam rincian untuk mengikuti, kita menunjukkan bahwa pendekatan ini mengarah ke perkiraan yang wajar dari fungsi kepadatan yang mendasari.
Definisi
Angka sebelumnya adalah representasi grafis dari kepadatan kernel estimasi, yang sekarang kita mendefinisikan secara tepat. Biarkan x 1, x 2, …, x n menjadi sampel dari d -variate vektor acak diambil dari distribusi yang umum dijelaskan oleh fungsi kepadatan f
. Estimasi densitas kernel didefinisikan sebagai
\overset{\mathcircumflex}{f}_{H}\left(X\right)=\frac{1}{n}\stackrel{[}{i}=1]{n}{\sum}K_{H}\left(x-x_{i}\right)
dimana
• x = (x 1, x 2, …, x d)^{T}
, x i = (x i 1, x i 2, …, x id)^{T}
, i = 1, 2, …, n yang d -vectors;
• H adalah bandwidth (atau smoothing) d × d matriks yang simetris dan definit positif;
• K adalah kernel fungsi yang kepadatan multivariat simetris;
• K H (x) = | H | -1/2 K (H -1/2 x).
Pilihan fungsi kernel K tidak penting untuk keakuratan estimator densitas kernel, jadi kami menggunakan standar multivariat yang normal kernel seluruh: K\left(x\right)=\left(2\pi\right)^{-d/2}exp\left(-1/2x^{t}x\right)
di mana H memainkan peran matriks kovarians. Di sisi lain, pilihan bandwidth matriks H adalah faktor paling penting yang mempengaruhi akurasi sejak itu mengontrol jumlah dan orientasi Smoothing diinduksi. [5]: 36-39 Bahwa matriks bandwidth yang juga menginduksi orientasi adalah dasar Perbedaan antara estimasi densitas kernel multivariat dari analog univariat sejak orientasi tidak didefinisikan untuk 1D kernel. Hal ini menyebabkan pilihan dari parametrisation bandwidth matriks ini. Tiga kelas parametrisation utama (dalam rangka meningkatkan kompleksitas) adalah S, kelas skalar positif kali matriks identitas; D, matriks diagonal dengan entri positif pada diagonal utama; dan F, simetris matriks definit positif. Kernel kelas S memiliki jumlah yang sama dari smoothing diterapkan dalam semua arah koordinat, D kernel memungkinkan jumlah yang berbeda dari smoothing di setiap koordinat, dan F kernel memungkinkan jumlah sewenang-wenang dan orientasi smoothing tersebut. Historis S dan D kernel yang paling luas karena alasan komputasi, tetapi penelitian menunjukkan bahwa keuntungan penting dalam akurasi dapat diperoleh dengan menggunakan lebih umum kernel kelas F. [6] [7]
Perbandingan dari tiga kelas parametrisation bandwith matriks utama. Meninggalkan S. Kali skalar positif matriks identitas. Pusat. Matriks diagonal D dengan entri positif pada diagonal utama. Tepat. F simetris matriks definit positif.
Temukan bandwidth yang optimal matriks
Kriteria optimalitas yang paling umum digunakan untuk memilih matriks bandwidth MISE atau berarti terintegrasi kesalahan kuadrat MISE\left(H\right)=E\left[\int\left(\overset{\mathcircumflex}{f}_{H}\left(x\right)-f\left(x\right)\right)^{2}dx\right].
Ini pada umumnya tidak memiliki sebuah ekspresi bentuk tertutup, sehingga sangat biasa untuk menggunakan pendekatan asimtotik nya (AMISE) sebagai proxy
AMISE\left(H\right)=n^{-1}\mid H\mid^{-1/2}R\left(K\right)+\frac{1}{4}m_{2}\left(K\right)^{2}\left(vec^{T}H\right)\varPsi_{4}\left(vecH\right)
dimana
• R (K) = \int
K \left(x\right)^{2}
dx, dengan R (K) = \left(4\pi\right)^{-d/2}
ketika K adalah kernel yang normal
• \int xx^{T}K\left(x\right)dx=m_{2}\left(K\right)I_{d}
dengan I_{d}
menjadi d x d matriks identistas, dengan m_{2}=
1 untuk kernel yang normal
• D^{2}f
adalah d × d Hessian matriks urutan kedua turunan parsial dari f
• \psi_{4}=\int\left(vecD^{2}f\left(x\right)\right)\left(vec^{T}D^{2}f\left(x\right)\right)dx
adalah d^{2}
x d^{2}
matriks agar keempat derivatif parsial terpadu f
• vec adalah operator vektor yang tumpukan kolom dari suatu matriks menjadi vektor tunggal misalnya vec\left[\begin{array}{cc}
a & c\\
b & d
\end{array}\right]=\left[\begin{array}{cccc}
a & b & c & d\end{array}\right]^{T}.
Kualitas pendekatan AMISE untuk MISE yang [5]: 97 diberikan oleh
MISE\left(H\right)=AMISE\left(H\right)+o\left(n^{-1}\mid H\mid^{-1/2}+trH^{2}\right)
di mana o menunjukkan biasa notasi o kecil. Heuristik pernyataan ini menyiratkan bahwa AMISE adalah ‘baik’ pendekatan dari MISE sebagai ukuran sampel n \rightarrow\infty
.
Hal ini dapat ditunjukkan bahwa setiap bandwidth yang wajar pemilih H memiliki H = O (n^{-2/\left(d+4\right)}
)) dimana notasi O besar diterapkan elementwise. Mengganti ini ke dalam hasil rumus MISE bahwa MISE optimal adalah O (n^{-4/\left(d+4\right)}
)). [5]: 99-100 demikian sebagai n \rightarrow\infty
, MISE yang \rightarrow
0, yaitu estimasi kepadatan kernel konvergen di berarti persegi dan dengan demikian juga dalam probabilitas untuk benar kepadatan f
. Mode konvergensi adalah konfirmasi pernyataan di bagian motivasi bahwa metode kernel menyebabkan estimator densitas wajar. Pemilih bandwidth yang optimal ideal adalah
H_{AMISE}=argmin_{H\epsilon F}AMISE\left(H\right).
Sejak pemilih yang ideal ini berisi diketahui fungsi kepadatan ƒ, tidak dapat digunakan secara langsung. Banyak jenis yang berbeda dari berbasis bandwidth data pemilih timbul dari estimator berbeda AMISE tersebut. Kami berkonsentrasi pada dua kelas selektor yang telah terbukti menjadi yang paling banyak diterapkan dalam praktek: merapikan lintas validasi dan plug-in pemilih.
Plug-in
Plug-in (PI) perkiraan AMISE yang dibentuk dengan mengganti \varPsi_{4}
oleh estimator yang \varPsi_{4}
PI\left(H\right)=n^{-1}\mid H\mid^{-1/2}R\left(K\right)+\frac{1}{4}m_{2}\left(K\right)^{2}\left(vec^{T}H\right)\varPsi_{4}\left(G\right)\left(vecH\right)
dimana \varPsi_{4}\left(G\right)=n^{-2}\stackrel{[}{i}=1]{n}{\sum}\stackrel{[}{i}=1]{n}{\sum}\left[\left(vecD^{2}\right)\left(vec^{T}D^{2}\right)\right]K_{G}\left(X_{i}-X_{j}\right)
demikian H_{PI}=argmin_{H\epsilon F}PI\left(H\right)
adalah plug-in pemilih. [8][9] referensi ini juga mengandung algoritma estimasi optimal dari matriks percontohan bandwith G dan menetapkan bahwa \overset{\mathcircumflex}{H}_{PI}
konvergen dalam probabilitas untuk H_{AMISE}
.
Merapikan lintas validasi
Merapikan lintas validasi (SCV) adalah bagian dari kelas yang lebih besar dari validasi silang teknik. The SCV estimator berbeda dari plug-in estimator dalam jangka kedua
SCV\left(H\right)=n^{-1}\mid H\mid^{-1/2}R\left(K\right)+n^{-2}\stackrel{[}{i}=1]{n}{\sum}\stackrel{[}{i}=1]{n}{\sum}\left(K_{2H+2G}-2K_{H+2G}+K_{2G}\right)\left(X_{i}-X_{j}\right)
Demikian adalah pemilih \overset{\mathcircumflex}{H}_{SCV}=argmin_{H\epsilon F}SCV\left(H\right)
adalah pemilih SCV. [9] [10] referensi ini juga mengandung algoritma estimasi optimal dari matriks percontohan bandwith G dan menetapkan bahwa \overset{\mathcircumflex}{H}_{SCV}
konvergen dalam probabilitas untuk H_{AMISE}
.
Rule of thumb
Aturan Silverman praktis menyarankan menggunakan \sqrt{H_{ii}}=\left(\frac{4}{d+2}\right)^{\frac{1}{d+4}}n\frac{-1}{d+4}\sigma_{i}
dimana \sigma
adalah standar deviasi dari variabel i dan H_{ij}=0,i\neq j
. Aturan Scott adalah \sqrt{H_{ii}}=n\frac{-1}{d+4}\sigma_{i}
Analisis asymptotic
Pada bagian pilihan bandwidth yang optimal, kami memperkenalkan MISE tersebut. Pembangunannya bergantung pada nilai yang diharapkan dan varians dari estimator densitas [5]: 97
E\overset{\mathcircumflex}{f}\left(x;H\right)=K_{H}*f\left(x\right)=f\left(x\right)+\frac{1}{2}m_{2}\left(K\right)\int tr\left(HD^{2}f\left(x\right)\right)dx+O\left(trH^{2}\right)
dimana * adalah lilitan Operator antara dua fungsi dan
Var\overset{\mathcircumflex}{f}\left(x;H\right)=n^{-1}\mid H\mid^{-1/2}R\left(K\right)+o\left(n^{-1}\mid H\mid^{-1/2}\right).
Selama dua ekspresi ini harus didefinisikan dengan baik, kami mengharuskan semua elemen H cenderung 0 dan n^{-1}\mid H\mid^{-1/2}
cenderung 0 sebagai n cenderung tak terhingga. Dengan asumsi kedua kondisi ini, kita melihat bahwa nilai yang diharapkan cenderung kepadatan f benar yaitu estimator densitas kernel adalah asimtotik berisi; dan bahwa varians cenderung nol. Menggunakan standar berarti kuadrat dekomposisi nilai
MSE\overset{\mathcircumflex}{f}\left(x;H\right)=Var\overset{\mathcircumflex}{f}\left(x;H\right)+\left[E\overset{\mathcircumflex}{f}\left(x;H\right)-f\left(x\right)\right]^{2}
kita memiliki bahwa MSE cenderung 0, menyiratkan bahwa estimator densitas kernel (mean square) yang konsisten dan karenanya konvergen dalam probabilitas untuk benar kepadatan f. Tingkat konvergensi dari MSE untuk 0 adalah tentu sama dengan tingkat MISE dicatat sebelumnya O\left(n^{-4/\left(d+4\right)}\right)
maka tingkat covergence dari estimator densitas untuk f adalah O_{p}\left(n^{-2/\left(d+4\right)}\right)
di mana O p menunjukkan urutan probabilitas. Ini menetapkan konvergensi pointwise. The covergence fungsional didirikan sama dengan mempertimbangkan perilaku MISE, dan mencatat bahwa di bawah keteraturan yang cukup, integrasi tidak mempengaruhi tingkat konvergensi.
Untuk pemilih berbasis bandwidth-data yang dianggap, target adalah matriks bandwidth yang AMISE. Kami mengatakan bahwa pemilih berbasis data yang konvergen ke pemilih AMISE di relatif tingkat O_{p}\left(n^{-a}\right),a>0
jika
vec\left(\overset{\mathcircumflex}{H}-H_{AMISE}\right)=O\left(n^{-2a}\right)vecH_{AMISE}.
Telah ditetapkan bahwa plug-in dan merapikan penyeleksi lintas validasi (diberikan pilot bandwith G tunggal) baik berkumpul pada tingkat relatif O_{p}\left(n^{-2/\left(d+6\right)}\right)
[9] [11] yaitu, baik selektor berbasis data ini estimator konsisten.
Estimasi kepadatan dengan matriks bandwidth penuh
Old Faithful Geyser kernel Data kepadatan estimasi dengan plug-in bandwith matriks.
The ks paket [12] di R mengimplementasikan plug-in dan merapikan penyeleksi validasi silang (antara lain). Dataset ini (termasuk dalam distribusi dasar R) mengandung 272 catatan dengan dua pengukuran setiap: waktu durasi letusan (menit) dan waktu menunggu sampai letusan berikutnya (menit) dari Old Faithful Geyser di Yellowstone National Park, Amerika Serikat .
Kode fragmen menghitung estimasi kepadatan kernel dengan bandwidth matriks plug-in
\overset{\mathcircumflex}{H}_{PI}=\left[\begin{array}{cc}
0.052 & 0.510\\
0.510 & 8.882
\end{array}\right]
. Sekali lagi, kontur berwarna sesuai dengan wilayah terkecil yang berisi massa probabilitas masing: merah = 25%, orange + merah = 50%, kuning + orange + merah = 75%. Untuk menghitung pemilih SCV, H_{pi}
diganti dengan H_{SCV}
Ini tidak ditampilkan di sini karena sebagian besar mirip dengan plug-in estimasi untuk contoh ini.
perpustakaan (ks)
Data (setia)
H <- Hpi (x = setia)
fhat <- kde (x = setia, H = H)
plot (fhat, display = “filled.contour2”)
poin (setia, CEX = 0,5, pch = 16)
Estimasi kepadatan dengan bandwidth matriks diagonal
Kernel density estimasi dengan bandwidth yang diagonal untuk data campuran yang normal sintetik.
Kami mempertimbangkan memperkirakan kepadatan campuran Gaussian \left(4\pi\right)^{-1}
exp \left(-1/2\left(x_{1}^{2}+x_{2}^{2}\right)\right)+\left(4\pi\right)^{-1}
exp \left(-1/2\left(\left(x_{1-3,5}\right)^{2}+x_{2}^{2}\right)\right)
, dari 500 acak poin. Kami mempekerjakan rutin Matlab untuk Data 2-dimensi. Rutin ini merupakan metode seleksi bandwidth yang otomatis yang dirancang khusus untuk urutan kernel Gaussian kedua. [13] Angka ini menunjukkan estimasi kepadatan gabungan yang dihasilkan dari menggunakan bandwidth otomatis dipilih.
Matlab skrip misalnya -1/2,
Ketik perintah berikut di Matlab setelah men-download dan menyimpan kde2d.m fungsi dalam direktori saat ini.
jelas semua
% Menghasilkan data sintetik
Data = [randn (500, 2);
randn (500, 1) + 3.5, randn (500, 1);];
% Memanggil rutin, yang telah disimpan di direktori saat ini
[Bandwidth, kepadatan, X, Y] = kde2d (data);
% Plot data dan estimasi kerapatan
contour3 (X, Y, kepadatan, 50), berpegang pada
plot (data (:, 1), data (: ‘. r’, 2),, ‘MarkerSize’, 5)
Kriteria optimalitas alternatif
MISE adalah diharapkan terintegrasi L_{2}
jarak antara estimasi kepadatan dan benar fungsi kepadatan f
. Ini adalah yang paling banyak digunakan, terutama karena tractability dan sebagian besar perangkat lunak menerapkan bandwidth yang selektor berbasis MISE. Ada kriteria optimalitas alternatif, yang mencoba untuk menutupi kasus-kasus dimana MISE bukan merupakan langkah yang tepat. [3]: 34-37,78 Setara L_{1}
ukuran, Kesalahan Berarti Terpadu Absolute, adalah
MIAE\left(H\right)=E\int\mid\overset{\mathcircumflex}{f}_{H}\left(x\right)-f\left(x\right)\mid dx.
Analisis matematis yang jauh lebih sulit daripada yang MISE. Dalam prakteknya, gain tampaknya tidak signifikan. [14] The L_{\infty}
norma adalah Mean Absolute Error Seragam
MUAE\left(H\right)=Esup_{x}\mid\overset{\mathcircumflex}{f}_{H}\left(x\right)-f\left(x\right)\mid.
yang telah diteliti hanya sebentar. [15] kriteria kesalahan Kemungkinan termasuk yang didasarkan pada Mean jarak Kullback-Leibler
MKL\left(H\right)=E\int\left(\overset{\mathcircumflex}{f}_{H}\left(x\right)^{1/2}-f\left(x\right)^{1/2}\right)^{2}dx.
KL dapat ditemukan dengan menggunakan metode cross-validasi, meskipun KL cross-validasi pemilih dapat sub-optimal bahkan jika itu tetap konsisten ntuk fungsi kepadatan terbatas. [16] MH penyeleksi telah diperiksa secara singkat dalam literatur. [17]
Semua kriteria optimalitas ini langkah-langkah jarak jauh, dan tidak selalu sesuai dengan pengertian yang lebih intuitif kedekatan, sehingga kriteria lebih visual telah dikembangkan dalam menanggapi keprihatinan ini. [18]
Bab 5 PENUTUP
Kesimpulan
• Grafik pengendali adalah teknik pengendali proses pada jalur yang digunakan secara luas yang biasanya digunakan untuk menaksir parameter suatu proses produksi menentukan kemampuan dan memberikan informasi yang berguna dalam meningkatkan proses itu.
• MATLAB(Matrix Laboratory) yaitu sebuah program untuk menganalisis dan mengkomputasi data numerik, dan MATLAB juga merupakan suatu bahasa pemrograman matematika lanjutan, yang dibentuk dengan dasar pemikiran yang menggunakan sifat dan bentuk matriks.
• Estimasi fungsi densitas merupakan salah satu bagian dalam analisis data statistik, dimana estimasi fungsi densitas adalah suatu gambaran tentang sebuah sebaran data.
• Kernel estimasi adalah alat untuk memvisualisasikan distribusi data. Misalnya, untuk gambaran. Kernel multivarian estimasi ketika dianggap itu adalah biasanya dalam konteks dibatasi dengan diagonal matriks, misalnya bandwidth. dalam paket R BC (Bowman & Azzalini, 2007) dan KernSmooth (tongkat, 2006). Kami memperkenalkan baru R ks paket yang mengimplementasikan matriks diagonal dan tidak dibatasi data-driven bandwidth untuk kernel estimasi, yang juga dapat digunakan untuk analisis multivarian diskriminan kernel. Paket KS.sys mengimplementasikan penyeleksi untuk 1 – untuk 6-dimensi.
• Dalam statistik, estimasi densitas kernel (KDE) adalah non-parametrik cara untuk memperkirakan dengan fungsi kepadatan probabilitas dari variabel acak. Estimasi densitas kernel adalah masalah penghalusan data mendasar di mana kesimpulan tentang populasi yang dibuat berdasarkan data yang terbatas sampel. Dalam beberapa bidang seperti pemrosesan sinyal dan ekonometrik itu juga disebut metode window Parzen-Rosenblatt, setelah Emanuel Parzen dan Murray Rosenblatt, yang biasanya dikreditkan dengan mandiri menciptakan itu dalam bentuk yang sekarang
• Grafik pengendali dibedakan menjadi 2 jenis yaitu grafik pengendali univariat dan grafik pengendali bivariat atau multivariat
Demikan yang dapat kami paparkan mengenai materi Joint Kernel Density Estimates yang menjadi pokok bahasan dalam buku ini, tentu masih banyak kekurangan dan kelemahan yang dapat ditemui didalam buku ini karena terbatasnya pengetahuan dari kami selaku penulis serta keterbatasan waktu yang diberikan oleh Dosen kepada kami untuk membuat buku ini lebih baik lagi.Penulis berharap para pembaca sudi memberikan kritik dan saran yang membangun kepada penulis demi sempurnanya buku kami inidan penulisan buku di kesempatan berikutnya.Semoga makalah ini berguna bagi penulis pada khususnya dan juga para pembaca pada umumnya.
Daftar Pustaka
https://books.google.co.id/books?id=VF5nXLvi_KUC&pg=PA132&dq=joint+ kernel+density+estimation&hl=id&sa=X&ved=0ahUKEwjf5ujv3sbKAhVVC44 KHeE7ARYQ6AEIGTAA#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=fycmsfkK6RQC&pg=PA611&dq=joint+k ernel+density+estimation&hl=id&sa=X&ved=0ahUKEwjf5ujv3sbKAhVVC44K HeE7ARYQ6AEIIDAB#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=C_2zCgAAQBAJ&pg=PA308&dq=joint+ kernel+density+estimation&hl=id&sa=X&ved=0ahUKEwiR5uOk4MbKAhXNc o4KHXpUBO8Q6AEIUjAH#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=FzvNfkMjvPwC&pg=PA120&dq=joint+ke rnel+density+estimation&hl=id&sa=X&ved=0ahUKEwiR5uOk4MbKAhXNco4K HXpUBO8Q6AEIOjAE#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=ZiwLCAAAQBAJ&pg=PA189&dq=joint+ke rnel+density+estimation&hl=id&sa=X&ved=0ahUKEwiR5uOk4MbKAhXNco4KH XpUBO8Q6AEISjAG#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=C5oj8bPtW6UC&pg=PA39&dq=pengertian+ matlab&hl=id&sa=X&ved=0ahUKEwjDgb_74MbKAhVXkI4KHVu6DFUQ6AEIIjA C#v=onepage&q=pengertian%20matlab&f=false
https://id.wikipedia.org/wiki/MATLAB
http://www.slideshare.net/vhieatietanic/modul-1-pengenalan-matlab
http://tutorkeren.com/artikel/tutorial-pemrograman-logika-fuzzy-menggunakan-matlab.htm
https://alvinburhani.wordpress.com/2014/05/25/aplikasi-logika-fuzzy-dengan-matlab/
https://www.scribd.com/doc/59018692/8/Contoh-Kasus-Penyelesaian-dengan-M-File
Alhamdulillah, puji dan syukur kehadirat Allah SWT atas semua berkah dan rahmat yang senantiasa diberikan sehingga penulis dapat menyelesaikan buku ini dengan baik dan lancar. Salawat serSebelumnya , penulis memanjatkanta salam kita panjatkan pula terhadap nabi besar muhammad SAW.
Buku ini ditulis untuk melengkapi tugas dari mata kuliah Desain Pemodelan Grafik (Softskill) yang diajar oleh Pak Dr. Rer. Nat. I Made Wiryana, Skom, SSi, MappSc. Tujuan dari penulisan buku ini diharapkan, agar pembaca dapat memahami teori permodelan grafik ,perangkat lunak yang berkaitan dengan Joint Kernel Density Estimate.
Tujuan penulisan buku ini untuk melatih kami untuk memiliki knowledge, skill menulis, mendengar, berbicara, beragumen dan berdiskusi dengan kelompok. Pembahasan buku ini akan dimulai dari hal sederhana, yaitu pemahaman konsep visualisasi, instalasi software yang di butuhkan, bagaimana langkah atau cara yang diperlukan untuk instalasi software tersebut, contoh kasus software yang menggunakan teori joint kernel density estimate dalam pemodelan grafik.
Sebagai kata kata terakhir, penulis ucapkan terimakasih kepada semua pihak dan tempat yang telah memberikan kontribusi bantuan dan dukungan terhadap proses penulisan dan pencetakan buku ini
Semoga bermanfaat
Depok, Januari 2015
Penulis
Kupersembahkan buku ini untuk teman temanku tercinta; terimakasih atas usaha dan jerih payah atas pembuatan buku ini -Fadlillah Ramdhani
Kupersembahkan buku ini untuk pak made tercinta selaku dosen saya yang telah memberikan tugas penulisan buku ini, karena dengan tugas ini membuatku saya bertambah skill dalam penulisan dan teamwork dalam pengerjaan nya -Parulian Tambunan
Kupersembahkan buku ini untuk kedua orangtuaku tersayang; terimakasih untuk semuanya dan doanya selama ini sehingga kami dapat menyelesaikan buku ini -Ika Yunita Anggraeni
Kupersembahkan buku ini untuk orangtua atas semua pemberian yang diberikan; sangat membantuku dalam menjalani proses hidup dan juga untuk teman seperjuangan yang sudah berusaha dengan tekun dalam proses penulisan buku ini -Sutri Hartono
BAB 1 PENDAHULUAN
A. Latar Belakang
Kualitas hasil produksi menjadi salah satu faktor dasar keputusan konsumen dalam memilih sebuah produk. Sebuah pengendalian kualitas sangat dibutuhkan dalam proses produksi guna menjaga kestabilan suatu produk. Dalam pengendalian kualitas sering digunakan pengendalian proses statistik. Salah satu teknik pengendalian proses statistik adalah grafik pengendali (control chart). Mengingat karakteristik kualitas proses produksi tidak selalu berdistribusi normal, maka dikembangkan alternatif grafik pengendali dengan metode non-parametrik . Salah satunya adalah menggunakan estimasi fungsi densitas kernel (kernel density estimation).
Dalam makalah ini di jelaskan tentang penerapan grafik pengendali berdasarkan estimasi fungsi densitas kernel bivariat pada data bivariat k, pencapaian dari tugas ini mahasiswa dapat memilki kemampuan teamwork yang dapat berguna di dalam dunia kerja. arakteristik pH dan berat jenis sabun sirih (Pattihahuan et al., 2012). m menduga selang kepercayaan dari kurva dugaan. Selanjutnya, makalah ini akan membahas tentang bagaimana menerapkan grafik pengendali non-parametrik berdasarkan pendekatan fungsi densitas kernel bivariat untuk dua titik dan untuk data simulasi bivariat. Tujuan dari penelitian ini adalah menerapkan grafik menduga selang kepercayaan dari kurva dugaan. pengendali non-parametrik berdasarkan pendekatan kernel untuk data simulasi bivariat dan mengidentifikasi titik sampel yang berada di luar grafik pengendali.
Pengendalian kualitas secara statistik dapat dilakukan dengan menggunakan grafik pengendali, Salah satunya adalah penggunaan grafik pengendali berdasarkan Estimasi Fungsi Densitas Kernel. Data yang digunakan adal
KATA PENGANTAR
Alhamdulillah, puji dan syukur kehadirat Allah SWT atas semua berkah dan rahmat yang senantiasa diberikan sehingga penulis dapat menyelesaikan buku ini dengan baik dan lancar. Salawat serSebelumnya , penulis memanjatkanta salam kita panjatkan pula terhadap nabi besar muhammad SAW.
Buku ini ditulis untuk melengkapi tugas dari mata kuliah Desain Pemodelan Grafik (Softskill) yang diajar oleh Pak Dr. Rer. Nat. I Made Wiryana, Skom, SSi, MappSc. Tujuan dari penulisan buku ini diharapkan, agar pembaca dapat memahami teori permodelan grafik ,perangkat lunak yang berkaitan dengan Joint Kernel Density Estimate.
Tujuan penulisan buku ini untuk melatih kami untuk memiliki knowledge, skill menulis, mendengar, berbicara, beragumen dan berdiskusi dengan kelompok. Pembahasan buku ini akan dimulai dari hal sederhana, yaitu pemahaman konsep visualisasi, instalasi software yang di butuhkan, bagaimana langkah atau cara yang diperlukan untuk instalasi software tersebut, contoh kasus software yang menggunakan teori joint kernel density estimate dalam pemodelan grafik.
Sebagai kata kata terakhir, penulis ucapkan terimakasih kepada semua pihak dan tempat yang telah memberikan kontribusi bantuan dan dukungan terhadap proses penulisan dan pencetakan buku ini
Semoga bermanfaat
Depok, Januari 2015
Penulis
Kupersembahkan buku ini untuk teman temanku tercinta; terimakasih atas usaha dan jerih payah atas pembuatan buku ini -Fadlillah Ramdhani
Kupersembahkan buku ini untuk pak made tercinta selaku dosen saya yang telah memberikan tugas penulisan buku ini, karena dengan tugas ini membuatku saya bertambah skill dalam penulisan dan teamwork dalam pengerjaan nya -Parulian Tambunan
Kupersembahkan buku ini untuk kedua orangtuaku tersayang; terimakasih untuk semuanya dan doanya selama ini sehingga kami dapat menyelesaikan buku ini -Ika Yunita Anggraeni
Kupersembahkan buku ini untuk orangtua atas semua pemberian yang diberikan; sangat membantuku dalam menjalani proses hidup dan juga untuk teman seperjuangan yang sudah berusaha dengan tekun dalam proses penulisan buku ini -Sutri Hartono
BAB 1PENDAHULUAN
A. Latar Belakang
Kualitas hasil produksi menjadi salah satu faktor dasar keputusan konsumen dalam memilih sebuah produk. Sebuah pengendalian kualitas sangat dibutuhkan dalam proses produksi guna menjaga kestabilan suatu produk. Dalam pengendalian kualitas sering digunakan pengendalian proses statistik. Salah satu teknik pengendalian proses statistik adalah grafik pengendali (control chart). Mengingat karakteristik kualitas proses produksi tidak selalu berdistribusi normal, maka dikembangkan alternatif grafik pengendali dengan metode non-parametrik . Salah satunya adalah menggunakan estimasi fungsi densitas kernel (kernel density estimation).
Dalam makalah ini di jelaskan tentang penerapan grafik pengendali berdasarkan estimasi fungsi densitas kernel bivariat pada data bivariat k, pencapaian dari tugas ini mahasiswa dapat memilki kemampuan teamwork yang dapat berguna di dalam dunia kerja. arakteristik pH dan berat jenis sabun sirih (Pattihahuan et al., 2012). m menduga selang kepercayaan dari kurva dugaan. Selanjutnya, makalah ini akan membahas tentang bagaimana menerapkan grafik pengendali non-parametrik berdasarkan pendekatan fungsi densitas kernel bivariat untuk dua titik dan untuk data simulasi bivariat. Tujuan dari penelitian ini adalah menerapkan grafik menduga selang kepercayaan dari kurva dugaan. pengendali non-parametrik berdasarkan pendekatan kernel untuk data simulasi bivariat dan mengidentifikasi titik sampel yang berada di luar grafik pengendali.
Pengendalian kualitas secara statistik dapat dilakukan dengan menggunakan grafik pengendali, Salah satunya adalah penggunaan grafik pengendali berdasarkan Estimasi Fungsi Densitas Kernel. Data yang digunakan adalah dua titik sampel bivariat yaitu 2,11 x ,4,32 x dan data simulasi bivariat yang dibangkitkan dari kombinasi dua distribusi normal bivariat dengan ukuran sampel (sample size) tertentu. Berdasarkan data tersebut dapat ditentukan estimasi densitas kernelnya (kernel density estimation) selanjutnya digunakan untuk membuat grafik pengendali dalam menentukan titik sampel yang out of control. Dari studi simulasi dapat dibangkitkan sampel dengan ukuran n berbeda- beda dan diperoleh hasil proporsi titik sampel out of control cenderung mendekati nilai batas kesalahan (level of significance).
KENAPA MENGGUNAKAN KERNEL DENSITY ESTIMATE?
Kualitas hasil produksi menjadi salah satu faktor dasar keputusan konsumen dalam memilih sebuah produk
Seperti yang kita ketahui, histogram dapat secara visual frustasi dan menyesatkan, terutama ketika sampah atau midpoints tidak appropriatel y ukuran d atau ditempatkan (l s o dibahas dalam bagian teori karya ini). Perkiraan kepadatan kernel menyediakan garis halus untuk mengikuti; Namun-mirip dengan “ukuran bin” yang dapat mengubah distribusi data di histogram – bandwidth seleksi adalah bagian penting dari kernel kepadatan estima te. Namun, ada beberapa metode seleksi bandwidth otomatis tersedia di SAS \circledR
perangkat lunak; ini dibahas pada bagian berikutnya.
DASAR TEORI
Grafik Pengendali
Grafik pengendali adalah teknik pengendali proses pada jalur yang digunakan secara luas yang biasanya digunakan untuk menaksir parameter suatu proses produksi menentukan kemampuan dan memberikan informasi yang berguna dalam meningkatkan proses itu (Montgomery, 1990). Berdasarkan banyaknya karakteristik kualitas yang diukur, grafik pengendali dibedakan menjadi 2 jenis yaitu grafik pengendali univariat dan grafik pengendali bivariat atau multivariat. Grafik pengendali univariat digunakan jika hanya ada satu karakteristik kualitas yang diukur, sedangkan grafik pengendali bivariat atau multivariat digunakan jika diperlukan pengendalian dua atau lebih karakteristik kualitas yang berhubungan secara bersama-sama.
Estimasi Fungsi Densitas Bivariat
Estimasi fungsi densitas merupakan salah satu bagian dalam analisis data statistik, dimana estimasi fungsi densitas adalah suatu gambaran tentang sebuah sebaran data. Dalam statistik, estimasi fungsi densitas kernel merupakan salah satu metode non-parametrik untuk menduga fungsi kepadatan probabilitas dari suatu variabel acak (WEB1).
Memahami bagaimana kernel estimasi bekerja membantu analis data yang menghasilkan histogram lebih efektif. Bagian ini berjalan melalui komponen dasar dan perhitungan untuk proses KDE yang disediakan oleh perangkat lunak SAS ®. Perkiraan kepadatan kernel KERNEL kepadatan memperkirakan adalah NONPARAMETRIC metode A yang adalah grafik nonparametric — berarti bahwa ia tidak memiliki fungsi kepekatan probabilitas yang mendasari (Yeh, Shi-Tao, 2004). Sebaliknya, itu diambil berdasarkan pada pengamatan data. Dengan kata lain, perkiraan kepadatan kernel yang tidak menggunakan regresi agar sesuai dengan garis data. Metode grafik lain akrab, nonparametric dalam perangkat lunak SAS ® termasuk pilihan HISTOGRAM dalam prosedur UNIVARIAT, BOXPLOT dan prosedur LOESS. Sebagai lawan untuk contoh-contoh di atas, parametrik regresi SAS ® software termasuk prosedur GLM, REG dan NLIN.
METODE PENELITIAN
Dalam penelitian ini digunakan langkah-langkah yang dijelaskan sebagai berikut:
• Membuat grafik pengendali dengan estimasi densitas kernel untuk dua titik sampel
• Menghitung estimasi fungsi densitas kernel dari data simulasi berdasarkan nilai H bandwidth optimal.
• Membuat grafik pengendali untuk data simulasi bivariat berdasarkan estimasi fungsi densitas kernel. Menentukan banyaknya titik sampel yang out of control.
• Menentukan banyaknya titik yang out of control untuk n=500, n=1000, n=1500 dan p=0.5.
• Melakukan pengulangan dengan p yang berbeda-beda yaitu p=0.1, p=0.8.
B. RUMUSAN MASALAH
Dalam makalah ini dijelaskan proses pembentukan grafik pengendali bivariat berdasarkan estimasi densitas kernel untuk dua titik sampel dan untuk banyaknya sampel dengan n yang berbeda-beda sehingga dapat digunakan untuk mengidentifikasi titik-titik sampel yang out of control.
C.TUJUAN PENULISAN
Dengan Memilih tema dan Menyusun buku ini diharapkan agar para pembaca ,serta penulis sendiri mampu memahami apa itu Joint kernel Density Estimate serta teknik-teknik dalam meningkatkan pemahaman Joint Kernel Density Estimate. Sekaligus, buku ini dibuat untuk memenuhi tugas perkuliahan, yaitu Mata kuliah Softskill Desain Permodelan Grafik. Kami sebagai mahasiswa dari jurusan teknologi industry.
BAB II Teori Tentang Konsep Visualisasi
Kernels
Kita telah mengetahui Gaussian kernel, tetapi hal ini tidak hanya tersedia pilihan. Estimasi Densitas Kernel (KDE) dapat digunakan dengan fungsi kernel apapun, dan kernel yang berbeda menyebabkan perkiraan kepadatan dengan karakteristik yang berbeda. Scipy KDE implementasi berisi hanya Kernel Gaussian umum. Statsmodels berisi tujuh kernel, sementara belajar Scikit berisi kernel enam, yang masing-masing dapat digunakan dengan satu dari sekitar selusin jarak metrik, mengakibatkan berbagai sangat fleksibel bentuk efektif kernel.
Berikut ini visualisasi cepat bentuk enam kernel yang tersedia di Scikit-belajar. Untuk kejelasan, fungsi plot_kernels() yang digunakan di sini didefinisikan pada akhir notebook:
In [8]:
plot_kernels()
Kernel berbagai bentuk menyebabkan penduga dengan karakteristik yang sangat berbeda. Untuk beberapa contoh ini dalam tindakan, lihat dokumentasi Scikit-belajar atau contoh-contoh AstroML.
Estimasi densitas kernel
Dalam statistik, estimasi densitas kernel (KDE) adalah cara untuk memperkirakan dengan fungsi kepadatan probabilitas dari variabel acak. Estimasi densitas kernel adalah masalah penghalusan data mendasar di mana kesimpulan tentang populasi yang dibuat berdasarkan data yang terbatas sampel. Dalam beberapa bidang seperti pemrosesan sinyal dan ekonometrik disebut juga metode window Parzen-Rosenblatt, setelah Emanuel Parzen dan Murray Rosenblatt, yang biasanya dikreditkan dengan mandiri menciptakan itu dalam bentuk yang sekarang.
Gambar diatas: Estimasi densitas kernel dari 100 terdistribusi normal nomor acak menggunakan bandwidth smoothing yang berbeda.
Definisi
Biarkan (x 1, x 2, …, x n) menjadi independen dan terdistribusi secara identik sampel yang diambil dari beberapa distribusi dengan tidak diketahui kepadatan f
. Kami tertarik dalam memperkirakan bentuk fungsi f
ini. Its kepadatan kernel estimator adalah
\overset{\mathcircumflex}{f}_{h}\left(x\right)=\frac{1}{n}\stackrel{[}{i}=1]{n}{\sum}K_{h}\left(x-x_{i}\right)=\frac{1}{nh}\stackrel{[}{i}=1]{n}{\sum}K\left(\frac{x-x_{i}}{h}\right)
dimana K (\bullet
) adalah kernel – fungsi non-negatif yang mengintegrasikan ke satu dan memiliki berarti nol – dan h> 0 adalah smoothing parameter yang disebut bandwidth. Sebuah kernel dengan subscript h disebut kernel skala dan didefinisikan sebagai K h (x) = 1 / h K (x / h). Intuitif seseorang ingin memilih h sekecil data memungkinkan, namun selalu ada trade-off antara bias estimator dan varians nya; lebih pada pilihan bandwidth bawah.
Berbagai fungsi kernel yang umum digunakan: seragam, segitiga, biweight, triweight, Epanechnikov, yang normal, dan lain-lain. The Epanechnikov kernel optimal dalam arti kesalahan berarti persegi, [3] meskipun hilangnya efisiensi kecil untuk kernel terdaftar sebelumnya, [4] dan karena sifat matematika yang strategis, kernel normal sering digunakan K (x) = \varphi
(x), di mana \varphi
adalah normal standar fungsi kepadatan.
Pembangunan perkiraan kepadatan kernel menemukan interpretasi dalam bidang luar estimasi kepadatan. [5] Sebagai contoh, dalam termodinamika, ini setara dengan jumlah panas yang dihasilkan ketika kernel panas (solusi mendasar untuk persamaan panas) ditempatkan pada setiap lokasi data titik x i. Metode serupa digunakan untuk membangun operator Laplace diskrit pada awan titik untuk belajar berjenis.
Estimasi densitas kernel yang erat kaitannya dengan histogram, tetapi dapat memiliki sifat-sifat seperti kehalusan atau kontinuitas dengan menggunakan kernel yang cocok. Untuk melihat ini, kita membandingkan pembangunan histogram dan kepadatan kernel estimator, menggunakan titik data 6 ini: x 1 = -2,1, x 2 = -1,3, x 3 = -0,4, x 4 = 1,9, x 5 = 5.1, x 6 = 6.2. Untuk histogram, pertama sumbu horisontal dibagi menjadi sub-interval atau sampah yang mencakup rentang data. Dalam hal ini, kami memiliki 6 tempat sampah masing-masing lebar 2. Setiap kali sebuah titik data berada di dalam interval ini, kami menempatkan kotak tinggi 12/1. Jika lebih dari satu titik data jatuh di dalam bin sama, kita tumpukan kotak di atas satu sama lain.
Untuk estimasi densitas kernel, kita menempatkan sebuah kernel normal dengan varians 2,25 (ditandai dengan garis putus-putus merah) pada masing-masing titik data x i. Kernel dijumlahkan untuk membuat estimasi densitas kernel (kurva biru solid). Kelancaran estimasi densitas kernel jelas dibandingkan dengan discreteness histogram, seperti perkiraan kepadatan kernel konvergen lebih cepat untuk kepadatan yang mendasari berlaku untuk variabel acak kontinu.
Perbandingan histogram (kiri) dan kepadatan kernel perkiraan (kanan) dibangun menggunakan data yang sama. 6 kernel individu merah putus-putus kurva, kepadatan kernel memperkirakan kurva biru. Titik data yang plot karpet pada sumbu horisontal.
Kernel estimasi dengan Python
Ada beberapa pilihan yang tersedia untuk komputasi perkiraan kepadatan kernel dengan Python. Pertanyaannya pelaksanaan KDE optimal untuk setiap situasi, bagaimanapun, tidak sepenuhnya langsung, dan banyak tergantung pada apa tujuan tertentu. Berikut ini adalah implementasi KDE empat yang aku sadar dalam tumpukan SciPy Scikits:
• Di SciPy: gaussian_kde.
• Di Statsmodels: KDEUnivariate dan KDEMultivariate .
• Di Scikit-belajar: KernelDensity .
Masing-masing memiliki keuntungan dan kerugian, dan masing-masing memiliki area penerapan. Saya akan mulai dengan sebuah table rangkuman kekuatan dan kelemahan masing-masing, sebelum membahas setiap fitur secara lebih rinci dan menjalankan beberapa benchmark sederhana untuk mengukur biaya komputasi mereka:
Implementasi empat yang disebutkan di atas memiliki antarmuka yang sangat berbeda. Untuk contoh dan benchmark di bawah ini, kita akan mulai dengan mendefinisikan antarmuka yang seragam untuk semua empat, dengan asumsi dimensi data input. Fungsi-fungsi berikut harus membuat jelas bagaimana membandingkan antarmuka:
In [1]:
from sklearn.neighbors import KernelDensity
from scipy.stats import gaussian_kde
from statsmodels.nonparametric.kde import KDEUnivariate
from statsmodels.nonparametric.kernel_density import KDEMultivariate
def kde_scipy(x, x_grid, bandwidth=0.2, **kwargs):
“””Kernel Density Estimation with Scipy”””
# Note that scipy weights its bandwidth by the covariance of the
# input data. To make the results comparable to the other methods,
# we divide the bandwidth by the sample standard deviation here.
kde = gaussian_kde(x, bw_method=bandwidth / x.std(ddof=1), **kwargs)
return kde.evaluate(x_grid)
def kde_statsmodels_u(x, x_grid, bandwidth=0.2, **kwargs):
“””Univariate Kernel Density Estimation with Statsmodels”””
kde = KDEUnivariate(x) kde.fit(bw=bandwidth, **kwargs)
return kde.evaluate(x_grid)
def kde_statsmodels_m(x, x_grid, bandwidth=0.2, **kwargs):
“””Multivariate Kernel Density Estimation with Statsmodels”””
kde = KDEMultivariate(x, bw=bandwidth * np.ones_like(x),
var_type=’c’, **kwargs)
return kde.pdf(x_grid)
def kde_sklearn(x, x_grid, bandwidth=0.2, **kwargs):
“””Kernel Density Estimation with Scikit-learn”””
kde_skl = KernelDensity(bandwidth=bandwidth, **kwargs)
kde_skl.fit(x[:, np.newaxis])
# score_samples() returns the log-likelihood of the samples
log_pdf = kde_skl.score_samples(x_grid[:, np.newaxis])
return np.exp(log_pdf)
kde_funcs = [kde_statsmodels_u, kde_statsmodels_m, kde_scipy, kde_sklearn]
kde_funcnames = [‘Statsmodels-U’, ‘Statsmodels-M’, ‘Scipy’, ‘Scikit-learn’]
print “Package Versions:”
import sklearn; print ” scikit-learn:”, sklearn.__version__
import scipy; print ” scipy:”, scipy.__version__
import statsmodels; print ” statsmodels:”, statsmodels.__version__
Package Versions:
scikit-learn: 0.14.1
scipy: 0.13.1
statsmodels: 0.5.0
Karena beberapa dari fungsi baru (secara khusus, KernelDensity pengukur ditambahkan dalam versi 0.14 Scikit-belajar), saya menambahkan eksplisit cetak-keluar dari versi yang digunakan dalam menjalankan notebook ini. Sekarang bahwa kita sudah didefinisikan antarmuka ini, mari kita lihat hasil dari pendekatan KDE empat. Kita akan mulai dengan perintah backend normal matplotlib, dan kemudian plot visualisasi dari hasil empat pada data yang sama 1 Dimensi bimodal:
In [2]: %matplotlib inline import numpy as np import matplotlib.pyplot as plt
In [3]: from scipy.stats.distributions import norm
# The grid we’ll use for plotting x_grid = np.linspace(-4.5, 3.5, 1000)
# Draw points from a bimodal distribution in 1D np.random.seed(0) x = np.concatenate([norm(-1,1.).rvs(400), norm(1, 0.3).rvs(100)])
pdf_true = (0.8 * norm(-1,1).pdf(x_grid) + 0.2 * norm(1,0.3).pdf(x_grid))
# Plot the three kernel density estimates fig, ax = plt.subplots(1, 4, sharey=True, figsize=(13, 3)) fig.subplots_adjust(wspace=0)
for i in range(4):
pdf = kde_funcs[i](x, x_grid, bandwidth=0.2)ax[i].plot(x_grid, pdf, color=’blue’, alpha=0.5, lw=3)ax[i].fill(x_grid, pdf_true, ec=’gray’, fc=’gray’, alpha=0.4)ax[i].set_title(kde_funcnames[i]) ax[i].set_xlim(-4.5, 3.5)
from IPython.display import HTML HTML(“<font color=’#666666′>Gray = True underlying distribution</font><br>” “<font color=’6666ff’>Blue = KDE model distribution (500 pts)</font>”)
Out[3]:
Gray = True underlying distribution Blue = KDE model distribution (500 pts)
Hasil sama, seperti yang kita harapkan: semua empat algoritma efektif komputasi hasil yang sama dengan cara yang berbeda.
Fitur dari algoritma
Temukan Bandwidth
Kernel density perkiraan (KDE) dengan bandwidth yang berbeda dari sampel acak dari 100 poin dari distribusi normal standar. Grey: density benar (standar normal). Red: KDE dengan h = 0,05. Black: KDE dengan h = 0,337. Hijau: KDE dengan h = 2.
Bandwidth dari kernel adalah parameter bebas yang menunjukkan pengaruh yang kuat pada perkiraan yang dihasilkan. Untuk menggambarkan efeknya, kita mengambil simulasi sampel acak dari standar distribusi normal (diplot pada paku biru di petak karpet pada sumbu horizontal). Kurva abu-abu adalah densitas benar (kepadatan normal dengan mean 0 dan varians 1). Sebagai perbandingan, kurva merah undersmoothed karena mengandung terlalu banyak artefak Data palsu yang timbul dari menggunakan h bandwith = 0,05, yang terlalu kecil. Kurva hijau oversmoothed karena menggunakan bandwidth h = 2 mengaburkan banyak struktur dasar. Kurva hitam dengan bandwidth h = 0,337 dianggap optimal merapikan sejak estimasi densitas dekat dengan kepadatan yang benar.
Kriteria optimalitas yang paling umum digunakan untuk memilih parameter ini adalah yang diharapkan L_{2}
fungsi risiko, juga disebut berarti terintegrasi kesalahan kuadrat:
MISE\left(h\right)=E\int\left(\overset{\mathcircumflex}{f}_{h}\left(x\right)-f\left(x\right)\right)^{2}dx.
Di bawah asumsi lemah pada f
dan K, [1] [2] MISE (h) = AMISE (h) + o (1 / (nh) + h 4) di mana o adalah sedikit notasi o. AMISE adalah MISE Asymptotic yang terdiri dari dua istilah terkemuka
AMISE\left(h\right)=\frac{R\left(K\right)}{nh}+\frac{1}{4}m_{2}\left(K\right)^{2}h^{4}R\left(f^{\prime\prime}\right)
dimanaR\left(g\right)=\int g\left(x\right)^{2}dx
untuk fungsi g, m_{2}\left(K\right)=\int x^{2}K\left(x\right)dx
dan f^{\prime\prime}
adalah turunan kedua f
. Minimum AMISE ini adalah solusi untuk persamaan diferensial ini
\frac{\partial}{\partial h}AMISE\left(h\right)=-\frac{R\left(K\right)}{nh^{2}}+m_{2}\left(K\right)^{2}h^{3}R\left(f^{\prime\prime}\right)=0
atau
h_{AMISE}=\frac{R\left(K\right)^{1/5}}{m_{2}\left(K\right)^{2/5}R\left(f^{\prime\prime}\right)^{1/5}n^{1/5}}
Baik AMISE maupun formula h AMISE dapat digunakan secara langsung karena mereka melibatkan diketahui fungsi kepadatan f
atau turunan f
kedua ”, sehingga berbagai, metode berbasis data otomatis telah dikembangkan untuk memilih bandwidth. Banyak penelitian tinjauan telah dilakukan untuk membandingkan efficacities mereka, [7] [8] [9] [10] [11] [12] [13] dengan konsensus umum bahwa plug-in pemilih yang [5] [14] dan validasi silang penyeleksi [15] [16] [17] yang paling berguna atas berbagai data set.
Mengganti setiap h bandwith yang memiliki urutan asimtotik yang sama \left(n^{-1/5}\right)
sebagai h AMISE ke AMISE memberikan yang AMISE (h) = O \left(n^{-4/5}\right)
, di mana O adalah notasi o besar. Hal ini dapat menunjukkan bahwa, di bawah asumsi yang lemah, tidak bisa eksis estimator non-parametrik yang menyatu pada tingkat yang lebih cepat daripada estimator kernel. [18] Perhatikan bahwa \left(n^{-4/5}\right)
tingkat lebih lambat dibandingkan dengan khas \left(n^{-1}\right)
konvergensi tingkat metode parametrik.
Jika bandwidth tidak diadakan tetap, tetapi bervariasi tergantung lokasi baik estimasi (balon estimator) atau sampel (pointwise estimator), ini menghasilkan metode sangat kuat disebut adaptif atau variabel estimasi kepadatan kernel bandwith.
Estimasi praktis bandwidth
Jika fungsi dasar Gaussian digunakan untuk mendekati univariat data, dan kepadatan yang mendasari yang diperkirakan adalah Gaussian maka dapat ditunjukkan bahwa pilihan optimal untuk h adalah [19]
h=\left(\frac{4\overset{\mathcircumflex}{\sigma^{5}}}{3n}\right)^{\frac{1}{5}}\thickapprox1.06\overset{\mathcircumflex}{\sigma}n^{-1/5},
dimana\overset{\mathcircumflex}{\sigma}
adalah standar deviasi dari sampel. Pendekatan ini disebut pendekatan normal distribusi, pendekatan Gaussian, atau Silverman aturan ‘s praktis.
Temukan bandwidth untuk estimasi kepadatan kernel distribusi berat ekor dikatakan relatif sulit.
Kaitannya dengan estimator densitas fungsi karakteristik
Mengingat sampel (x 1, x 2, …, x n), adalah wajar untuk memperkirakan fungsi karakteristik \varphi
(t) = E \left[e^{ITX}\right]
sebagai
\overset{\mathcircumflex}{\varphi}\left(t\right)=\frac{1}{n}\stackrel{[}{j}=1]{n}{\sum}e^{itxj}
Mengetahui fungsi karakteristik, adalah mungkin untuk menemukan yang sesuai fungsi kepadatan probabilitas melalui Fourier transform rumus. Salah satu kesulitan dengan menerapkan rumus inversi ini adalah bahwa hal itu mengarah ke divergen terpisahkan, karena perkiraan \overset{\mathcircumflex}{\varphi}\left(t\right)
tidak dapat diandalkan untuk t besar ‘s. Untuk menghindari masalah ini, estimator \overset{\mathcircumflex}{\varphi}\left(t\right)
dikalikan dengan fungsi redaman \psi
h (t) = \psi
(ht), yang sama dengan 1 pada asal dan kemudian jatuh ke 0 di tak terhingga. The “parameter bandwidth” h kontrol seberapa cepat kita mencoba untuk meredam fungsi \overset{\mathcircumflex}{\varphi}\left(t\right)
. Khususnya ketika h kecil, maka \psi
h (t) akan menjadi sekitar satu untuk berbagai macam t ‘s, yang berarti bahwa \overset{\mathcircumflex}{\varphi}\left(t\right)
tetap praktis tidak berubah di wilayah yang paling penting dari t ‘s.
Pilihan yang paling umum untuk fungsi \psi
adalah baik fungsi seragam \psi
(t) = 1 \left\{ -1\leq t\leq1\right\}
, yang secara efektif berarti truncating interval integrasi dalam rumus inversi untuk [-1 / jam, 1 / h] , atau fungsi gaussian \psi
(t) = e^{-xt2}
. Setelah fungsi \psi
telah dipilih, rumus inversi dapat diterapkan, dan estimator densitas akan
\overset{\mathcircumflex}{f}\left(x\right)=\sideset{\frac{1}{2\pi}}{_{-\infty}^{+\infty}}\int\overset{\mathcircumflex}{\varphi}\left(t\right)\psi_{h}\left(t\right)e^{-itx}dt=\sideset{\frac{1}{2\pi}}{_{-\infty}^{+\infty}}\int\frac{1}{n}\stackrel{[}{j}=1]{n}{\sum}e^{it\left(x_{j}-x\right)}\psi\left(ht\right)dt
=\frac{1}{nh}\stackrel{[}{j}=1]{n}{\sum}\sideset{\frac{1}{2\pi}}{_{-\infty}^{+\infty}}\int e^{-i\left(ht\right)\frac{x-x_{j}}{h}}\psi\left(ht\right)d\left(ht\right)=\frac{1}{nh}\stackrel{[}{j}=1]{n}{\sum}K\left(\frac{x-x_{j}}{h}\right),
di mana K adalah Transformasi Fourier dari fungsi \psi
redaman. Dengan demikian estimator densitas kernel bertepatan dengan karakteristik kepadatan fungsi estimator.
Bandwidth seleksi
Pemilihan bandwidth adalah bagian penting dari KDE. Untuk data input yang sama, bandwidth yang berbeda dapat menghasilkan hasil yang sangat berbeda: In [4]:
fig, ax = plt.subplots()
for bandwidth in [0.1, 0.3, 1.0]:
ax.plot(x_grid, kde_sklearn(x, x_grid, bandwidth=bandwidth),
label=’bw={0}’.format(bandwidth), linewidth=3, alpha=0.5)
ax.hist(x, 30, fc=’gray’, histtype=’stepfilled’, alpha=0.3, normed=True)
ax.set_xlim(-4.5, 3.5) ax.legend(loc=’upper left’)
Out[4]:
<matplotlib.legend.Legend at 0x108b8c3d0>
Menggunakan bandwidth yang berbeda dapat menyebabkan ide-ide yang sama sekali berbeda dari sifat dasar data! Mengingat pentingnya bandwidth, bagaimana mungkin Anda menentukan bandwidth yang optimal untuk masalah tertentu? Ada dua kelas pendekatan untuk masalah ini: dalam masyarakat statistik, ini umum untuk menggunakan aturan referensi, mana optimal bandwidth diperkirakan dari bentuk-bentuk teoritis yang didasarkan pada asumsi tentang distribusi data. Aturan referensi umum adalah aturan Silverman’s, yang diturunkan untuk univariat KDE dan disertakan dalam implementasi Scipy dan Statsmodels. Aturan referensi lain potensi adalah yang berdasarkan kriteria informasi, terkenal AIC dan BIC. Dalam dunia pembelajaran mesin, penggunaan referensi aturan kurang umum. Sebaliknya, pendekatan empiris seperti lintas validasi sering digunakan. Di salib validasi, model adalah cocok untuk bagian dari data, dan kemudian kuantitatif metrik dihitung untuk menentukan seberapa baik model ini sesuai dengan data yang tersisa. Sebuah pendekatan empiris untuk model parameter pilihan sangat fleksibel, dan dapat digunakan tanpa distribusi data yang mendasarinya. Karena berbagai referensi aturan umumnya tergantung pada asumsi-asumsi (sering meragukan) tentang distribusi mendasari data, pemilihan bandwidth yang berbasis di kayu salib-validasi dapat menghasilkan lebih banyak hasil yang dapat dipercaya untuk dunia nyata dataset. Skema cross-validation meninggalkan-satu-out built-in Statsmodels KDEMultivariate kelas. Untuk dataset besar, namun, meninggalkan-satu-out cross-validation bisa sangat lambat. Scikit-Pelajari tidak saat ini menyediakan built-in lintas validasi dalam pengukur KernelDensity, tapi alat-alat standar lintas validasi dalam modul dapat diterapkan cukup mudah, seperti ditunjukkan pada contoh di bawah.
Belajar Bandwidth Cross-Validation di scikit
Menggunakan salib validasi dalam belajar Scikit mudah dengan GridSearchCV meta-pengukur :
In [5]:
from sklearn.grid_search import GridSearchCV
grid = GridSearchCV(KernelDensity(),
{‘bandwidth’: np.linspace(0.1, 1.0, 30)},
cv=20) # 20-fold cross-validation
grid.fit(x[:, None]) print grid.best_params_ {‘bandwidth’: 0.19310344827586207}
Menurut nilai cross-validation (yaitu kemungkinan maksimum), bandwidth yang terbaik adalah di sekitar 0.19. Mari kita plot hasil:
In [6]:
kde = grid.best_estimator_ pdf = np.exp(kde.score_samples(x_grid[:, None]))
fig, ax = plt.subplots()
ax.plot(x_grid, pdf, linewidth=3, alpha=0.5, label=’bw=%.2f’ % kde.bandwidth) ax.hist(x, 30, fc=’gray’, histtype=’stepfilled’, alpha=0.3, normed=True)
ax.legend(loc=’upper left’)
ax.set_xlim(-4.5, 3.5);
Kita melihat bahwa hasil cross-validation a bandwidth yang dekat dengan apa yang kita mungkin pilih oleh mata, dan perkiraan kepadatan dihasilkan erat mencerminkan distribusi data yang mendasarinya.
Heterogen Data
Salah satu keuntungan yang Statsmodels’ KDEMultivariate memiliki algoritma lainnya adalah kemampuannya untuk menangani data heterogen, yaitu campuran kontinyu, memerintahkan diskrit, dan unordered bijaksana variabel. Semua lain implementasi membutuhkan dataset homogen. Meskipun masalah heterogen menarik, saya tidak akan membahas lebih di sini. Untuk lebih jelasnya, lihat dokumentasi KDEMultivariate.
Perhitungan berbasis FFT
Untuk dataset besar, perkiraan kepadatan kernel yang dapat dihitung secara efisien melalui teorema lilitan menggunakan transformasi Fourier cepat. Hal ini memerlukan binning data, sehingga pendekatan yang dengan cepat menjadi tidak efisien dalam dimensi yang lebih tinggi. Algoritma empat yang dibahas di sini, hanya Statsmodels’ KDEUnivariate mengimplementasikan FFT berbasis KDE. Seperti yang akan kita lihat di bawah, FFT menyediakan beberapa keuntungan komputasi untuk sejumlah besar poin, tapi dalam kebanyakan situasi tidak seefektif berbasis pohon KDE implementasi.
Perhitungan berbasis pohon
Untuk M evaluasi N poin, perhitungan KDE naif memerlukan perhitungan O O [MN] [MN] (yaitu perhitungan jarak antara setiap pasangan input/output). Hal ini menempatkan KDE dalam kategori yang sama sebagai tetangga terdekat, N-titik fungsi korelasi dan regresi proses Gaussian, semuanya adalah contoh dari masalah Generalized N-tubuh yang dapat efisien dihitung menggunakan data khusus struktur seperti pohon KD (saya dibahas spasial pohon dalam konteks pencarian tetangga terdekat dalam posting blog sebelumnya).
Ide utama adalah ini: jika Anda dapat menunjukkan bahwa query titik Q0Q0 geometris jauh dari serangkaian pelatihan poin {Ti} {Ti}, maka Anda tidak perlu menghitung setiap kernel berat antara Q0Q0 dan poin di {Ti} {Ti}: cukup untuk menghitung satu kernel berat pada jarak rata-rata, dan menggunakannya sebagai proxy untuk yang lain. Dengan pertimbangan yang cermat dari batas-batas pada jarak dan toleransi kesalahan maksimum untuk hasil akhir, dimungkinkan untuk sangat mengurangi jumlah operasi diperlukan untuk perhitungan KDE.
Untuk rilis 0,14 Scikit-belajar, saya menulis sebuah implementasi KDE efisien yang dibangun di KD pohon dan pohon bola. Dengan menetapkan parameter dengan rtol (relatif toleransi) dan atol (mutlak toleransi), dimungkinkan untuk menghitung perkiraan kepadatan sangat cepat perkiraan kernel pada setiap tingkat yang diinginkan akurasi. Hasil akhir pp algorithmically dijamin akan memuaskan
abs(p−ptrue)<atol+rtolptrue
Skema ini secara efektif set up tradeoff antara waktu perhitungan dan akurasi. Seperti yang akan kita lihat di bawah, bahkan marjinal penurunan akurasi (katakanlah, memungkinkan kesalahan 1 bagian dalam 108108) dapat menyebabkan keuntungan yang mengesankan dalam efisiensi komputasi.
Efisiensi komputasi
Berikutnya datang menyenangkan bagian: membandingkan efisiensi komputasi berbagai algoritma. Di sini kita akan melihat waktu perhitungan sebagai fungsi dari jumlah poin dalam distribusi untuk kasus 1-dimensi. Seperti disebutkan di atas, beberapa algoritma juga menerapkan perhitungan yang multi-dimensi: skala dengan jumlah poin harus tidak mengubah lumayan dalam kasus multi-dimensi. Di sini dan seluruh, kita akan menghitung KDE untuk 5000 query poin. Untuk kejelasan, fungsi plot_scaling yang digunakan di sini didefinisikan pada akhir notebook: jika Anda men-download dan menjalankan notebook ini, silakan gulir ke bawah dan mengeksekusi sel pertama.
Scaling dengan jumlah poin
Pertama kita akan melihat skala dengan jumlah poin dalam distribusi masukan, menyebar dari 10 poin ke 10.000 poin:
In [9]:
plot_scaling(N=np.logspace(1, 4, 10),
kwds={‘Statsmodels-U’:{‘fft’:False}});
SciPy algoritma (jalur merah) pameran O diharapkan [N] O [N] scaling untuk implementasi KDE naif. Implementasi berbasis pohon di scikit-belajar sedikit lebih baik untuk sejumlah besar poin (untuk dataset kecil, overhead bangunan pohon mendominasi). Cara statsmodels kedua lumayan lambat: khususnya, implementasi KDEMultivariate menampilkan overhead komputasi yang relatif besar.
Namun, benchmark ini tidak sepenuhnya adil untuk algoritma univariat Statsmodels atau Scikit-belajar algoritma. Untuk KDEUnivariate, kami tidak menggunakan versi FFT perhitungan; untuk Scikit-belajar, kami telah menetapkan dengan rtol dan atol ke nol, efektif meminta algoritma untuk perhitungan sempurna tepat yang memungkinkan node pohon sangat sedikit untuk dipotong dari perhitungan.
Mari kita mengubah ini, menggunakan FFT perhitungan untuk statsmodels dan mengatur dengan rtol = 1E-4 untuk scikit-belajar. Pengaturan kedua mengatakan bahwa kita ingin komputasi lebih cepat, dengan mengorbankan menerima kesalahan 0,01% dalam hasil akhir:
In [10]:
plot_scaling(N=np.logspace(1, 4, 10),
rtol=1E-4,
kwds={‘Statsmodels-U’:{‘fft’:True}});
Perhitungan FFT secara signifikan kecepatan perhitungan univariat statsmodels dalam hal jumlah besar poin. Pemenang sebenarnya di sini, meskipun, adalah Scikit-Pelajari penerapan: dengan membiarkan kesalahan Bagian 1 dalam 10.000, kita telah melesat perhitungan untuk dataset terbesar oleh faktor tambahan 5 atau lebih, membuat urutan besarnya lebih cepat daripada algoritma terbaik berikutnya.
Ketergantungan pada dengan rtol
Anda mungkin bertanya-tanya apa efek dengan rtol pada kecepatan perhitungan. Dalam kebanyakan situasi untuk scikit-belajar pengukur, meningkatkan dengan rtol akan secara langsung mengarah pada peningkatan efisiensi komputasi, sebagai node pohon jauh dapat dipotong sebelumnya dalam perhitungan.
Untuk menggambarkan hal ini, kita akan memplot perhitungan waktu sebagai fungsi dari dengan rtol, dari 11 bagian dalam 10161016 (efektif yang mengambang titik presisi pada mesin 64-bit) sepanjang jalan hingga 11 bagian dalam 1010 (yakni 10% kesalahan pada hasil):
In [11]: plot_scaling(N=1E4,
rtol=np.logspace(-16, -1, 10),
bandwidth=0.2);
Plot ini menampilkan langsung tradeoff antara presisi dan efisiensi yang diaktifkan oleh Scikit-belajar dari algoritma berbasis pohon. Setiap variasi dalam waktu untuk algoritma lain adalah hanya Statistik kebisingan: mereka tidak bisa mengambil keuntungan dari dengan rtol.
Ketergantungan pada Bandwidth
Satu efek agak kontra-intuitif berbasis pohon KDE perkiraan adalah bahwa bandwidth menjadi pertimbangan penting dalam waktu untuk komputasi. Hal ini karena bandwidth efektif mengontrol seberapa “dekat” poin adalah satu sama lain.
Ketika poin sangat jauh terpisah dalam kaitannya dengan ukuran kernel, kontribusi mereka terhadap kepadatan adalah sangat mendekati nol. Dalam kisaran ini, seluruh rombongan poin tersebut akan dihapus dari perhitungan. Ketika poin sangat dekat bersama-sama dalam kaitannya dengan ukuran kernel, jarak efektif adalah nol, dan seluruh rombongan tersebut poin di pohon dapat dianggap, sebagai sebuah kelompok, berkontribusi kontribusi maksimal kernel.
Perhitungan KDE berbasis pohon di Scikit-belajar mengambil keuntungan dari situasi ini, menyebabkan ketergantungan yang kuat waktu perhitungan pada bandwidth: untuk bandwidth yang sangat besar dan sangat kecil, sangat cepat. Untuk bandwidth di suatu tempat di tengah, bisa lebih lambat dari algoritma lainnya, terutama karena overhead komputasi membangun dan melintasi pohon:
In [12]:
plot_scaling(N=1E4, rtol=1E-4,
bandwidth=np.logspace(-4, 3, 10));
Untungnya bandwidth tidak efisien umumnya terlalu besar untuk menjadi berguna dalam praktek, dan bandwidth di kisaran lebih cepat menguntungkan untuk sebagian besar masalah.
Perhatikan bahwa hanya hasil belajar Scikit sangat tergantung pada bandwidth: implementasi lain punya waktu perhitungan konstan untuk dalam kesalahan acak. Ini adalah karena implementasi KDE berbasis pohon yang digunakan oleh Scikit-belajar, karena alasan-alasan yang dibahas di atas. Bandwidth optimal dekat 0,15 terletak di wilayah komputasi relatif cepat, terutama dibandingkan dengan algoritma alternatif.
Ketergantungan pada Kernel
Seperti yang Anda duga, prinsip yang sama yang menyebabkan ketergantungan perhitungan waktu bandwidth juga menyebabkan ketergantungan perhitungan waktu pada bentuk kernel yang digunakan. Untuk jauh poin, kernel beberapa memiliki bobot lebih dekat ke nol daripada yang lain: dalam kasus kernel dengan celana pendek “keras” (seperti tophat kernel), jauh poin berkontribusi persis nol kepadatan, dan dengan demikian speedup akan menyadari bahkan jika dengan rtol dan atol adalah nol.
Pada ekstrem yang berlawanan, poin yang sangat dekat dibandingkan dengan ukuran kernel, kernel yang sangat “datar” (misalnya tophat kernel) akan memungkinkan seluruh rombongan poin untuk dipertimbangkan sekaligus, ketika kernel yang kurang datar (misalnya linear atau eksponensial kernel) tidak akan mengakui efisiensi tersebut.Kita bisa melihat ini di bawah ini: di sini kita akan plot waktu perhitungan sebagai fungsi dari lebar kernel untuk implementasi Scikit-belajar, menggunakan beberapa kernel:
In [13]:
plot_scaling_vs_kernel(kernels=[‘tophat’, ‘linear’, ‘exponential’,
‘gaussian’],
bandwidth=np.logspace(-4, 3, 10),
N=1E4, rtol=1E-4);
Melihat dua daerah menarik: untuk bandwidth yang sangat kecil, kernel dengan keras cutoff (tophat, linear) keluar melakukan kernel dengan sebuah lancip yang luas (gaussian, eksponensial). Dan tapered kernel yang jatuh lebih cepat (gaussian, dengan p∼exp p∼exp (−d2) (−d2)) yang lebih efisien dihitung dari kernel yang jatuh lebih perlahan-lahan (eksponensial, dengan p∼exp p∼exp (−d) (−d)).
Di ujung lain, kernel dengan sangat datar profil dekat nol (tophat, gaussian) menunjukkan peningkatan bandwidth besar, sementara kernel dengan profil yang sangat curam dekat zero (linier, eksponensial) menunjukkan tidak ada perbaikan: mereka mencapai batas asimtotik cara dimana O O [MN] [MN] jarak harus dihitung.
Untuk mengukur baik, berikut adalah scalings perhitungan dengan rtol dan dengan N:
In [14]: plot_scaling_vs_kernel(kernels=[‘tophat’, ‘linear’, ‘exponential’,
‘gaussian’],
bandwidth=0.15, N=1E4, rtol=np.logspace(-16, -1, 10));
Seperti yang kami harapkan, untuk ukuran wajar kernel, dengan rtol tidak signifikan untuk kernel dengan cutoff keras, dan menjadi lebih signifikan adalah “sayap” kernel yang lebih luas. Skala dengan N juga karena kami telah mengharapkan:
In [15]:
plot_scaling_vs_kernel(kernels=[‘tophat’, ‘linear’, ‘exponential’,
‘gaussian’], bandwidth=0.15, rtol=1E-4, N=np.logspace(1, 4, 10));
Ketergantungan ini waktu perhitungan bentuk bandwidth dan kernel adalah masalah untuk diingat ketika Anda memilih algoritma KDE: dalam kasus pendekatan berbasis pohon, bandwidth dan kernel dapat masalah untuk lagu beberapa kali lipat dalam perhitungan waktu.
MATLAB KDE Class Description
Kelas KDE adalah kelas matlab umum untuk k-dimensi kernel estimasi. Tertulis dalam campuran matlab “.m” file dan MEX C++ code. Dengan demikian, untuk menggunakannya Anda akan perlu untuk dapat mengkompilasi kode C++ code Matlab. Perhatikan bahwa default compiler untuk Windows tidak mendukung c + +, sehingga Anda akan membutuhkan GCC di Linux, atau GCC atau Visual C++ for Windows. Pertumpahan darah persediaan lingkungan pengembangan bagus bersama dengan kompilator MinGW. Lihat Halaman ini untuk membantu menyiapkan MEX dengan MinGW.
[Catatan: karena beberapa dikompilasi mexglx dan dll file disertakan, Anda mungkin tidak perlu untuk melakukan kompilasi ulang toolbox sekali; Namun, saya merekomendasikan hal ini jika mungkin alasan kompatibilitas.]
Kernel yang didukung adalah:
• Gaussian
• Epanetchnikov (truncated quadratic)
• Laplacian (Double-exponential)
Untuk perkiraan kepadatan multivarian, kode mendukung produk kernel–kernel yang produk fungsi kernel di masing-masing dimensi. Misalnya, untuk Gaussian kernel ini setara dengan memerlukan kovarians diagonal. Juga dapat mendukung bandwidth non-seragam kernel–yaitu bandwidth yang berbeda atas kernel pusat.
Implementasi menggunakan “kd-pohon”, representasi heirarchical set titik yang cache cukup statistik tentang lokasi jalur dll untuk mencapai potensi speedups dalam perhitungan. Untuk Epanetchnikov kernel ini dapat menerjemahkan ke dalam speedups dengan tidak kehilangan presisi; tetapi untuk kernel dengan dukungan yang tak terbatas memberikan perkiraan tingkat toleransi, yang memungkinkan timbal balik antara kecepatan evaluasi kualitas dan komputasi. Secara khusus, kami menerapkan Alex Gray’s “Dual pohon” evaluasi algoritma; Lihat abu-abu dan Moore, “sangat cepat multivarian Kernel estimasi menggunakan melalui komputasi geometri”, dalam proses, 2003 Rapat Manzanar bersama untuk lebih jelasnya.
Ini memberikan parameter toleransi yang merupakan kesalahan persen (dari yang tepat, N\mathcircumflex
2 perhitungan) pada nilai setiap dievaluasi titik. Dalam umum, “toleransi” parameter dalam kode matlab / catatan mengacu pada toleransi persen ini. Kesalahan persentase ini diterjemahkan menjadi mutlak kesalahan aditif pada log berarti-kemungkinan, misalnya. Pengecualian untuk ini adalah fungsi gradien calcuation, yang menghitung menggunakan nilai mutlak toleransi. Ini karena sulitnya mencari persentase pasti ketika fungsi dihitung tidak benar-benar positif.
Kami juga baru dilaksanakan disebut meningkat Fast Gauss mengubah, dijelaskan dalam [Yang, Duraiswami, dan Gumerov, “Peningkatan cepat Gauss mengubah”, dikirimkan ke Siam jurnal dari komputasi ilmiah]. Ini sering melakukan jauh lebih cepat daripada algoritma pohon ganda yang disebutkan di atas, tetapi batas-batas kesalahan yang mengendalikan perhitungan sering cukup longgar, dan agak berat (misalnya, sangat sulit untuk mendapatkan batas-batas kesalahan pecahan disediakan & digunakan oleh metode dual pohon dan fungsi lainnya dalam KDE toolbox). Dengan demikian untuk saat ini kami telah meninggalkan IFGT terpisah, dengan alternatif kontrol untuk kompleksitas komputasi (Lihat di bawah, dan file “evalIFGT.m”).
Definisi kelas KDE Matlab
Konstruktor:
Accesor: (akses data, yang sangat terbatas atau tidak ada pengolahan req data)
Display: (visualisasi / Keterangan)
Statistics: (manfaat statistik & operasi di kde)
Mixture products: (NBP stuff) ( HANYA KERNEL GAUSSIAN)
BAB III Perangkat Lunak
Definisi MATLAB (Matrix Laboratory)
MATLAB (Matrix Laboratory) adalah sebuah program untuk menganalisis dan mengkomputasi data numerik, dan MATLAB juga merupakan suatu bahasa pemrograman matematika lanjutan, yang dibentuk dengan dasar pemikiran yang menggunakan sifat dan bentuk matriks.
Dikembangkan oleh The Mathwork Inc. yang hadir dengan fungsi dan karakteristik yang berbeda dengan bahasa pemrograman lain yang sudah ada lebih dahulu seperti Delphi, Basic maupun C++.
Pengenalan dan program aplikasi MATLAB (Matrix Laboratory)
Awalnya program aplikasi MATLAB ini merupakan suatu interface untuk koleksi rutin-rutin numerik dari proyek LINPACK dan EISPACK, dan dikembangkan dengan menggunakan bahasa FORTRAN, namun sekarang ini MATLAB merupakan produk komersial dari perusahaan Mathworks, Inc.
Yang selanjutnya dikembangkan dengan menggunakan bahasa C++ dan assembler. MATLAB telah berkembang menjadi sebuah environment pemprograman yang canggih yang berisi fungsi-fungsi built-in untuk melakukan tugas pengolahan sinyal, aljabar linier, dan kalkulasi matematis lainnya. MATLAB juga menyediakan berbagai fungsi untuk menampilkan data, baik dalam bentuk dua dimensi maupun dalam bentuk tiga dimensi.
MATLAB juga bersifat extensible, dalam arti bahwa seorang pengguna dapat menulis fungsi baru untuk menambahkan pada library, ketika fungsi-fungsi built-in yang tersedia tidak dapat melakukan tugas tertentu. Kemampuan pemrograman yang dibutuhkan tidak terlalu sulit bila kita telah memiliki pengalaman dalam pemrograman bahasa lain seperti C, PASCAL, atau FORTRAN. (sumber; http://www.mathworks.com)
MATLAB juga merupakan bahasa pemrograman tingkat tinggi berbasis pada matriks, sering digunakan untuk teknik komputasi numerik, yang kita gunakan untuk menyelesaikan masalah-masalah yang melibatkan operasi matematika elemen, matrik, optimasi, aproksimasi dll. Sehingga Matlab banyak digunakan pada :
• Matematika dan komputansi,
• Pengembangan dan algoritma,
• Pemrograman modeling, simulasi, dan pembuatan prototipe,
• Analisa data , eksplorasi dan visualisasi,
• Analisis numerik dan statistik,
• Pengembangan aplikasi teknik.
Matlab juga merupakan bahasa pemrograman computer berbasis window dengan orientasi dasarnya adalah matrik, namun tidak menutup kemungkinan program ini untuk pengerjaan permasalahan non matrik. Selain itu matlab juga merupakan bahasa pemrograman yang berbasis pada obyek (OOP), namun karena matlab bukanlah type compiler, maka program yang dihasilkan tidak dapat berdiri sendiri.
Agar hasil program dapat berdiri sendiri maka harus dilakukan transfer pada bahasa pemrograman yang lain, misalnya C++. Pada matlab terdapat tiga windows yang digunakan dalam operasinya yaitu ;
• Command windows (layar perintah)
• Figure windows (layar gambar),
• Note Pad (sebagai editor program).
Fungsi dari setiap window MATLAB
A. MATLAB Command window/editor
• MATLAB Command window/editor merupakan window yang muncul ketika kita membuka pertama kali setiap kita menjalankan aplikasi MATLAB,
• Pada window kita dapat melakukan akses-akses ke command-command MATLAB dengan mengetikkan barisan-barisan ekpresi MATLAB, seperti mengakses help window dan lain-lainnya.
• Command Window digunakan untuk menjalankan program/perintah yang dibuat pada layar editor matlab. Pada windows ini kita dapat mengakses perintah maupun komponen pendukung (help file dll) yang ada di matlab secara langsung. Salah satu cirri dari command windows ditandai dengan tanda prompt \left(\gg\right)
.
B. MATLAB Editor/Debugger (Editor M-File/Pencarian Kesalahan)
Window ini merupakan tool yang disediakan oleh Matlab 5 keatas. Berfungsi sebagai editor script Matlab (M-file). Meskipun sebenarnya script ini untuk pemrograman Matlab dapat saja menggunakan editor yang lain seperi notepad, wordpad dan bahkan word.
Untuk mengakses window m-file ini dapat kita lakukan dengan cara :
1. Memilih menu File – kemudian pilih New
2. Pilih m-file, maka MATLAB akan menampilkan editor window
Untuk menampilkan editor M-file selain dengan cara diatas, kita dapat juga melakukanya dengan cara :
\gg edit
C. Figure Windows
Window ini merupakan hasil visualisasi dari script Matlab. Namun Matlab memberi kemudahan bagi programer untuk mengedit window ini juga memberikan program khusus untuk itu. Sehingga selain berfungsi sebagai visualisasi output dapat juga sekaligus menjadi media input yang interaktif.
D. MATLAB help window
MATLAB juga menyediakan sistem help yang dapat diakses dengan perintah help. Misalnya, untuk memperoleh informasi mengenai fungsi elfun yaitu fungsi untuk trigonometri, eksponensial, complex dan lain-lain, maka kita hanya perlu mengetikkan perintah berikut :
\gg
help elfun
kemudian menekan enter maka di layar akan muncul informasi dalam bentuk teks pada layar MATLAB yaitu : Elementary math functions.
Trigonometric.
• sin – Sine.
• sinh – Hyperbolic sine.
• asin – Inverse sine.
• asinh – Inverse hyperbolic sine.
• cos – Cosine.
• cosh – Hyperbolic cosine.
• acos – Inverse cosine.
• acosh – Inverse hyperbolic cosine.
• tan – Tangent.
• tanh – Hyperbolic tangent.
• atan – Inverse tangent.
• atan2 – Four quadrant inverse tangent.
• atanh – Inverse hyperbolic tangent.
• sec – Secant.
• sech – Hyperbolic secant.
• asec – Inverse secant.
• asech – Inverse hyperbolic secant.
• csc – Cosecant.
• csch – Hyperbolic cosecant.
• acsc – Inverse cosecant.
• acsch – Inverse hyperbolic cosecant.
• cot – Cotangent.
• coth – Hyperbolic cotangent.
• acot – Inverse cotangent.
• acoth – Inverse hyperbolic cotangent.
Exponential.
• exp – Exponential.
• log – Natural logarithm.
• log10 – Common (base 10) logarithm.
• log2 – Base 2 logarithm and dissect floating point number.
• pow2 – Base 2 power and scale floating point number.
• sqrt – Square root.
• nextpow2 – Next higher power of 2.
Complex.
• abs – Absolute value.
• angle – Phase angle.
• complex – Construct complex data from real and imaginary parts.
• conj – Complex conjugate.
• imag – Complex imaginary part.
• real – Complex real part.
• unwrap – Unwrap phase angle.
• isreal – True for real array.
• cplxpair – Sort numbers into complex conjugate pairs.
Rounding and remainder.
• fix – Round towards zero.
• floor – Round towards minus infinity.
• ceil – Round towards plus infinity.
• round – Round towards nearest integer.
• mod – Modulus (signed remainder after division).
• rem – Remainder after division.
• sign – Signum.
Perintah yang sangat berguna untuk mempelajari pemrograman MATLAB yaitu intro, yang membahas konsep-konsep dasar tentang bahasa MATLAB. Selain itu juga terdapat banyak program demonstrasi yang mengilustrasikan berbagai kapabilitas MATLAB, yang dapat dimulai dengan perintah demo.
Atau untuk lebih lengkapnya dapat kita lihat di tampilan MATLAB, dengan cara memilih menu Window kemudian pilih help window, dan untuk mengetahui informasi yang ada maka dapat dilakukan dengan mengeklik dua kali info yang ada di MATLAB Help Window, atau dengan mengetikkan informasi yang ingin didapatkan pada sudut sebelah kiri MATLAB Help Window.
Fungsi pengaturan file dalam MATLAB :
• dir / ls : Digunakan untuk melihat isi dari sebuah direktori aktif.
• cd : Digunakan untuk melakukan perpindahan dari direktori aktif.
• pwd : Digunakan untuk melihat direktori yang sedang aktif.
• mkdir : Digunakan untuk membuat sebuah direktori.
• what : Digunakan untuk melihat nama file m dalam direktori aktif.
• who : Digunakan untuk melihat variabel yang sedang aktif.
• whos : Digunakan untuk menampilkan nama setiap variabel.
• delete : Digunakan untuk menghapus file.
• clear : Digunakan untuk menghapus variabel.
• clc : Digunakan untuk membersihkan layar.
• doc : Digunakan untuk melihat dokumentasi The MathWorks, Inc. dalam format html secara online.
• demo : Digunakan untuk mencoba beberapa tampilan demo yang disediakan oleh Matlab.
Fungsi help plot di command window
• Function subplot digunakan untuk membuat suatu figure dapat memuat lebih dari satu gambar. Perintah subplot didefinisikan sebagai :
subplot(n,m,i)
Perintah ini membagi suatu figure menjadi suatu matriks m x n area grafik dan i, berfungsi sebagai indeks penomoran gambar. Subplot dinomori dari kiri ke kanan dimulai dari baris teratas.
• Function title digunakan untuk memberi judul pada gambar. Input dari perintah title berupa string. Syntax title sebagai berikut :
title(‘string’)
• Function xlabel digunakan untuk memberi label sumbu pada sumbu x. Input dari perintah xlabel berupa string. Syntax xlabel sebagai berikut :
xlabel(‘string’)
• Function ylabel digunakan untuk memberi label sumbu y. Input dari perintah ylabel berupa string. Syntax ylabel sebagai berikut :
ylabel(‘string’)
• Function axis digunakan untuk mengatur nilai minimum dan maksimum dari sumbu x dan sumbu y , function axis didefinisikan sebagai :
axis([ xmin xmax ymin ymax ])
• Function grid digunakan untuk memberi grid pada gambar kita (sumber: http://dir.yahoo.com/science/mathematics/software/matlab)
\begin{verbatim}
Syntax-syintax dasar Matlab :
Operasi Dasar Matematika
+ = tambah = penjumlahan
– = kurang = pengurangan
* = perkalian (vektor) = perkalian (vektor)
.* = perkalian (skalar) = perkalian (skalar)
/ = bagi = pembagian
^ = pangkat = perpangkatan
Fungsi syintax-syintax lainya:
>> eye(N) = matrix identitas NxN
>> inv(A) = invers matrix A
>> det(A) = determinan matrix A
>> A’ = transpose matrix A
>> Pi = phi = 3.14
>> exp(a) = e^a
>> sin(a) = sinus sudut a dalam rad
>> sinh(a) = fungsi hiperbolik sinus
>> log(a) = ln a
>> log2(a) = 2log a
>> log10(a) = 10log a
Ex :Membuat Persamaan Matriks:
>> [1 2 ; 3 4] =
Ex : Membuat Persamaan Quadrat
>> tf([a b],[c d e]) =
>> zpk([a -b],[-c d],k) =
Ex : Mencari Integral Fungsi
>> syms a b t = definisi variabel a, b, t
>> int(x) = integral fungsi x
>> int(x,t,a,b) =
Ex : Perintah Lain-lain
>> i=1:1:10 = membuat deret 1 s/d 10
>> max(A) = nilai max. pada matrix A
>> clear = clear workspace
>> clc = clear command window
>> help
Ex : Membuat Grafik
>> plot(a,b) = plot a (sb x) dan b (sb y)
>> figure = menambah figure baru
>> hold on = menimpa gambar lama
>> hold off = membersihkan figure
>> plot (x,y,’–rs’,’Linewidth’,2,’MarkerEdgeColor’,’k’,’MarkerFaceColor’,’g’, ’MarkerSize’,2)
artinya : — garis putus-putus, r red, s square, tebal garis 2, warna garis kotak hitam, warna didalam kotak hijau, ukuran kotak 2.
Fitur FiturPada MATLAB
Fitur-fitur MATLAB sudah banyak dikembangkan, yang lebih kita kenal dengan nama toolbox. Sangat penting bagi pengguna Matlab, toolbox mana yang mendukung untuk learn dan apply technologi yang sedang dipelajarinya. Toolbox tersebut merupakan kumpulan dari fungsi-fungsi MATLAB (M-files) yang dikembangkan ke suatu lingkungan kerja MATLAB untuk memecahkan masalah dalam kelas particular.
Area-area yang sudah dapat dipecahkan dengan toolbox saat ini meliputi pengolahan sinyal, system kontrol, neural networks, fuzzy logic, wavelets, dan lain-lain. Selain toolbox, matlab juga dilengakapi dengan Simulink yang sangat powerfull untuk mensimulasikan dan menyelesaikan masalah – masalah yang berhubungan dengan Pemodelan Matematika. Dengan Simulink, kita dapat dengan mudah mengecek kestabilan suatu model Matematika. Sebagai sebuah sistem, MATLAB tersusun dari 5 bagian utama:
1.Development Environment.
Merupakan sekumpulan perangkat yang membantu anda untuk menggunakan fungsi-fungsi dan file-file MATLAB. Perangkat ini merupakan sebuah graphical user interfaces (GUI). Termasuk di-dalamnya adalah MATLAB desktop dan Command Window, command history, sebuah editor dan debugger, dan browsers untuk melihat help, workspace, files, dan search path.
2.MATLAB Mathematical Function Library.
Merupakan sekumpulan algoritma komputasi mulai dari fungsi-fungsi dasar seperti: sum, sin, cos, dan complex arith-metic, sampai dengan fungsi-fungsi yang lebih komplek seperti matrix inverse, ma-trix eigenvalues, Bessel functions, dan fast Fourier transforms.
3.MATLAB Language.
Merupakan suatu high-level matrix/array language dengan control flow statements, functions, data structures, input/output, dan fitur-fitur object-oriented programming. Yang memungkinkan bagi kita untuk melakukan kedua hal baik “pemrograman dalam lingkup sederhana” untuk hasil yang cepat, dan “pemrograman dalam lingkup yang lebih besar” untuk hasil dan aplikasi yang komplek.
4.Graphics.
MATLAB memiliki fasilitas untuk menampilkan vector dan matrik sebagai suatu grafik. Di dalamnya melibatkan high-level functions (fungsi-fungsi level tinggi) untuk visualisasi data dua dimensi dan data tiga dimensi, image processing, animation, dan graphics presentation.Ini juga melibatkan fungsi level rendah yang memungkinkan bagi anda untuk membiasakan diri untuk memunculkan grafik mulai dari bentuk yang sederhana sampai dengan tingkatan graphical userinterfaces (GUI).
5.MATLAB Application Program Interface (API)
Merupakan suatu library yang memungkinkan program yang telah ditulis dalam bahasa C dan Fortran mampu berinterakasi dengan MATLAB. Melibatkan fasilitas untuk pemanggilan routines dari MATLAB (dynamic linking), pemanggilan MATLAB sebagai computational engine, dan membaca serta menuliskan MAT-files.
Memulai MATLAB
JIka computer sudah terinstal program Matlab, maka kita dapat dengan mudah membuka program Matlab. Dengan cara klik Menu Start pada Desktop, kemudian pilih All Program, lalu pilih program Matlab sesuai dengan versi yang sudah terinstal atau klik 2 kali pada shortcut program Matlab pada Desktop. Tampilan program Matlab seperti gambar di bawah ini :
Untuk percobaan pertama, kita akan membuat 2 variabel yakni panjang dan lebar dengan nilai tertentu. Kemudian akan di cari Luas dari 2 variabel yang disimpan tersebut.
>>panjang=10 (lalutekan “enter”)
panjang =
10
>>lebar=5
lebar =
5
>>Luas=panjang*lebar
Luas =
50
>> Untuk percobaan kedua, akan dicoba operasi matrik. Operasi yang akan dicoba adalah operasi penambahan.
>> a=[1 2 3 4]
a =
1 2 3 4
>> b=[8 7 6 5]
b =
8 7 6 5
>> c=a+b
c =
9 9 9 9
>> Untuk percobaan ketiga, akan dicoba program yang memanfaatkan fungsi – fungsi bawaan Matlab seperti Sinus, Cosinus, dan pi. Selain itu juga akan dicoba perintah dengan menambahkan;
Yang berfungsi untuk menyembunyikan hasil yang baru saja dikerjakan dengan Matlab.
>> A=pi/6;
>> sin(A)
ans =0.5000
>>cos(A)
ans =0.8660>>
BAB IV Contoh Kasus Pemanfaatan Perangkat Lunak
CONTOH KASUS 1
Jodi ingin mengajak Dina makan di restoran. Sebelum berangkat dinner, Jodi ingin membagi kebahagiaannya pada malam ini kepada pelayan restoran dengan memberikan uang tip. Dia akan memberikan uang tip sebesar 5-25% dari total belanjanya. Besarnya uang TIP akan dilihat dari kualitas MAKANAN (food) dan tingkat PELAYANAN(service). Bantulah Jodi untuk memutuskan besarnya uang tip yang akan diberikan kepada pelayan restoran, jika setelah menikmati hidangan dan fasilitas PELAYANAN Jodi memberi nilai, sebagai berikut :
PELAYANAN = 7
MAKANAN = 8
Penilaian PELAYANAN dan MAKANAN berada pada rentang nilai 0-10. Ingat, kisaran uang tip adalah 5 – 25%.
Adapun aturan pemberian tip yg ditetapkan oleh Jodi adalah sebagai berikut:
1. Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah
2. Jika PELAYANAN Sedang, maka TIP Standar
3. Jika PELAYANAN Bagus ATAU MAKANAN Lezat, maka TIP Mahal
Pembahasan:
Dapat kita simpulkan bahwa pasangan input-output dari kasus kita adalah sebagai berikut :
• INPUT: PELAYANAN (Jelek, Sedang, Bagus) dan MAKANAN (Tengik, Lezat)
• OUTPUT: TIP (Murah, Standar, Mahal)
Tahapan dalam desain fuzzy menggunakan bahasa pemrograman memiliki kemiripan dengan desain fuzzy menggunakan FIS Editor. Langkah awal adalah mendefinisikan apaa saja yang menjadi pasangan input dan output beserta fungsi keanggotaannya masing-masing. Pertama, kita buat nama file FIS kita. Langkah ini menggunakan sintaks newfis. FIS berarti Fuzzy Inference Systems. Misalkan saat ini kita beri nama projek kita DinnerForTwo.
a=newfis(‘DinnerForTwo’);
Selanjutnya, definisikan input pertama kita, yaitu PELAYANAN, yang memiliki rentang antara 0 sampai 10. Gunakanlah sintaks addvar.
a=addvar(a,’input’,’PELAYANAN’,[0 10]);
Tambahkan semua fungsi keanggotaan yang menyusun variabel input PELAYANAN. Misalkan kita beri nama jenis pelayanan berupa Jelek, Sedang, dan Bagus. Setiap fungsi keanggotaan harus dilengkapi dengan parameter pembentuknya. Karena berupa segitiga (trimf), maka wajib memiliki tiga input parameter, yaitu titik awal, puncak dan titik akhir. Untuk menambahkan fungsi keanggotaan (membership function), gunakanlah sintaks addmf.
a=addmf(a,’input’,1,’Jelek’,’trimf’,[-404]);
a=addmf(a,’input’,1,’Sedang’,’trimf’,[159]);
a=addmf(a,’input’,1,’Bagus’,’trimf’,[6 10 14]);
Untuk memastikan bagaimana bentuk dari input PELAYANAN dan masing-masing fungsi keanggotaannya, dapat kita plot dengan sintaks plotmf, sebagai berikut: plotmf(a,’input’,1)
Hasilnya tampak seperti berikut:
Gambar 1. Fungsi Keaanggotaan Input PELAYANAN
Lakukan hal yang sama untuk variabel input kedua, yaitu MAKANAN. MAKANAN memiliki rentang yang sama dengan PELAYANAN, yaitu dari 0 sampai dengan 10. Khusus untuk MAKANAN, fungsi keanggotaan yang dibentuk menggunakan keanggotaan trapesium (trapmf). Input parameter yang digunakan sebanyak empat titik, yaitu titik awal, titik puncak pertama, titik puncak kedua, dan titik akhir. Logikanya sama persis dengan bagaimana menggambarkan sebuah segitiga, hanya parameternya yang berbeda.
a=addvar(a,’input’,’MAKANAN’,[010]);
a=addmf(a,’input’,2,’Tengik’,’trapmf’,[0013]);
a=addmf(a,’input’,2,’Lezat’,’trapmf’,[7 9 10 10]);
Untuk melihat hasilnya, kita gunakan sintaks berikut: figure; plotmf(a,’input’,2)
Gambar 2. Fungsi Keaanggotaan Input MAKANAN
Definisi input beserta fungsi keanggotaannya telah selesai. Sekarang, saatnya kita buat untuk fungsi output, yaitu TIP. Langkahnya mirip dengan definisi kedua input tadi.
a=addvar(a,’output’,’TIP’,[030]);
a=addmf(a,’output’,1,’Murah’,’trimf’,[0510]);
a=addmf(a,’output’,1,’Standar’,’trimf’,[101520]);
a=addmf(a,’output’,1,’Mahal’,’trimf’,[20 25 30]);
Mari kita lihat hasilnya: figure; plotmf(a,’output’,1)
Gambar 3. Fungsi Keaanggotaan output TIP
Setelah pasangan input-output terdefinisi, langkah selanjutnya adalah menyusun aturan-aturan yang berlaku dalam sistem fuzzy kita.Penulisan aturan ini perlu diperhatikan dengan baik.Sebab, penulisannya berupa matriks, dan kesalahan kecil dapat berakibat sistem tidak sesuai yang kita inginkan. Jika kita memiliki m input dan n output, maka matriks yang disusun harus memiliki kolom m+n+2. Sebagai contoh jika kita merujuk pada kasus kita, maka kita memiliki dua input (PELAYANAN dan MAKANAN), dan satu output (TIP). Dengan demikian, total kolom yang digunakan adalah 2+1+2 = 5. Nilai m kolom pertama mewakili indeks dari input kita. Contoh, jika input PELAYANAN memiliki anggota: Jelek, Sedang dan Bagus, maka indeks 1 mewakili jelek, indeks 2 mewakili Sedang, dan indeks 3 meakili Bagus. Nilai n kolom berikutnya adalah indeks dari output kita. Nilai kolom m+n+1 mewakilipembobotan dari aturan kita.Bobot ini memiliki nilai antara 0 – 1.Umumnya, nilai ini kita biarkan menjadi 1.Nilai kolomm+n+1 mewakili operator dalam aturan fuzzy. Nilai 1 akan mewakili logika AND, sedangkan nilai 2 mewakili OR.
Aturan1: Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah aturan1 = [1 1 1 1 2];
Aturan2: Jika PELAYANAN Sedang, maka TIP Standar aturan2 = [2 0 2 1 0]; %
Aturan3: Jika PELAYANAN Bagus ATAU MAKANAN Lezat, maka TIP Mahal aturan3 = [3 2 3 1 2];
gabungkan semua aturan tersebut dengan sintaks: listAturan = [aturan1;aturan2;aturan3]; a = addrule(a,listAturan);
Untuk memastikan apakah aturan kita telah benar, mari gunakan sintaks berikut yang dieksekusi melalui Command Window: >>showrule(a)
ans =
1.If (PELAYANAN is Jelek) or (MAKANAN is Tengik) then (TIP is Murah) (1)
2.If (PELAYANAN is Sedang) then (TIP is Standar) (1)
3. If (PELAYANAN is Bagus) or (MAKANAN is Lezat) then (TIP is Mahal) (1)
Sekarang, kita sudah di penghujung pemrograman kita. Pada langkah terakhir, kita akan melakukan evaluasi hasil akhir dari sistem fuzzy kita. Seperti yang telah kita ketahui bahwa nilai PELAYANAN = 7, dan MAKANAN = 8
gunakalah sintaks evalfis, sebagai berikut:
>> evalfis([7 8], a) ans = 19.9980
Nilainya sama dengan menggunakan penurunan matematis dan FIS Editor, yaitu sebesar 20%.
Berikut koding selengkapnya:
1. Buatlah variabel FIS a=newfis(‘DinnerForTwo’);
2. Tambahkan input PELAYANAN a=addvar(a,’input’,’PELAYANAN’,[0 10]);
3. Tambahkan fungsi keanggotaan PELAYANAN: Jelek, Sedang, Bagus
4. a=addmf(a,’input’,1,’Jelek’,’trimf’,[-4 0 4]);
5. a=addmf(a,’input’,1,’Sedang’,’trimf’,[1 5 9]);
6. a=addmf(a,’input’,1,’Bagus’,’trimf’,[6 10 14]);
7. plot input PELAYANAN utk melihat hasilnya plotmf(a,’input’,1)
8. Tambahkan input MAKANAN
9. a=addvar(a,’input’,’MAKANAN’,[0 10]);
10. Tambahkan fungsi keanggotaan MAKANAN: Tengik, Lezat
11. a=addmf(a,’input’,2,’Tengik’,’trapmf’,[0 0 1 3]);
12. a=addmf(a,’input’,2,’Lezat’,’trapmf’,[7 9 10 10]);
13. plot input MAKANAN utk melihat hasilnya figure; plotmf(a,’input’,2)
14. Tambahkan output TIP
15. a=addvar(a,’output’,’TIP’,[0 30]);
16. Tambahkan fungsi keanggotaan TIP: Murah, Standar, Mahal
17. a=addmf(a,’output’,1,’Murah’,’trimf’,[0 5 10]);
18. a=addmf(a,’output’,1,’Standar’,’trimf’,[10 15 20]);
19. a=addmf(a,’output’,1,’Mahal’,’trimf’,[20 25 30]);
20. plot output TIP utk melihat hasilnya figure; plotmf(a,’output’,1)
21. Sekarang masukkan aturan-aturan
22. Aturan1: Jika PELAYANAN Jelek ATAU MAKANAN Tengik, maka TIP Murah
23. aturan1 = [1 1 1 1 2];
24. Aturan2: Jika PELAYANAN Sedang, maka TIP Standar
25. aturan2 = [2 0 2 1 0];
26. Aturan3: Jika PELAYANAN Bagus ATAU MAKANAN Lezat, maka TIP Mahal
27. aturan3 = [3 2 3 1 2];
28. Padukan semua aturan listAturan = [aturan1;aturan2;aturan3];
29. a = addrule(a,listAturan);
30. Perlihatkan aturan, apakah sudah sesuai?
31. showrule(a);
32. Lakukan evaluasi untuk PELAYANAN = 7 dan MAKANAN = 8
33. evalfis([7 8], a)
CONTOH KASUS 2
Pembahasan terkait logika fuzzy adalah untuk menyelesaikan permasalah suatu sistem yang sulit dimodelkan secara matematis.Untuk belajar tentang logika fuzzy membutuhkan tool untuk dapat menerapkan logika tersebut.Salah satu tool yang mudah dan umum digunakan adalah dengan menggunakan Matlab Fuzzy Logic Toolbox.Pada aplikasi logika fuzzy menggunakan Matlab ini yang perlu dipahami adalah bagian-bagian yang ada pada logika fuzzy.Bagian tersebut adalah fuzzifikasi, rule evaluasi dan defuzzyfikasi.
Langkah-langkah untuk membuat logika fuzzy pada Matlab adalah :
1. Buka program Matlab, dan ketik pada command window >> fuzzy.
2. Instruksi tersebut akan menampilkan fuzzy toolbox, seperti gambar dibawah ini :
3. Pada langkah ini, tentukan jumlah input dari fuzzy toolbox, dalam hal ini akan digunakan 2 buah input, caranya adalah pilih menu Edit > Add Variable pilih Input.
4. Dalam kasus disini akan diambil, tentang sistem penerimaan karyawan dimana inputnya adalah hasil tes potensi akademik dan psikologi.
5. Letakkan kursor pada kotak input 1 dan double click pada kotak tersebut atau pilih Edit > Membership Functions.
6. Atur Input 1 Range = 0..100, untuk MBF 1 : Name = Rendah, Type = trapmf (trapesium membership function), params = [0 0 20 50]. MBF2 : Name = Sedang, Type = trimf (triangle membership function), params = [20 50 80]. MBF 3 Name =Tinggi, Type = trapmf , params = [50 80 100 100]. Detail hasilnya seperti gambar dibawah ini :
7. Klik kotak input 2 dan ulangi langkah no.6.
8. Klik kotak output untuk mengatur nilai membership functions pada output.
9. Atur Range = 0..100, untuk MBF 1 : Name = Ditolak, Type = trapmf , params = [0 0 20 40]. MBF2 : Name = Dipertimbangkan, Type = trapmf, params = [10 40 60 90]. MBF 3 Name = Diterima, Type = trapmf , params = [60 80 100 100]. Detail hasilnya seperti gambar dibawah ini :
10. Setelah semua mbf input maupun output diatur sesuai dengan kebutuhan maka pengaturan terakhir adalah bagian rule evaluasi atau aturan fuzzy, caranya pilih menu Edit > Rules, deatil caranya seperti gambar dibawah ini :
11. Pada contoh kasus untuk sistem penerimaan karyawan disini rule evaluasinya adalah seperti ditunjukkan gambar dibawah ini, untuk mendapatkan rule evaluasi seperti ini adalah dengan memilih pasangan rule evaluasi untuk pasangan input 1, input 2 dan output. Caranya adalah pilih input 1,input 2 dan output kemudian klik Add rule, apabila terjadi kesalahan pilih rule evaluasi kemudian klik Delete rule.
12. Setelah selesai semua, pilih menu View > Rule.
13. Hasil dari sistem yang dibangun menggunakan fuzzy dapat, pada contoh kasus penerimaan karyawan ini adalah seperti gambar dibawah ini. Apabila ingin melihat hasil output logika
fuzzy, makagaris merah pada input 1 dan input 2 dapat digeser yang otomatis nilai output akan berubahmengikuti nilai-nilai input tersebut.
Pada buku ini nilai range, nilai mbf, type mbf dan susunan rule evaluasi hanya sebuah contoh kasus untuk sistem penerimaan karyawan dari dua jenis test. Jika dibuat dalam bentuk sistem yang berbeda perlu adanya penyesuaian komponen yang membangun logika fuzzy tersebut. Aplikasi logika fuzzy dengan menggunakan Matlab Fuzzy Toolbox sangat membantu bagi mereka yang baru belajar.Logika fuzzy sebagai pemrosesan disini berguna untuk membantu tugas dari manusia dimana tugas yang dibangun menggunakan sistem ini terkadang sulit untuk dibuat model matematisnya. Pada prakteknya sistem logika fuzzy ini akan ditanamkan dalam sebuah mesin, mesin yang dimaksud disini adalah komputer. Padahal tidak semua mesin yang dipergunakan berwujud komputer, bisa jadi dalam bentuk smartphone, microcomputer, microcontroller dan embedded system yang lain.
Contoh soal
Kami mengambil ilustrasi sintetis bivariat set data 50 poin untuk menggambarkan pembangunan histogram. Ini membutuhkan pilihan titik anchor (sudut kiri bawah histogram grid). Untuk histogram di sebelah kiri, kita pilih (-1.5, -1.5): untuk yang di sebelah kanan, kita menggeser titik anchor oleh 0.125 di kedua arah ke (-1,625, -1,625). Kedua histogram memiliki binwidth 0,5, sehingga setiap perbedaan adalah karena perubahan titik anchor saja. Warna-coding menunjukkan jumlah titik data yang jatuh ke dalam bin: 0 = putih, 1 = kuning pucat, 2 = kuning cerah, 3 = orange, 4 = merah. Histogram meninggalkan tampaknya menunjukkan bahwa bagian atas memiliki kepadatan lebih tinggi dari bagian bawah, sedangkan itu adalah sebaliknya adalah kasus untuk histogram kanan, mengkonfirmasikan bahwa histogram sangat sensitif terhadap penempatan titik jangkar.
Perbandingan histogram 2D. Kiri. Histogram dengan anchor titik di (-1,5, -1,5). Kanan. Histogram dengan anchor titik di (-1,625, -1,625). Kedua histogram memiliki lebar bin 0,5, sehingga perbedaan penampilan dari dua histogram adalah karena penempatan titik anchor.
Salah satu solusi untuk anchor masalah penempatan titik ini adalah untuk menghapus histogram Binning jaringan sepenuhnya. Pada gambar sebelah kiri bawah, kernel (diwakili oleh garis-garis abu-abu) berpusat di masing-masing 50 poin data di atas. Hasil menjumlahkan kernel ini diberikan pada sosok yang tepat, yang merupakan estimasi densitas kernel. Perbedaan yang paling mencolok antara perkiraan kepadatan kernel dan histogram adalah bahwa mantan lebih mudah untuk menafsirkan karena mereka tidak mengandung artifices disebabkan oleh grid Binning. Kontur berwarna sesuai dengan wilayah terkecil yang berisi massa probabilitas masing: merah = 25%, orange + merah = 50%, kuning + orange + merah = 75%, yang mengindikasikan bahwa wilayah pusat tunggal mengandung kepadatan tertinggi.
Pembangunan estimasi densitas kernel 2D. Kiri. Kernel individu. Kanan. Kernel density perkiraan.
Tujuan dari estimasi kepadatan adalah untuk mengambil sampel terbatas data dan membuat kesimpulan tentang mendasari fungsi kepadatan probabilitas di mana-mana, termasuk di mana tidak ada data yang diamati. Dalam estimasi densitas kernel, kontribusi masing-masing titik data merapikan dari satu titik ke daerah ruang sekitarnya. Menggabungkan kontribusi merapikan individual memberikan gambaran keseluruhan dari struktur data dan fungsi densitasnya. Dalam rincian untuk mengikuti, kita menunjukkan bahwa pendekatan ini mengarah ke perkiraan yang wajar dari fungsi kepadatan yang mendasari.
Definisi
Angka sebelumnya adalah representasi grafis dari kepadatan kernel estimasi, yang sekarang kita mendefinisikan secara tepat. Biarkan x 1, x 2, …, x n menjadi sampel dari d -variate vektor acak diambil dari distribusi yang umum dijelaskan oleh fungsi kepadatan f
. Estimasi densitas kernel didefinisikan sebagai
\overset{\mathcircumflex}{f}_{H}\left(X\right)=\frac{1}{n}\stackrel{[}{i}=1]{n}{\sum}K_{H}\left(x-x_{i}\right)
dimana
• x = (x 1, x 2, …, x d)^{T}
, x i = (x i 1, x i 2, …, x id)^{T}
, i = 1, 2, …, n yang d -vectors;
• H adalah bandwidth (atau smoothing) d × d matriks yang simetris dan definit positif;
• K adalah kernel fungsi yang kepadatan multivariat simetris;
• K H (x) = | H | -1/2 K (H -1/2 x).
Pilihan fungsi kernel K tidak penting untuk keakuratan estimator densitas kernel, jadi kami menggunakan standar multivariat yang normal kernel seluruh: K\left(x\right)=\left(2\pi\right)^{-d/2}exp\left(-1/2x^{t}x\right)
di mana H memainkan peran matriks kovarians. Di sisi lain, pilihan bandwidth matriks H adalah faktor paling penting yang mempengaruhi akurasi sejak itu mengontrol jumlah dan orientasi Smoothing diinduksi. [5]: 36-39 Bahwa matriks bandwidth yang juga menginduksi orientasi adalah dasar Perbedaan antara estimasi densitas kernel multivariat dari analog univariat sejak orientasi tidak didefinisikan untuk 1D kernel. Hal ini menyebabkan pilihan dari parametrisation bandwidth matriks ini. Tiga kelas parametrisation utama (dalam rangka meningkatkan kompleksitas) adalah S, kelas skalar positif kali matriks identitas; D, matriks diagonal dengan entri positif pada diagonal utama; dan F, simetris matriks definit positif. Kernel kelas S memiliki jumlah yang sama dari smoothing diterapkan dalam semua arah koordinat, D kernel memungkinkan jumlah yang berbeda dari smoothing di setiap koordinat, dan F kernel memungkinkan jumlah sewenang-wenang dan orientasi smoothing tersebut. Historis S dan D kernel yang paling luas karena alasan komputasi, tetapi penelitian menunjukkan bahwa keuntungan penting dalam akurasi dapat diperoleh dengan menggunakan lebih umum kernel kelas F. [6] [7]
Perbandingan dari tiga kelas parametrisation bandwith matriks utama. Meninggalkan S. Kali skalar positif matriks identitas. Pusat. Matriks diagonal D dengan entri positif pada diagonal utama. Tepat. F simetris matriks definit positif.
Temukan bandwidth yang optimal matriks
Kriteria optimalitas yang paling umum digunakan untuk memilih matriks bandwidth MISE atau berarti terintegrasi kesalahan kuadrat MISE\left(H\right)=E\left[\int\left(\overset{\mathcircumflex}{f}_{H}\left(x\right)-f\left(x\right)\right)^{2}dx\right].
Ini pada umumnya tidak memiliki sebuah ekspresi bentuk tertutup, sehingga sangat biasa untuk menggunakan pendekatan asimtotik nya (AMISE) sebagai proxy
AMISE\left(H\right)=n^{-1}\mid H\mid^{-1/2}R\left(K\right)+\frac{1}{4}m_{2}\left(K\right)^{2}\left(vec^{T}H\right)\varPsi_{4}\left(vecH\right)
dimana
• R (K) = \int
K \left(x\right)^{2}
dx, dengan R (K) = \left(4\pi\right)^{-d/2}
ketika K adalah kernel yang normal
• \int xx^{T}K\left(x\right)dx=m_{2}\left(K\right)I_{d}
dengan I_{d}
menjadi d x d matriks identistas, dengan m_{2}=
1 untuk kernel yang normal
• D^{2}f
adalah d × d Hessian matriks urutan kedua turunan parsial dari f
• \psi_{4}=\int\left(vecD^{2}f\left(x\right)\right)\left(vec^{T}D^{2}f\left(x\right)\right)dx
adalah d^{2}
x d^{2}
matriks agar keempat derivatif parsial terpadu f
• vec adalah operator vektor yang tumpukan kolom dari suatu matriks menjadi vektor tunggal misalnya vec\left[\begin{array}{cc}
a & c\\
b & d
\end{array}\right]=\left[\begin{array}{cccc}
a & b & c & d\end{array}\right]^{T}.
Kualitas pendekatan AMISE untuk MISE yang [5]: 97 diberikan oleh
MISE\left(H\right)=AMISE\left(H\right)+o\left(n^{-1}\mid H\mid^{-1/2}+trH^{2}\right)
di mana o menunjukkan biasa notasi o kecil. Heuristik pernyataan ini menyiratkan bahwa AMISE adalah ‘baik’ pendekatan dari MISE sebagai ukuran sampel n \rightarrow\infty
.
Hal ini dapat ditunjukkan bahwa setiap bandwidth yang wajar pemilih H memiliki H = O (n^{-2/\left(d+4\right)}
)) dimana notasi O besar diterapkan elementwise. Mengganti ini ke dalam hasil rumus MISE bahwa MISE optimal adalah O (n^{-4/\left(d+4\right)}
)). [5]: 99-100 demikian sebagai n \rightarrow\infty
, MISE yang \rightarrow
0, yaitu estimasi kepadatan kernel konvergen di berarti persegi dan dengan demikian juga dalam probabilitas untuk benar kepadatan f
. Mode konvergensi adalah konfirmasi pernyataan di bagian motivasi bahwa metode kernel menyebabkan estimator densitas wajar. Pemilih bandwidth yang optimal ideal adalah
H_{AMISE}=argmin_{H\epsilon F}AMISE\left(H\right).
Sejak pemilih yang ideal ini berisi diketahui fungsi kepadatan ƒ, tidak dapat digunakan secara langsung. Banyak jenis yang berbeda dari berbasis bandwidth data pemilih timbul dari estimator berbeda AMISE tersebut. Kami berkonsentrasi pada dua kelas selektor yang telah terbukti menjadi yang paling banyak diterapkan dalam praktek: merapikan lintas validasi dan plug-in pemilih.
Plug-in
Plug-in (PI) perkiraan AMISE yang dibentuk dengan mengganti \varPsi_{4}
oleh estimator yang \varPsi_{4}
PI\left(H\right)=n^{-1}\mid H\mid^{-1/2}R\left(K\right)+\frac{1}{4}m_{2}\left(K\right)^{2}\left(vec^{T}H\right)\varPsi_{4}\left(G\right)\left(vecH\right)
dimana \varPsi_{4}\left(G\right)=n^{-2}\stackrel{[}{i}=1]{n}{\sum}\stackrel{[}{i}=1]{n}{\sum}\left[\left(vecD^{2}\right)\left(vec^{T}D^{2}\right)\right]K_{G}\left(X_{i}-X_{j}\right)
demikian H_{PI}=argmin_{H\epsilon F}PI\left(H\right)
adalah plug-in pemilih. [8][9] referensi ini juga mengandung algoritma estimasi optimal dari matriks percontohan bandwith G dan menetapkan bahwa \overset{\mathcircumflex}{H}_{PI}
konvergen dalam probabilitas untuk H_{AMISE}
.
Merapikan lintas validasi
Merapikan lintas validasi (SCV) adalah bagian dari kelas yang lebih besar dari validasi silang teknik. The SCV estimator berbeda dari plug-in estimator dalam jangka kedua
SCV\left(H\right)=n^{-1}\mid H\mid^{-1/2}R\left(K\right)+n^{-2}\stackrel{[}{i}=1]{n}{\sum}\stackrel{[}{i}=1]{n}{\sum}\left(K_{2H+2G}-2K_{H+2G}+K_{2G}\right)\left(X_{i}-X_{j}\right)
Demikian adalah pemilih \overset{\mathcircumflex}{H}_{SCV}=argmin_{H\epsilon F}SCV\left(H\right)
adalah pemilih SCV. [9] [10] referensi ini juga mengandung algoritma estimasi optimal dari matriks percontohan bandwith G dan menetapkan bahwa \overset{\mathcircumflex}{H}_{SCV}
konvergen dalam probabilitas untuk H_{AMISE}
.
Rule of thumb
Aturan Silverman praktis menyarankan menggunakan \sqrt{H_{ii}}=\left(\frac{4}{d+2}\right)^{\frac{1}{d+4}}n\frac{-1}{d+4}\sigma_{i}
dimana \sigma
adalah standar deviasi dari variabel i dan H_{ij}=0,i\neq j
. Aturan Scott adalah \sqrt{H_{ii}}=n\frac{-1}{d+4}\sigma_{i}
Analisis asymptotic
Pada bagian pilihan bandwidth yang optimal, kami memperkenalkan MISE tersebut. Pembangunannya bergantung pada nilai yang diharapkan dan varians dari estimator densitas [5]: 97
E\overset{\mathcircumflex}{f}\left(x;H\right)=K_{H}*f\left(x\right)=f\left(x\right)+\frac{1}{2}m_{2}\left(K\right)\int tr\left(HD^{2}f\left(x\right)\right)dx+O\left(trH^{2}\right)
dimana * adalah lilitan Operator antara dua fungsi dan
Var\overset{\mathcircumflex}{f}\left(x;H\right)=n^{-1}\mid H\mid^{-1/2}R\left(K\right)+o\left(n^{-1}\mid H\mid^{-1/2}\right).
Selama dua ekspresi ini harus didefinisikan dengan baik, kami mengharuskan semua elemen H cenderung 0 dan n^{-1}\mid H\mid^{-1/2}
cenderung 0 sebagai n cenderung tak terhingga. Dengan asumsi kedua kondisi ini, kita melihat bahwa nilai yang diharapkan cenderung kepadatan f benar yaitu estimator densitas kernel adalah asimtotik berisi; dan bahwa varians cenderung nol. Menggunakan standar berarti kuadrat dekomposisi nilai
MSE\overset{\mathcircumflex}{f}\left(x;H\right)=Var\overset{\mathcircumflex}{f}\left(x;H\right)+\left[E\overset{\mathcircumflex}{f}\left(x;H\right)-f\left(x\right)\right]^{2}
kita memiliki bahwa MSE cenderung 0, menyiratkan bahwa estimator densitas kernel (mean square) yang konsisten dan karenanya konvergen dalam probabilitas untuk benar kepadatan f. Tingkat konvergensi dari MSE untuk 0 adalah tentu sama dengan tingkat MISE dicatat sebelumnya O\left(n^{-4/\left(d+4\right)}\right)
maka tingkat covergence dari estimator densitas untuk f adalah O_{p}\left(n^{-2/\left(d+4\right)}\right)
di mana O p menunjukkan urutan probabilitas. Ini menetapkan konvergensi pointwise. The covergence fungsional didirikan sama dengan mempertimbangkan perilaku MISE, dan mencatat bahwa di bawah keteraturan yang cukup, integrasi tidak mempengaruhi tingkat konvergensi.
Untuk pemilih berbasis bandwidth-data yang dianggap, target adalah matriks bandwidth yang AMISE. Kami mengatakan bahwa pemilih berbasis data yang konvergen ke pemilih AMISE di relatif tingkat O_{p}\left(n^{-a}\right),a>0
jika
vec\left(\overset{\mathcircumflex}{H}-H_{AMISE}\right)=O\left(n^{-2a}\right)vecH_{AMISE}.
Telah ditetapkan bahwa plug-in dan merapikan penyeleksi lintas validasi (diberikan pilot bandwith G tunggal) baik berkumpul pada tingkat relatif O_{p}\left(n^{-2/\left(d+6\right)}\right)
[9] [11] yaitu, baik selektor berbasis data ini estimator konsisten.
Estimasi kepadatan dengan matriks bandwidth penuh
Old Faithful Geyser kernel Data kepadatan estimasi dengan plug-in bandwith matriks.
The ks paket [12] di R mengimplementasikan plug-in dan merapikan penyeleksi validasi silang (antara lain). Dataset ini (termasuk dalam distribusi dasar R) mengandung 272 catatan dengan dua pengukuran setiap: waktu durasi letusan (menit) dan waktu menunggu sampai letusan berikutnya (menit) dari Old Faithful Geyser di Yellowstone National Park, Amerika Serikat .
Kode fragmen menghitung estimasi kepadatan kernel dengan bandwidth matriks plug-in
\overset{\mathcircumflex}{H}_{PI}=\left[\begin{array}{cc}
0.052 & 0.510\\
0.510 & 8.882
\end{array}\right]
. Sekali lagi, kontur berwarna sesuai dengan wilayah terkecil yang berisi massa probabilitas masing: merah = 25%, orange + merah = 50%, kuning + orange + merah = 75%. Untuk menghitung pemilih SCV, H_{pi}
diganti dengan H_{SCV}
Ini tidak ditampilkan di sini karena sebagian besar mirip dengan plug-in estimasi untuk contoh ini.
perpustakaan (ks)
Data (setia)
H <- Hpi (x = setia)
fhat <- kde (x = setia, H = H)
plot (fhat, display = “filled.contour2”)
poin (setia, CEX = 0,5, pch = 16)
Estimasi kepadatan dengan bandwidth matriks diagonal
Kernel density estimasi dengan bandwidth yang diagonal untuk data campuran yang normal sintetik.
Kami mempertimbangkan memperkirakan kepadatan campuran Gaussian \left(4\pi\right)^{-1}
exp \left(-1/2\left(x_{1}^{2}+x_{2}^{2}\right)\right)+\left(4\pi\right)^{-1}
exp \left(-1/2\left(\left(x_{1-3,5}\right)^{2}+x_{2}^{2}\right)\right)
, dari 500 acak poin. Kami mempekerjakan rutin Matlab untuk Data 2-dimensi. Rutin ini merupakan metode seleksi bandwidth yang otomatis yang dirancang khusus untuk urutan kernel Gaussian kedua. [13] Angka ini menunjukkan estimasi kepadatan gabungan yang dihasilkan dari menggunakan bandwidth otomatis dipilih.
Matlab skrip misalnya -1/2,
Ketik perintah berikut di Matlab setelah men-download dan menyimpan kde2d.m fungsi dalam direktori saat ini.
jelas semua
% Menghasilkan data sintetik
Data = [randn (500, 2);
randn (500, 1) + 3.5, randn (500, 1);];
% Memanggil rutin, yang telah disimpan di direktori saat ini
[Bandwidth, kepadatan, X, Y] = kde2d (data);
% Plot data dan estimasi kerapatan
contour3 (X, Y, kepadatan, 50), berpegang pada
plot (data (:, 1), data (: ‘. r’, 2),, ‘MarkerSize’, 5)
Kriteria optimalitas alternatif
MISE adalah diharapkan terintegrasi L_{2}
jarak antara estimasi kepadatan dan benar fungsi kepadatan f
. Ini adalah yang paling banyak digunakan, terutama karena tractability dan sebagian besar perangkat lunak menerapkan bandwidth yang selektor berbasis MISE. Ada kriteria optimalitas alternatif, yang mencoba untuk menutupi kasus-kasus dimana MISE bukan merupakan langkah yang tepat. [3]: 34-37,78 Setara L_{1}
ukuran, Kesalahan Berarti Terpadu Absolute, adalah
MIAE\left(H\right)=E\int\mid\overset{\mathcircumflex}{f}_{H}\left(x\right)-f\left(x\right)\mid dx.
Analisis matematis yang jauh lebih sulit daripada yang MISE. Dalam prakteknya, gain tampaknya tidak signifikan. [14] The L_{\infty}
norma adalah Mean Absolute Error Seragam
MUAE\left(H\right)=Esup_{x}\mid\overset{\mathcircumflex}{f}_{H}\left(x\right)-f\left(x\right)\mid.
yang telah diteliti hanya sebentar. [15] kriteria kesalahan Kemungkinan termasuk yang didasarkan pada Mean jarak Kullback-Leibler
MKL\left(H\right)=E\int\left(\overset{\mathcircumflex}{f}_{H}\left(x\right)^{1/2}-f\left(x\right)^{1/2}\right)^{2}dx.
KL dapat ditemukan dengan menggunakan metode cross-validasi, meskipun KL cross-validasi pemilih dapat sub-optimal bahkan jika itu tetap konsisten ntuk fungsi kepadatan terbatas. [16] MH penyeleksi telah diperiksa secara singkat dalam literatur. [17]
Semua kriteria optimalitas ini langkah-langkah jarak jauh, dan tidak selalu sesuai dengan pengertian yang lebih intuitif kedekatan, sehingga kriteria lebih visual telah dikembangkan dalam menanggapi keprihatinan ini. [18]
Bab 5 PENUTUP
Kesimpulan
• Grafik pengendali adalah teknik pengendali proses pada jalur yang digunakan secara luas yang biasanya digunakan untuk menaksir parameter suatu proses produksi menentukan kemampuan dan memberikan informasi yang berguna dalam meningkatkan proses itu.
• MATLAB(Matrix Laboratory) yaitu sebuah program untuk menganalisis dan mengkomputasi data numerik, dan MATLAB juga merupakan suatu bahasa pemrograman matematika lanjutan, yang dibentuk dengan dasar pemikiran yang menggunakan sifat dan bentuk matriks.
• Estimasi fungsi densitas merupakan salah satu bagian dalam analisis data statistik, dimana estimasi fungsi densitas adalah suatu gambaran tentang sebuah sebaran data.
• Kernel estimasi adalah alat untuk memvisualisasikan distribusi data. Misalnya, untuk gambaran. Kernel multivarian estimasi ketika dianggap itu adalah biasanya dalam konteks dibatasi dengan diagonal matriks, misalnya bandwidth. dalam paket R BC (Bowman & Azzalini, 2007) dan KernSmooth (tongkat, 2006). Kami memperkenalkan baru R ks paket yang mengimplementasikan matriks diagonal dan tidak dibatasi data-driven bandwidth untuk kernel estimasi, yang juga dapat digunakan untuk analisis multivarian diskriminan kernel. Paket KS.sys mengimplementasikan penyeleksi untuk 1 – untuk 6-dimensi.
• Dalam statistik, estimasi densitas kernel (KDE) adalah non-parametrik cara untuk memperkirakan dengan fungsi kepadatan probabilitas dari variabel acak. Estimasi densitas kernel adalah masalah penghalusan data mendasar di mana kesimpulan tentang populasi yang dibuat berdasarkan data yang terbatas sampel. Dalam beberapa bidang seperti pemrosesan sinyal dan ekonometrik itu juga disebut metode window Parzen-Rosenblatt, setelah Emanuel Parzen dan Murray Rosenblatt, yang biasanya dikreditkan dengan mandiri menciptakan itu dalam bentuk yang sekarang
• Grafik pengendali dibedakan menjadi 2 jenis yaitu grafik pengendali univariat dan grafik pengendali bivariat atau multivariat
Demikan yang dapat kami paparkan mengenai materi Joint Kernel Density Estimates yang menjadi pokok bahasan dalam buku ini, tentu masih banyak kekurangan dan kelemahan yang dapat ditemui didalam buku ini karena terbatasnya pengetahuan dari kami selaku penulis serta keterbatasan waktu yang diberikan oleh Dosen kepada kami untuk membuat buku ini lebih baik lagi.Penulis berharap para pembaca sudi memberikan kritik dan saran yang membangun kepada penulis demi sempurnanya buku kami inidan penulisan buku di kesempatan berikutnya.Semoga makalah ini berguna bagi penulis pada khususnya dan juga para pembaca pada umumnya.
Daftar Pustaka
https://books.google.co.id/books?id=VF5nXLvi_KUC&pg=PA132&dq=joint+ kernel+density+estimation&hl=id&sa=X&ved=0ahUKEwjf5ujv3sbKAhVVC44 KHeE7ARYQ6AEIGTAA#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=fycmsfkK6RQC&pg=PA611&dq=joint+k ernel+density+estimation&hl=id&sa=X&ved=0ahUKEwjf5ujv3sbKAhVVC44K HeE7ARYQ6AEIIDAB#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=C_2zCgAAQBAJ&pg=PA308&dq=joint+ kernel+density+estimation&hl=id&sa=X&ved=0ahUKEwiR5uOk4MbKAhXNc o4KHXpUBO8Q6AEIUjAH#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=FzvNfkMjvPwC&pg=PA120&dq=joint+ke rnel+density+estimation&hl=id&sa=X&ved=0ahUKEwiR5uOk4MbKAhXNco4K HXpUBO8Q6AEIOjAE#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=ZiwLCAAAQBAJ&pg=PA189&dq=joint+ke rnel+density+estimation&hl=id&sa=X&ved=0ahUKEwiR5uOk4MbKAhXNco4KH XpUBO8Q6AEISjAG#v=onepage&q=joint%20kernel%20density%20estimation&f=false
https://books.google.co.id/books?id=C5oj8bPtW6UC&pg=PA39&dq=pengertian+ matlab&hl=id&sa=X&ved=0ahUKEwjDgb_74MbKAhVXkI4KHVu6DFUQ6AEIIjA C#v=onepage&q=pengertian%20matlab&f=false
https://id.wikipedia.org/wiki/MATLAB
http://www.slideshare.net/vhieatietanic/modul-1-pengenalan-matlab
http://tutorkeren.com/artikel/tutorial-pemrograman-logika-fuzzy-menggunakan-matlab.htm
https://alvinburhani.wordpress.com/2014/05/25/aplikasi-logika-fuzzy-dengan-matlab/
https://www.scribd.com/doc/59018692/8/Contoh-Kasus-Penyelesaian-dengan-M-File