: KETIDAKPASTIAN
: CINDY CUNDAY CICIMBY
: 145150207111130
: 03/12/2016
: LATIHAN
: - DIVA KURNIANINGTYAS
- RADITA NOER PRATIWI
ACC
1. DEFINISI MASALAH
1. Berikan minimal 2 contoh permasalahan untuk masing-masing teori
ketidakpastian yang telah dijelaskan.
2. Diketahui suatu fakta tingkat penyakit stroke berikut :
Tekanan
darah
130
140
140
130
140
110
180
210
160
180
Kadar gula
Kolestrol
LDL
Umur
Kelas
326
101
64
108
188
155
421
204
110
247
138
269
193
187
195
115
277
229
194
195
88
195
122
123
127
90
165
162
108
127
56
58
44
63
60
52
56
49
60
55
Tinggi
Sedang
Rendah
Rendah
Sedang
Rendah
Tinggi
Tinggi
Sedang
Sedang
kemungkinan
Pelemparan mata uang atau koin yang memiliki dua sisi
sakit.
d. Faktor Kepastian (Certainty Faktor)
- Jika seseorang mempunyai gejala tertentu yang
mengindikasikan beberapa kemungkinan penyakit, maka
penyakit dengan CF tertinggi menjadi urutan pertama
-
2. Jawab
1. Labeling Data set
Y mewakili kelas. 1 = rendah , 2 = sedang, 3 = tinggi
Rumus :
Rumus :
a. Tekanan darah = 150, Kadar gula = 178, Kolestrol = 252, LDL = 135,
Umur
= 1.995217211 *
*e ^ -1/2 *
*
72
b. Tekanan darah = 150, Kadar gula = 115, Kolestrol = 122, LDL = 70,
Umur = 62
=
1.995217211 *
* e ^-1/2
* *
c. Tekanan darah = 100, Kadar gula = 100, Kolestrol = 195, LDL = 127,
Umur = 28
1.995217211 *
* e ^ -1/2 *
A. DEFINISI MASALAH
Carilah dan definisikan contoh permasalahan didunia nyata yang dapat
diselesaikan menggunakan teorema bayes atau yang lain, kemudian :
a. Tunjukkan letak ketidakpastian pada permasalahan tersebut
b. Tentukan faktanya (boleh data dummy)
c. Implementasikan teorema tersebut kedalam kode program
d. Buatlah minimal 2 kasus uji dari permasalahan tersebut dan ujikan pada
program yang telah anda buat
e. Tunjukkan hasilnya
B. JAWAB
1.
a.
b. 130 326 138 88 56 tinggi
180 421 277 165 56 tinggi
210 204 229 162 49 tinggi
140 101 269 195 58 sedang
140 188 195 127 60 sedang
160 110 194 108 60 sedang
180 247 195 127 55 sedang
140 64 193 122 44 rendah
130 108 187 123 63 rendah
110 155 115 90 52 rendah
c.
example.java
import
import
import
import
import
import
java.io.BufferedReader;
java.io.FileReader;
java.io.IOException;
java.io.InputStreamReader;
java.util.logging.Level;
java.util.logging.Logger;
us = mean(sedang);
ut = mean(rendah);
//
//
//
//
//
for (int k = 0; k < pusher_mc.length; k++) {
//
for (int l = 0; l < pusher_mc[0].length; l+
+) {
//
System.out.printf("%.3f"+" ",
pusher_mc[k][l]);
//
}
//
System.out.println("");
//
}
//
System.out.println(rendah_mc[0][0]);
//matriks covarian
tinggi_cov = covarian(tinggi_mc);
sedang_cov = covarian(sedang_mc);
rendah_cov = covarian(rendah_mc);
global_cov = globalCovarioan(data.length,
tinggi_cov, tinggi.length, sedang_cov, sedang.length,
rendah_cov, rendah.length);
//invers cov global
global_inv = invert(global_cov);
//
for (int k = 0; k <global_inv.length; k++) {
//
for (int l = 0; l < global_inv[0].length; l+
+) {
//
System.out.printf("%.3f"+" ",
global_inv[k][l]);
//
}
//
System.out.println("");
//
}
//prior
tinggi_prior = (double)tinggi.length /
(double)data.length;
sedang_prior = (double)sedang.length /
(double)data.length;
rendah_prior = (double)rendah.length /
(double)data.length;
//diskriminan
tinggi_disk = diskriminan(uc, global_inv, dicari,
tinggi_prior);
//System.out.println(array.length);
for (int k = 0; k < array.length; k++) {
fitur1 += Float.parseFloat(array[k][0]);
fitur2 += Float.parseFloat(array[k][1]);
fitur3 += Float.parseFloat(array[k][2]);
fitur4 += Float.parseFloat(array[k][3]);
fitur5 += Float.parseFloat(array[k][4]);
n++;
}
result[0] = fitur1 / n;
result[1] = fitur2 / n;
result[2] = fitur3 / n;
result[3] = fitur4 / n;
result[4] = fitur5 / n;
return result;
}
private static double[][] meanCorrected(String[][]
array, double[] ug) {
double result[][] = new double[array.length]
[ug.length];
for (int k = 0; k < array.length; k++) {
result[k][0] = Float.parseFloat(array[k][0])
ug[0];
result[k][1] = Float.parseFloat(array[k][1])
ug[1];
result[k][2] = Float.parseFloat(array[k][2])
ug[2];
result[k][3] = Float.parseFloat(array[k][3])
ug[3];
result[k][4] = Float.parseFloat(array[k][4])
ug[4];
}
return result;
}
return result;
}
private static double[][] globalCovarioan(int length,
double[][] tinggi_cov, int length0, double[][] sedang_cov,
int length1, double[][] rendah_cov, int
length2) {
double result[][] = new double[5][5];
for (int i = 0; i < tinggi_cov.length; i++) {
for (int j = 0; j < tinggi_cov[0].length; j++)
{
result[i][j] = ((tinggi_cov[i][j] *
length0) + (sedang_cov[i][j] * length1) + (rendah_cov[i][j]
* length2)) / length;
}
}
return result;
}
//invers matriks
public static double[][] invert(double a[][]) {
int n = a.length;
double x[][] = new double[n][n];
double b[][] = new double[n][n];
int index[] = new int[n];
for (int i = 0; i < n; ++i) {
b[i][i] = 1;
}
// Transform the matrix into an upper triangle
gaussian(a, index);
// Update the matrix b[i][j] with the ratios stored
for (int i = 0; i < n - 1; ++i) {
for (int j = i + 1; j < n; ++j) {
for (int k = 0; k < n; ++k) {
b[index[j]][k]
-= a[index[j]][i] * b[index[i]]
[k];
}
}
}
// Perform backward substitutions
for (int i = 0; i < n; ++i) {
x[n - 1][i] = b[index[n - 1]][i] / a[index[n 1]][n - 1];
for (int j = n - 2; j >= 0; --j) {
x[j][i] = b[index[j]][i];
for (int k = j + 1; k < n; ++k) {
x[j][i] -= a[index[j]][k] * x[k][i];
}
x[j][i] /= a[index[j]][j];
}
}
return x;
}
// Method to tinggi out the partial-pivoting Gaussian
// elimination. Here index[] stores pivoting order.
public static void gaussian(double a[][], int index[])
{
int n = index.length;
double c[] = new double[n];
// Initialize the index
for (int i = 0; i < n; ++i) {
index[i] = i;
}
// Find the rescaling factors, one from each row
for (int i = 0; i < n; ++i) {
double c1 = 0;
for (int j = 0; j < n; ++j) {
double c0 = Math.abs(a[i][j]);
if (c0 > c1) {
c1 = c0;
}
}
c[i] = c1;
}
// Search the pivoting element from each column
int k = 0;
for (int j = 0; j < n - 1; ++j) {
double pi1 = 0;
for (int i = j; i < n; ++i) {
double pi0 = Math.abs(a[index[i]][j]);
pi0 /= c[index[i]];
if (pi0 > pi1) {
pi1 = pi0;
k = i;
}
}
// Interchange rows according to the pivoting
order
int itmp =
index[j] =
index[k] =
for (int i
double
index[j];
index[k];
itmp;
= j + 1; i < n; ++i) {
pj = a[index[i]][j] / a[index[j]]
[j];
// Record pivoting ratios below the
diagonal
a[index[i]][j] = pj;
//result
result = left_side - center_side + right_side;
return result;
}
private static double[][] transpose(double[][] array) {
double result[][] = new double[array[0].length]
[array.length];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
result[j][i] = array[i][j];
}
}
return result;
}
private static double[][] perkalian(double[][]
transpose_array, double[][] array) {
double result[][] = new
double[transpose_array.length][array[0].length];
for (int i = 0; i < transpose_array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
for (int k = 0; k <
transpose_array[0].length; k++) {
result[i][j] += transpose_array[i][k] *
array[k][j];
}
}
}
return result;
}
}
perhitungan LDA
Method transpose digunakan untuk menghitung transpose untuk
perhitungan LDA
Method perkalian digunakan untuk menghitung perkalian untuk
perhitungan LDA
d. Tekanan darah : 130
Kadar gula : 326
Kolestrol :138
LDL : 88
Umur : 56
Tekanan darah : 125
Kadar gula : 226
Kolestrol :190
LDL : 120
Umur : 48
e.
C. KESIMPULAN
1. Jelaskan konsep ketidakpastian dalam kecerdasan buatan!
Ketidakpastian
merupakan
suatu
permasalahan
karena
mungkin
(noisy sensor).
Ketidakpastian dalam tindakan, mis. ban kempes (nondeterministic).
dalam
menghitung
ketidakpastian
dengan
jalan
komunikasi.
Teori Dempster-Shafer adalah suatu teori matematika untuk
pembuktian berdasarkan belief functions and plausible reasoning
(fungsi kepercayaan dan pemikiran yang masuk akal), yang
digunakan untuk mengkombinasikan potongan informasi yang
terpisah (bukti) untuk mengkalkulasi kemungkinan dari suatu
peristiwa.
Teori Fuzzy Zadeh adalah peningkatan dari logika Boolean yang
berhadapan dengan konsep kebenaran sebagian. Saat logika klasik
menyatakan bahwa segala hal dapat diekspresikan dalam istilah
biner (0 atau 1, hitam atau putih, ya atau tidak), logika fuzzy
menggantikan kebenaran boolean dengan tingkat kebenaran.
dapat