UAS - DWDM - Nur Ichsana Nawin Putri - 4518210059 - 63
UAS - DWDM - Nur Ichsana Nawin Putri - 4518210059 - 63
Dosen Pembimbing :
Dr. Ionia Veritawati,S.Si.,M.T
Disusun Oleh :
Nur Ichsana Nawin Putri (4518210059)
FAKULTAS TEKNIK
JURUSAN TEKNIK INFORMATIKA
UNIVERSITAS PANCASILA
Metode Klasifikasi ANN
Artifical Neural Network itu proses kerja otak manusia. Dan mempunyai jumlah elemen
besar untuk diproses biar saling terhubung dan dapat bekerja secara parallel untuk
memecahkan suatu masalah. Jadi seperti sebuah system yang meniru seperti otak manusia
jadi otak manusia diibaratkan seperti mesin computer. Yang menerima kesalahan/eror.
Didalam ANN itu berisikan input,output,fungsi aktivasi. Jadi neural network itu dibangun
dari banyak unit/node yang dihubungkan ke link. ANN juga sebuah algoritma Pemrograman.
1. Proses kerjanya jaringan saraf di otak manusia
Neuron berfungsi sebagai memproses setiap informasi yang masuk. Satu neuron
memiliki 1 akson, dan minimal 1 dendrit. Setiap sel syaraf terhubung dengan syaraf
lain, jumlahnya mencapai sekitar 104 sinapsis. Bagian saraf otak itu ada
dendrit,akson,dan sinapsis.
2. Struktur ANN
Seperti dipenjelasan diatas kalau struktur ANN itu ada 3 yaitu input,ouput, dan fungsi
aktivasi. Proses yang ada di ANN dimulai dari input yang diterima oleh neuron
beserta dengan nilai bobot dari tiap-tiap input yang ada. Hasil yang dijumlahkan akan
diproses oleh fungsi aktivasi setiap neuron, dibandingkan hasil penjumlahan dengan
nilai ambang tertentu. Jika sudah aktif, neuron akan mengirimkan nilai output melalui
bobot-bobot outputnya ke semua neuron yang berhubungan dengannya.
2. Algoritma Klasifikasi ANN
1. /*
2. * To change this template, choose Tools | Templates
3. * and open the template in the editor.
4. */
5. package abppn;
6.
7. import java.math.BigDecimal;
8. import java.text.DecimalFormat;
9.
10. /**
11. *
12. * @author x86
13. */
14. public class BP {
15. // kondisi
16. double x[][];
17. // target
18. double t[];
19.
20. int unit_input;
21. int unit_hidden;
22. int unit_output;
23.
24. // learning rate
25. double alfa;
26. // maximum loop
27. int maxloop;
28. // target error
29. double ERR;
30. // last error
31. double ERX;
32.
33. // bobot input - hidden
34. double v[][];
35. // bobot bias - hidden
36. double v0[];
37. // bobot hidden - ouput
38. double w[][];
39. // bobot bias - output
40. double w0[];
41.
42. double MSE;
43.
44. int loop;
45. double hasil_mentah;
46. double hasil_akhir;
47.
48. void init_static(){
49. //double init_x[][] = {{0.5,1},{1,0.5},{1,1},{0.5,0.5}};
50. //double init_t[] = {1,1,0.5,0.5};
51. //double init_x[][] = {{-1,0,0,0},{-1,0,0,1},{-1,0,1,0},{-1,0,1,1},{-1,1,0,0},{-1,1,0,1},{-1,1,1,0},{-1,1,1,1},
{ 0,0,0,0},{ 0,0,0,1},{ 0,0,1,0},{ 0,0,1,1},{ 0,1,0,0},{ 0,1,0,1},{ 0,1,1,0},{ 0,1,1,1},{ 1,0,0,0},{ 1,0,0,1},
{ 1,0,1,0},{ 1,0,1,1},{ 1,1,0,0},{ 1,1,0,1},{ 1,1,1,0},{ 1,1,1,1}};
52. //double init_t[] = {1, 0, 1,-1, 1, 0, 1,-1, 1, 0, 1,-1, 1, 0, 1, 1, 1, 1, 1,-1, 1, 0, 1, 1};
53. double init_x[][] = {{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1},
{0.5,0,0,0},{0.5,0,0,1},{0.5,0,1,0},{0.5,0,1,1},{0.5,1,0,0},{0.5,1,0,1},{0.5,1,1,0},{0.5,1,1,1},{1,0,0,0},
{1,0,0,1},{1,0,1,0},{1,0,1,1},{1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}};
54. double init_t[] = {1,0.5,1,0,1,0.5,1,0,1,0.5,1,0,1,0.5,1,1,1,1,1,0,1,0.5,1,1};
55. int init_uinput = init_x[0].length;
56. int init_uhidden = 4;
57. int init_uoutput = 1;
58. double init_alfa = 1;
59. int init_maxloop = 10000;
60. double init_ERR = 0.01;
61. //double init_v[][] = {{0.9562,0.7762,0.1623,0.2886},{0.1962,0.6133,0.0311,0.9711}};
62. double init_v[][] = new double[init_uinput][init_uhidden];
63. for(int a=0; a<init_v.length; a++){
64. for(int b=0; b<init_v[0].length; b++){
65. init_v[a][b] = Math.random();
66. }
67. }
68. //double init_v0[] = {0.7496,0.3796,0.7256,0.1628};
69. double init_v0[] = new double[init_uhidden];
70. for(int a=0; a<init_v0.length; a++){
71. init_v0[a] = Math.random();
72. }
73. //double init_w[][] = {{0.2280,0.9585,0.6799,0.0550}};
74. double init_w[][] = new double[init_uoutput][init_uhidden];
75. for(int a=0; a<init_w.length; a++){
76. for(int b=0; b<init_w[0].length; b++){
77. init_w[a][b] = Math.random();
78. }
79. }
80. //double init_w0[] = {0.9505};
81. double init_w0[] = new double[init_uoutput];
82. for(int a=0; a<init_w0.length; a++){
83. init_w0[a] = Math.random();
84. }
85.
86. this.x = init_x;
87. this.t = init_t;
88. this.unit_input = init_uinput;
89. this.unit_hidden = init_uhidden;
90. this.unit_output = init_uoutput;
91. this.alfa = init_alfa;
92. this.maxloop = init_maxloop;
93. this.ERR = init_ERR;
94. this.v = init_v;
95. this.v0 = init_v0;
96. this.w = init_w;
97. this.w0 = init_w0;
98. }
99.
100. void init_dinamic(){
101. double init_x[][] = {{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1},
{0.5,0,0,0},{0.5,0,0,1},{0.5,0,1,0},{0.5,0,1,1},{0.5,1,0,0},{0.5,1,0,1},{0.5,1,1,0},{0.5,1,1,1},{1,0,0,0},
{1,0,0,1},{1,0,1,0},{1,0,1,1},{1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}};
102. double init_t[] = {1,0.5,1,0,1,0.5,1,0,1,0.5,1,0,1,0.5,1,1,1,1,1,0,1,0.5,1,1};
103. int init_uinput = init_x[0].length;
104. //int init_uhidden = 4;
105. int init_uoutput = 1;
106. //double init_alfa = 1;
107. //int init_maxloop = 10000;
108. //double init_ERR = 0.01;
109. //double init_v[][] = {{0.9562,0.7762,0.1623,0.2886},{0.1962,0.6133,0.0311,0.9711}};
110.
111. this.x = init_x;
112. this.t = init_t;
113. this.unit_input = init_uinput;
114. //this.unit_hidden = init_uhidden;
115. this.unit_output = init_uoutput;
116. //this.alfa = init_alfa;
117. //this.maxloop = init_maxloop;
118. //this.ERR = init_ERR;
119.
120.
121. double init_v[][] = new double[this.unit_input][this.unit_hidden];
122. for(int a=0; a<init_v.length; a++){
123. for(int b=0; b<init_v[0].length; b++){
124. init_v[a][b] = Math.random();
125. }
126. }
127. //double init_v0[] = {0.7496,0.3796,0.7256,0.1628};
128. double init_v0[] = new double[this.unit_hidden];
129. for(int a=0; a<init_v0.length; a++){
130. init_v0[a] = Math.random();
131. }
132. //double init_w[][] = {{0.2280,0.9585,0.6799,0.0550}};
133. double init_w[][] = new double[this.unit_output][this.unit_hidden];
134. for(int a=0; a<init_w.length; a++){
135. for(int b=0; b<init_w[0].length; b++){
136. init_w[a][b] = Math.random();
137. }
138. }
139. //double init_w0[] = {0.9505};
140. double init_w0[] = new double[this.unit_output];
141. for(int a=0; a<init_w0.length; a++){
142. init_w0[a] = Math.random();
143. }
144.
145. this.v = init_v;
146. this.v0 = init_v0;
147. this.w = init_w;
148. this.w0 = init_w0;
149. }
150.
151. void learn_static(){
152. double data[][] = this.x;
153. double target[] = this.t;
154. int jumlah_data = data.length;
155. int jumlah_input = this.unit_input;
156. int jumlah_hidden = this.unit_hidden;
157. int jumlah_output = this.unit_output;
158. // do it for learn
159. int loop = 0;
160. //this.maxloop = 1000;
161. //System.out.println(jumlah_hidden);
162. //System.out.println(this.v0.length);
163. //System.exit(0);
164.
165. do{
166. //System.out.println("Loop : "+loop);
167. //System.out.println("-----------");
168. // for all data
169. for(int h=0; h<jumlah_data; h++){
170. // hitung z_in dan z
171. double z[] = new double[jumlah_hidden];
172. for(int j=0; j<jumlah_hidden; j++){
173. //itung sigma xi vij
174. double z_in[] = new double[jumlah_hidden];
175. double jum_xv=0;
176. for(int i=0; i<jumlah_input; i++){
177. double tmp=x[h][i]*v[i][j];
178. jum_xv=jum_xv+tmp;
179. }
180. z_in[j] = v0[j]+jum_xv;
181. z[j] = aktivasi(z_in[j]);
182. //z[j] = 1/(1+(double)Math.exp(-z_in[j]));
183. //z[j] = (1-(double)Math.exp(-z_in[j]))/(1+(double)Math.exp(-z_in[j]));
184. // System.out.println("z["+j+"] = "+z[j]);
185. }
186.
187. //~ itung y_in dan y (output)
188. double y[] = new double[jumlah_output];
189. for(int k=0; k<jumlah_output; k++){
190. double y_in[] = new double[y.length];
191. double jum_zw=0;
192. for(int j=0; j<jumlah_hidden; j++){
193. double tmp=z[j]*w[k][j];
194. jum_zw=jum_zw+tmp;
195. }
196. y_in[k]=w0[k]+jum_zw;
197. y[k] = aktivasi(y_in[k]);
198. //y[k]=1/(1+(double)Math.exp(-y_in[k]));
199. //y[k]=(1-(double)Math.exp(-y_in[k]))/(1+(double)Math.exp(-y_in[k]));
200. //System.out.println("Math.exp("+-y_in[k]+") = "+Math.exp(-y_in[k]));
201. //System.out.println("y["+k+"] = "+y[k]);
202. }
203.
204. // hitung MSE
205. double sum_e = 0;
206. double Err_y[] = new double[jumlah_output];
207. for(int k=0; k<jumlah_output; k++){
208. //error otput
209. //Err_y[k]=(t[h]-y[k])*y[k]*(1-y[k]);
210. Err_y[k] = t[h]-y[k];
211. sum_e += Math.pow(Err_y[k],2);
212. }
213.
214. this.MSE = 0.5*sum_e;
215.
216. //ngitung delta bias dan delta bobot
217. double Aw[][] = new double[this.w.length][this.w[0].length];
218. double Aw0[] = new double[this.w0.length];
219. for(int k=0; k<jumlah_output; k++){
220. for(int j=0; j<jumlah_hidden; j++){
221. //delta bobot hO
222. Aw[k][j] = this.alfa * Err_y[k] * y[k] * z[j];
223. //delta bias hO
224. Aw0[k] = this.alfa * Err_y[k] * y[k];
225. }
226. }
227.
228. //ngitung delta bias dan delta bobot
229. double Err_in[] = new double[jumlah_hidden];
230. double Err_z[] = new double[jumlah_hidden];
231. double Av[][] = new double[this.v.length][this.v[0].length];
232. double Av0[] = new double[this.v0.length];
233. for(int j=0; j<jumlah_hidden; j++){
234. double tmp=0;
235. for(int k=0; k<jumlah_output; k++){
236. tmp = tmp + (Err_y[k]*this.w[k][j]);
237. }
238. // eror sebelum output / setelah hidden
239. Err_in[j]=tmp;
240. // eror hidden (t[h]-y[k])*y[k]*(1-y[k]);
241. Err_z[j]=Err_in[j]*(z[j])*(1-z[j]);
242.
243. for(int i=0; i<jumlah_input; i++){
244. //delta bobot iH
245. Av[i][j]=this.alfa*Err_z[j]*this.x[h][i];
246. }
247. //delta bias hidden
248. Av0[j]=this.alfa*Err_z[j];
249. }
250.
251. //update bobot dan bias
252. //update bobot bias outpuut
253. for(int j=0; j<jumlah_hidden; j++){
254. for(int k=0; k<jumlah_output; k++){
255. this.w[k][j]=this.w[k][j]+Aw[k][j];
256. //this.w[k][j]=this.w[k][j]-Aw[k][j];
257. }
258. }
259. for(int k=0; k<jumlah_output; k++){
260. this.w0[k]=this.w0[k]+Aw0[k];
261. //this.w0[k]=this.w0[k]-Aw0[k];
262. }
263.
264. //update bobot bias hidden
265. for(int i=0; i<jumlah_input; i++){
266. for(int j=0; j<jumlah_hidden; j++){
267. this.v[i][j]=this.v[i][j]+Av[i][j];
268. //this.v[i][j]=this.v[i][j]-Av[i][j];
269. }
270. }
271. for(int j=0; j<jumlah_hidden; j++){
272. this.v0[j]=this.v0[j]+Av0[j];
273. //this.v0[j]=this.v0[j]-Av0[j];
274. }
275. }
276. loop++;
277. //System.out.println("err : "+ERX);
278. }while(is_stop()>this.ERR && loop<this.maxloop);
279. this.loop = loop;
280. //System.out.println("err : "+this.MSE);
281. //System.out.println("loop : "+loop);
282. }
283.
284. double aktivasi(double inp){
285. return 1/(1+(double)Math.exp(-inp));
286. }
287.
288. //penentuan berhenti atau lanjut
289. double is_stop(){
290. int jumlah_input = this.unit_input;
291. int jumlah_hidden = this.unit_hidden;
292. int jumlah_output = this.unit_output;
293. int jumlah_data = this.x.length;
294. double akumY=0;
295.
296. //~ itung z_in dan z
297. for(int h=0; h<jumlah_data; h++){
298. double z[] = new double[jumlah_hidden];
299. for(int j=0; j<jumlah_hidden; j++){
300. //itung sigma xi vij
301. double z_in[] = new double[z.length];
302. double jum_xv=0;
303. for(int i=0; i<jumlah_input; i++){
304. double tmp=this.x[h][i]*this.v[i][j];
305. jum_xv=jum_xv+tmp;
306. }
307. z_in[j]=this.v0[j]+jum_xv;
308. z[j] = aktivasi(z_in[j]);
309. //z[j]=1/(1+(double)Math.exp(-z_in[j]));
310. //z[j]=(1-(double)Math.exp(-z_in[j]))/(1+(double)Math.exp(-z_in[j]));
311. //System.out.println(-z_in[j]);
312. }
313.
314. //~ itung y_in dan y (output)
315. double y[] = new double[jumlah_output];
316. for(int k=0; k<jumlah_output; k++){
317. double y_in[] = new double[y.length];
318. double jum_zw=0;
319. for(int j=0; j<jumlah_hidden; j++){
320. double tmp=z[j]*this.w[k][j];
321. jum_zw=jum_zw+tmp;
322. }
323. y_in[k]=this.w0[k]+jum_zw;
324. y[k] = aktivasi(y_in[k]);
325. //y[k]=1/(1+(double)Math.exp(-y_in[k]));
326. //y[k]=(1-(double)Math.exp(-y_in[k]))/(1+(double)Math.exp(-y_in[k]));
327. //System.out.println("t[]-y = "+t);
328. akumY += Math.pow((t[h]-y[k]),2);
329. }
330. }
331. this.MSE = akumY/this.x[0].length;
332. return this.MSE;
333. }
334.
335. void test(double data[]){
336. int jumlah_input = this.unit_input;
337. int jumlah_hidden = this.unit_hidden;
338. int jumlah_output = this.unit_output;
339. double outt[] = this.t;
340.
341. //pada hidden
342. double z[] = new double[jumlah_hidden];
343. for(int j=0; j<jumlah_hidden; j++){
344. double z_in[] = new double[z.length];
345. double tmp = 0;
346. for(int i=0; i<data.length; i++){
347. tmp = tmp + (data[i] * this.v[i][j]);
348. }
349. z_in[j] = this.v0[j] + tmp;
350. z[j] = aktivasi(z_in[j]);
351. //z[j] = 1/(1+(double)Math.exp(-z_in[j]));
352. //z[j] = (1-(double)Math.exp(-z_in[j]))/(1+(double)Math.exp(-z_in[j]));
353. }
354.
355. //pada ouotpr
356. double y[] = new double[jumlah_output];
357. for(int k=0; k<jumlah_output; k++){
358. double y_in[] = new double[y.length];
359. double tmp = 0;
360. for(int j=0; j<jumlah_hidden; j++){
361. tmp = tmp + z[j] * this.w[k][j];
362. }
363. y_in[k] = this.w0[k] + tmp;
364.
365. y[k] = aktivasi(y_in[k]);
366. //y[k] = 1/(1+(double)Math.exp(-y_in[k]));
367. //y[k] = (1-(double)Math.exp(-y_in[k]))/(1+(double)Math.exp(-y_in[k]));
368. /*
369. if(y[k]<0.1){
370. y[k] = -1;
371. }else if(y[k]>0.1){
372. y[k] = 1;
373. }else{
374. y[k] = 0;
375. }
376. /*
377. if(y[k]>0)
378. y[k]=1;
379. else
380. y[k]=0;*/
381. double err_pad = this.MSE*this.x[0].length;
382. double hazil = 0;
383. if(y[k] < err_pad){
384. hazil = 0;
385. }else if(y[k]>(1-err_pad)){
386. hazil = 1;
387. }else{
388. hazil = 0.5;
389. }
390.
391. this.hasil_mentah = y[k];
392. this.hasil_akhir = hazil;
393. //System.out.println("Output "+y[k]);
394. }
395. }
396.
397. double double_format(double num, int len){
398. String format = "#.";
399. for(int a=0; a<len; a++){
400. format += "#";
401. }
402. DecimalFormat change = new DecimalFormat(format);
403. return Double.valueOf(change.format(num));
404. }
405.
406. String kesimpulan(double h){
407. String x = "";
408. switch(String.valueOf(h)){
409. case "0.0":
410. x = "Hard Contact Lenses";
411. break;
412. case "0.5":
413. x = "Soft Contact Lenses";
414. break;
415. case "1.0":
416. x = "No Contact Lenses";
417. break;
418. }
419. return x;
420. }
421. /*
422. public static void main(String haripinter[]){
423. BP BP = new BP();
424. BP.init_static();
425. BP.learn_static();
426. /*double ax[] = {0.5,0.5};
427. double bx[] = {0.5,1};
428. double cx[] = {1,0.5};
429. double dx[] = {1,1};
430. BP.test(ax);
431. BP.test(bx);
432. BP.test(cx);
433. BP.test(dx);*/
434.
435. //double xys[][] = {{-1,0,0,0},{-1,0,0,1},{-1,0,1,0},{-1,0,1,1},{-1,1,0,0},{-1,1,0,1},{-1,1,1,0},{-1,1,1,1},
{ 0,0,0,0},{ 0,0,0,1},{ 0,0,1,0},{ 0,0,1,1},{ 0,1,0,0},{ 0,1,0,1},{ 0,1,1,0},{ 0,1,1,1},{ 1,0,0,0},{ 1,0,0,1},
{ 1,0,1,0},{ 1,0,1,1},{ 1,1,0,0},{ 1,1,0,1},{ 1,1,1,0},{ 1,1,1,1}};//
436. /*
437. double xys[][] = {{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1},
{0.5,0,0,0},{0.5,0,0,1},{0.5,0,1,0},{0.5,0,1,1},{0.5,1,0,0},{0.5,1,0,1},{0.5,1,1,0},{0.5,1,1,1},{1,0,0,0},
{1,0,0,1},{1,0,1,0},{1,0,1,1},{1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}};
438. for(int a=0; a<xys.length; a++){
439. double inp[] = xys[a];
440. System.out.println(BP.t[a]);
441. BP.test(inp);
442. }
443. //BigDecimal k = new BigDecimal(Math.exp(10));
444.
445. //System.err.println(-1-(-1));
446. }*/
Pada Jurnal Kedua dapat di Implementasi Menggunakan Artifical Neuron Network untuk
mengetahui perkiraan hasil dari Ujian Kompetensi Kebidanan di Akademi Kebidanan
Dehasen Bengkulu. Dari hasil klasifikasi tersebut dapat diidentifikasikan melalui teknik uji
dari matlab.
Dari hasil diatas implementasi bisa dijelaskan :
Disini kita menggunakan jurnal pertama , Yang akan kita lakukan adalah pengolahan data
agar menghasilkan atau dapat tercapai secara maksimal. Ada beberapa tahap untuk pengolahan
data dan ini langkah-langkah seperti Cleaning data,Data Transformation,Pembagian Data.
Kita pertama akan menjelaskan Cleaning Data jadi di penelitian kita menggunakan teknik
yang dinamakan missing value/nilainya hilang untuk sebuah cleaning data. Namun data yang
didapatkan dipenelitian ini ada 1221 record, tapi tidak semua data bisa dipakai yang masih
memerlukan cleaning karena beberapa record yang tidak di berisikan transaksi trading melainkan
berisikan laporan sejumlah dividend yang ada setiap tahunnya. Cara mengatasi terjadinya
missing value/nilainya hilang dengan cara memperbaikin data secara manual dengan cara
menghilangkan record/jumlahnya yang berisikan catetan dividend. Setelah udah diproses
cleaning data atau pembersihan data, data yang siap digunakan berjumlah 1215 record.
Ketiga kita menjelaskan pembagian data didalam penelitian ini pembagian data dibagi
menjadi dua yaitu training dan data testing. Data dibagi menjadi 2 dengan pembagian70:30 yaitu
850 record digunakan sebagai data training (4 januari 2010 – 26 juni 2013) dan 365 record data
sebagai data testing (26 juni 2013 – 30 desember 2014).
6. Konsep dari teknik evaluasi
Kita menggunakan Jurnal Pertama, kita menggunakan konsep proses evaluasi cross
validation. Dengan cara menguji model yang terbentuk dengan data secara acak yang dipisahkan
dengan mengunakan 10 folds cross validation. Untuk pengukuran akurasi akan menggunakan
Root Mean Squared Error dan Normalized Mean Absolute Error , diprediksi yang dianggap
secara optimal untuk terbentuknya dengan cara algoritma SVM dan ANN.
Dari hasil ini kita menggunakan jurnal pertama, jadi hasil penelitian ini dari algoritma ANN
harus melakukan proses seperti : Inisialisasi Parameter Learning_rate dan Momentum, Penentuan
Hidden Layer Size, Eksperimen.
Pertama kita menjelaskan inisialisasi parameter learning rate dan momentum, jadi ini kita
menentukan parameternya di learning rate dan momentum, jika sudah mendapatkan
parameternya maka hasil nya akan optimal. Di Nilai parameter Trining Cycle ditetapkan default
yaitu 500, untuk nilai parameter learning-rate di tetapkan range 0.1 – 0.7 dan range yang sama
akan digunakan untuk nilai parameter momentum 0.1 – 0.7 dengan hidden layer adalah 1. Untuk
optimasi parameter pada Rapidminer menggunakan operator Optimize Parameters, nilai untuk
max generations adalah 50, Tournament fraction adalah 0.25 dan crossover prob adalah 0.9,
Population sebanyak 5.
Kedua kita menjelaskan penentuan hidden layer size, di artificial neural network memiliki 3
layer, pertama layer input,hidden layer,layer output. Metode ini menggunakan algoritma back
propagation neural network. Didalam penelitian ini menggunakan 2 teknik untuk menentukan
hidden layer yaitu Kolmogorov teorema: Satu hidden layer dan 2N +1 hidden neuron cukup
untuk N masukan (Siti Mariyam Hj Syamsuddin, 2004). , Jumlah hidden node dipilih
sembarang.
Ketiga kita menjelaskan ekperimen, dipenelitian ini input layer ada 4 atributmya ada
high,low,close,open. sedangkan hidden layer pemilihan jumlah neuron dengan menggunakan 3,
9, dan 15 node dan layer output menggunakan 1 atribut yaitu nilai close. Jika menentukan input
layer,hidden layer, dan output layer. Dari hasil yang kita dapatkan kombinasi optimasi parameter
yang berjumlah 44 pada parameter learning-rate dan momentum akan diujikan pada masing-
masing hidden layer yang sudah ditentukan pada 3 neuron (hidden layer default), 9 neuron dan
15 neuron. Seperti gambar dibawah ini
8. Kesimpulan
Jadi dari jurnal kedua dapat disimpulkan bahwa algoritma backpropagation dalam
prediksi hasil ujian kompetensi kebidanan menggunakan data input dan data output.
Sedangkan dari Jurnal pertama menggunakan metode algoritma ANN/ algoritma
backpropagation dapat memprediksi harga saham di Bank BRI.
if(t1<t2) }while(m1!=om1&&m2!=om2);
{
//near to first mean k1[i2]=k0[i1]; i2++; cout<<"\n Clusters created";
} //ending getch();
else
{
//near to second mean k2[i3]=k0[i1];
}
i3++;
}
}
4. Uraian Domain Implementasi
Data yang diperoleh adalah data Penjualan ada beberapa tahap pengumpulan data seperti data
sekunder,data primer.
Disini tahap data primer tahap yang memerlukan interaksi langsung dengan pihak eksekutif
CV. Alfa Fresh dengan cara melakukan wawancara yang bertujuan untuk mendapatkan informasi
dan data. Dan yang kedua tahap data sekunder memerlukan tahap sumber yang ada, seperti
jurnal, buku-buku ataupun dokumen yang erat kaitannya dengan objek permasalahan untuk
menjadi refrensi dan acuan dalam penulisan, seperti sumber cv. Alfa fresh yang sangat
membutuhkan
Ditahap ini Sebuah pengelompokkan, seberapa baik kita memproses pengelompokkan dan
kualitas kelompok yang terbentuk. beberapa macam ukuran ketepatan untuk mengetahui
bagusnya suatu kelompok. satu ukuran ketepatan yang dapat digunakan sebagai menentukan
ketepatan pengelompokkan deret waktu dengan metode silhouette coefficient.
Analisa yang dilakuan dengan memilih satu dari ketujuh inputan yang dimasukkan dengan
melihat nilai silhouette coefficien yang terbaik. Semua jumlah cluster yang dimasukkan untuk
cluster yang berjumlah 3 memiliki nilai silhouette coefficien yang paling mendekati nilai Si= 1,
yaitu dengan nilai 0,108690751. Dan dibagi menjadi 3 titik yaitu :
jadi kesimpulannya dari Algoritma K-Means adalah dari kinerja akademik mahasiswa
adalah
1. Dari hasil 7 kali pengujian terhadap jumlah titik pusat dengan nilai 3, 4, 5, 6, 7, 8 dan 9
titik pusat, yang berjumlah 3 memiliki nilai silhouette coefficien yang paling mendekati
nilai Si= 1, yaitu dengan nilai 0,108690751.
2. Setelah proses pengolahan data, hasil clustering menunjukkan pendapatan orang tua
tidak dipengaruhi tingkatnya kinerja didalam bidang akademik mahasiswa.
3. Nilai akademis mahasiswa yang masuk perguruan tinggi ada 2 tahapan yaitu jalur
reguler dan jalur prestasi akademik mempunyai nilai IPK rata-rata tertinggi.
9. Daftar Pustaka
1. Fajar Nur Rohmat Fauzan Jaya Aziz1 , Budi Darma Setiawan2 , Issa Arwani3.(2018). Implementasi
Algoritma K-Means untuk Klasterisasi Kinerja Akademik Mahasiswa. Vol. 2, No. 6. Hal 9.
2. Cipta Nandita Putri1, Rika Sadariawati, S.E., M.Si. 2 , M. Aris Ganiardi, S.Si., M.T.3.(2018).
IMPLEMENTASI ALGORITMA K-MEANS UNTUK CLUSTERING DATA PENJUALANAN PADA CV. ALFA
FRESH.Hal 7