Implementasi Algoritma C4.5 Untuk Perekrutan Karyawan Berbasis Android (Studi Kasus : Blackberry Service Center Medan)
LAMPIRAN A : LISTING PROGRAM
// Source Code MainActivity.java
package com.kurniawan.apptes;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity { Button data,pengujian,help,about;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); data = (Button) findViewById(R.id.bdata); pengujian = (Button) findViewById(R.id.buji); help = (Button) findViewById(R.id.bhelp); about = (Button) findViewById(R.id.babout);
data.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, Data.class); startActivity(intent);
} });
pengujian.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, Pengujian.class);
startActivity(intent); }
});
help.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, Help.class); startActivity(intent);
} });
about.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, About.class); startActivity(intent); } }); } } // Source Code Data.java
(2)
package com.kurniawan.apptes;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.List;
public class Data extends Activity{ private ListView listView; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.data);
this.listView = (ListView) findViewById(R.id.listView);
DatabaseHandler dbHandler = DatabaseHandler.getInstance(this); dbHandler.open();
List<String> nomor = dbHandler.getNomor();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nomor);
this.listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int i, long l) {
Intent intent = new Intent(Data.this, Hasil.class); String nama = listView.getItemAtPosition(i).toString(); intent.putExtra("nama", nama);
startActivity(intent); }
}); } }
// Source Code Pengujian.java
package com.kurniawan.apptes;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.kurniawan.apptes.c45Algorithm.Atribut;
import com.kurniawan.apptes.c45Algorithm.Nilai;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Pengujian extends AppCompatActivity { DatabaseOpenHelper dbHelper;
(3)
private static String[] listField = {"Pendidikan_Terakhir",
"Pengalaman_Bekerja", "Psikotes", "Intellegensi"}; private static Integer[] constAtribut = {0, 0, 0, 0, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3
};
private static String[] constNilai = {"SMA", "D1", "D3", "S1", "Ya", "Tidak",
"0", "1", "2", "3", "4", "5", "6", "7", "0", "1", "2", "3"
};
Nilai keterangan;
List<Atribut> listAtribut; List<String> field;
List<String> value;
Map<String, String> inputanUser;
private Button btnCek, btnSave, btnClear;
private EditText etNama, etAlamat, etTelp, etPendidikan, etPengalaman,
etIntellegensi, etPsikotes; private TextView tvHasil; SQLiteDatabase database; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.pengujian);
btnCek = (Button) findViewById(R.id.btn_cek); btnSave = (Button) findViewById(R.id.btn_save); btnClear = (Button) findViewById(R.id.btn_clr); etNama = (EditText) findViewById(R.id.et_nama); etAlamat = (EditText) findViewById(R.id.et_alamat); etTelp = (EditText) findViewById(R.id.et_telp);
etPendidikan = (EditText) findViewById(R.id.et_pendidikan); etPengalaman = (EditText) findViewById(R.id.et_pengalaman); etIntellegensi = (EditText) findViewById(R.id.et_intellegensi); etPsikotes = (EditText) findViewById(R.id.et_psikotes);
tvHasil = (TextView) findViewById(R.id.tv_hasilProses); dbHelper = new DatabaseOpenHelper(this);
DatabaseHandler dbHandler = DatabaseHandler.getInstance(this); dbHandler.open();
database = dbHandler.database;
btnCek.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { try {
clear();
inputanUser.put("Pendidikan_Terakhir",
etPendidikan.getText().toString());
inputanUser.put("Pengalaman_Bekerja",
etPengalaman.getText().toString());
inputanUser.put("Psikotes",
etPsikotes.getText().toString());
inputanUser.put("Intellegensi",
etIntellegensi.getText().toString());
(4)
Atribut n = new Atribut(field); listAtribut.add(n);
}
for(int i = 0; i < constNilai.length; i++){ try {
Nilai n = new Nilai(listField[constAtribut[i]], constNilai[i]);
n.AmbilDariDataSet(database, field, value); n.HitungEntropy();
listAtribut.get(constAtribut[i]).nilai.add(n); } catch (Exception e){
} }
c45Algorithm();
btnSave.setVisibility(View.VISIBLE); btnClear.setVisibility(View.VISIBLE); } catch (Exception e){
Log.d("Exception", e.toString()); }
} });
btnSave.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
final SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("INSERT INTO DataPelamar (No, Nama, Alamat, Telp, Pendidikan_Terakhir, Pengalaman_Bekerja, Psikotes, Intellegensi, Keterangan) VALUES ('"+ nomorId() +"', '" +
etNama.getText().toString()+"', '" + etAlamat.getText().toString()+"', '"+ etTelp.getText().toString()+"', '"+ etPendidikan.getText().toString()+"', '"+ etPengalaman.getText().toString()+"', '"+ etPsikotes.getText().toString()+"', '"+ etIntellegensi.getText().toString()+"', '" + tvHasil.getText().toString()+"')");
} }); }
int nomorId() { int nomor = 0;
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT MAX(No) FROM DataPelamar", null); if (cursor.moveToFirst()) {
nomor = cursor.getInt(0); }
return nomor + 1; }
void clear(){
inputanUser = new HashMap<String, String>(); field = new ArrayList<String>();
value = new ArrayList<String>();
listAtribut = new ArrayList<Atribut>(); }
void c45Algorithm(){
keterangan = new Nilai("*", "*");
keterangan.AmbilDariDataSet(database, field, value); keterangan.HitungEntropy();
(5)
if(keterangan.getSumYa() > 0){ tvHasil.setText("LULUS"); return;
}
else if(keterangan.getSumTidak() > 0){ tvHasil.setText("TIDAK LULUS"); return;
} }
Atribut bestGain = new Atribut();
Double maxGain = new Double(Double.MIN_VALUE); for(Atribut n : listAtribut){
n.HitungGain(keterangan.getEntropy(), keterangan.getSumNilai()); if(maxGain < n.gain || listAtribut.indexOf(n) == 0){
maxGain = n.gain; bestGain = n; }
Log.d("TRACE", n.nama + " GAIN : " + n.gain); }
String userValue = inputanUser.get(bestGain.nama); Nilai userNilai = new Nilai();
for(Nilai n : bestGain.nilai){
if(n.getNama().equals(userValue)){ userNilai = n;
} }
if(userNilai.getEntropy() != 0){ field.add(bestGain.nama); value.add(userValue); int i = 0;
for(int index = 0; index < listAtribut.size(); index++){ if(listAtribut.get(index).nama.equals(bestGain.nama)){ i = index;
} }
listAtribut.remove(i); c45Algorithm();
} else {
if(userNilai.getSumYa() > 0){
tvHasil.setText("DATA TERSEBUT LULUS"); }
else if(userNilai.getSumTidak() > 0){
tvHasil.setText("DATA TERSEBUT TIDAK LULUS"); }
} } }
//Source Code Edit.java
package com.kurniawan.apptes;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
(6)
import com.kurniawan.apptes.c45Algorithm.Atribut;
import com.kurniawan.apptes.c45Algorithm.Nilai;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Edit extends Activity{
private static String[] listField = {"Pendidikan_Terakhir",
"Pengalaman_Bekerja", "Psikotes", "Intellegensi"}; private static Integer[] constAtribut = {0, 0, 0, 0, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3
};
private static String[] constNilai = {"SMA", "D1", "D3", "S1", "Ya", "Tidak",
"0", "1", "2", "3", "4", "5", "6", "7", "0", "1", "2", "3"
};
Nilai keterangan;
List<Atribut> listAtribut; List<String> field;
List<String> value;
Map<String, String> inputanUser;
private Button btnCek, btnSave, btnClear; SQLiteDatabase database;
DatabaseOpenHelper dbHelper; Cursor cursor;
EditText nama, alamat, telp, pend, pengalaman, psikotes, intellegensi; TextView ket;
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
btnCek = (Button) findViewById(R.id.editCekBtn); btnSave = (Button) findViewById(R.id.editSaveBtn); btnClear = (Button) findViewById(R.id.editClrBtn); nama = (EditText) findViewById(R.id.editNamaTxt); alamat = (EditText) findViewById(R.id.editAlamatTxt); telp = (EditText) findViewById(R.id.editTelpTxt); pend = (EditText) findViewById(R.id.editPendTxt);
pengalaman = (EditText) findViewById(R.id.editPengalamanTxt); intellegensi = (EditText) findViewById(R.id.editIntTxt); psikotes = (EditText) findViewById(R.id.editPsikotesTxt); ket = (TextView) findViewById(R.id.editHasilTxt);
final String namaIntent = getIntent().getStringExtra("primKey"); dbHelper = new DatabaseOpenHelper(this);
final SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM DataPelamar WHERE No = '" + namaIntent + "'", null);
cursor.moveToFirst();
if (cursor.getCount() > 0) { cursor.moveToPosition(0);
nama.setText(cursor.getString(1).toString()); alamat.setText(cursor.getString(2).toString()); telp.setText(cursor.getString(3).toString()); pend.setText(cursor.getString(4).toString());
(7)
pengalaman.setText(cursor.getString(5).toString()); psikotes.setText(cursor.getString(6).toString()); intellegensi.setText(cursor.getString(7).toString()); ket.setText(cursor.getString(8).toString());
}
btnCek.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { try {
clear();
inputanUser.put("Pendidikan_Terakhir",
pend.getText().toString());
inputanUser.put("Pengalaman_Bekerja",
pengalaman.getText().toString());
inputanUser.put("Psikotes",
psikotes.getText().toString());
inputanUser.put("Intellegensi",
intellegensi.getText().toString());
for(String field : listField){ Atribut n = new Atribut(field); listAtribut.add(n);
}
for(int i = 0; i < constNilai.length; i++){ try {
Nilai n = new Nilai(listField[constAtribut[i]], constNilai[i]);
n.AmbilDariDataSet(database, field, value); n.HitungEntropy();
listAtribut.get(constAtribut[i]).nilai.add(n); } catch (Exception e){
} }
c45Algorithm();
btnSave.setVisibility(View.VISIBLE); btnClear.setVisibility(View.VISIBLE); ket.setVisibility(View.VISIBLE); } catch (Exception e){
Log.d("Exception", e.toString()); }
} });
btnSave.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
final SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("UPDATE DataPelamar SET Nama = '"+
nama.getText().toString() +"'," +
" Alamat = '"+ alamat.getText().toString() +"', " + " Telp = '"+ telp.getText().toString() +"'," +
" Pendidikan_Terakhir = '"+ pend.getText().toString() +"'," +
" Pengalaman_Bekerja = '"+
pengalaman.getText().toString() +"'," +
" Psikotes = '"+ psikotes.getText().toString() +"',"
+
" Intellegensi = '"+
intellegensi.getText().toString() +"'," +
" Keterangan = '"+ ket.getText().toString() +"' WHERE No = '"+ namaIntent +"'");
(8)
} }); }
void clear(){
inputanUser = new HashMap<String, String>(); field = new ArrayList<String>();
value = new ArrayList<String>();
listAtribut = new ArrayList<Atribut>(); }
void c45Algorithm(){
keterangan = new Nilai("*", "*");
keterangan.AmbilDariDataSet(database, field, value); keterangan.HitungEntropy();
if(listAtribut.size() == 0){ if(keterangan.getSumYa() > 0){ ket.setText("LULUS"); return;
}
else if(keterangan.getSumTidak() > 0){ ket.setText("TIDAK LULUS");
return; }
}
Atribut bestGain = new Atribut();
Double maxGain = new Double(Double.MIN_VALUE); for(Atribut n : listAtribut){
n.HitungGain(keterangan.getEntropy(), keterangan.getSumNilai()); if(maxGain < n.gain || listAtribut.indexOf(n) == 0){
maxGain = n.gain; bestGain = n; }
Log.d("TRACE", n.nama + " GAIN : " + n.gain); }
String userValue = inputanUser.get(bestGain.nama); Nilai userNilai = new Nilai();
for(Nilai n : bestGain.nilai){
if(n.getNama().equals(userValue)){ userNilai = n;
} }
if(userNilai.getEntropy() != 0){ field.add(bestGain.nama); value.add(userValue); int i = 0;
for(int index = 0; index < listAtribut.size(); index++){ if(listAtribut.get(index).nama.equals(bestGain.nama)){ i = index;
} }
listAtribut.remove(i); c45Algorithm();
} else {
if(userNilai.getSumYa() > 0){
ket.setText("DATA TERSEBUT LULUS"); }
else if(userNilai.getSumTidak() > 0){
ket.setText("DATA TERSEBUT TIDAK LULUS"); }
(9)
} } }
//Source Code Hasil.java
package com.kurniawan.apptes;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; /**
* Created by Kurniawan on 12/30/2016. */
public class Hasil extends Activity{ DatabaseOpenHelper dbHelper; Cursor cursor;
Button edit,hapus;
TextView nomor, nama, alamat, telp, pend, pengalaman, psikotes,
intellegensi, ket; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.hasil);
nomor = (TextView) findViewById(R.id.tvNo); nama = (TextView) findViewById(R.id.editNamaTxt); pend = (TextView) findViewById(R.id.editPendTxt); alamat = (TextView) findViewById(R.id.editAlamatTxt); telp = (TextView) findViewById(R.id.noTelpTxt);
pengalaman = (TextView) findViewById(R.id.editPengalamanTxt); psikotes = (TextView) findViewById(R.id.editPsikotesTxt); intellegensi = (TextView) findViewById(R.id.editIntTxt); ket = (TextView) findViewById(R.id.hasilTxt);
final String namaIntent = getIntent().getStringExtra("nama"); nama.setText(namaIntent);
dbHelper = new DatabaseOpenHelper(this);
final SQLiteDatabase db = dbHelper.getReadableDatabase();
cursor = db.rawQuery("SELECT * FROM DataPelamar WHERE Nama = '" + namaIntent + "'", null);
cursor.moveToFirst();
if (cursor.getCount() > 0) { cursor.moveToPosition(0);
nomor.setText(cursor.getString(0).toString()); alamat.setText(cursor.getString(2).toString()); telp.setText(cursor.getString(3).toString()); pend.setText(cursor.getString(4).toString()); pengalaman.setText(cursor.getString(5).toString()); psikotes.setText(cursor.getString(6).toString()); intellegensi.setText(cursor.getString(7).toString()); ket.setText(cursor.getString(8).toString());
}
hapus = (Button) findViewById(R.id.deleteBtn);
(10)
@Override
public void onClick(View view) {
new AlertDialog.Builder(Hasil.this).setMessage("Hapus data?").setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) { SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("DELETE FROM DataPelamar WHERE No = '"+
nomor.getText().toString() +"'");
Intent intent = new Intent(Hasil.this, Data.class); startActivity(intent);
} }).show(); }
});
edit = (Button) findViewById(R.id.editBtn);
edit.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View view) {
Intent intent = new Intent(Hasil.this, Edit.class); String primKey = nomor.getText().toString();
intent.putExtra("primKey", primKey); startActivity(intent);
} }); } }
//Source Code Nilai.java
package com.kurniawan.apptes.c45Algorithm;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import java.util.List;
public class Nilai {
public static final String LULUS = "L";
public static final String TIDAK_LULUS = "TL";
public static final String NAMA_TABEL = "DataPelamar"; String nama, namaAtribut;
Integer sumNilai, sumYa, sumTidak; Double Entropy;
public Nilai(){ }
public Nilai(String namaAtribut, String nama){ this.nama = nama;
this.namaAtribut = namaAtribut; }
public Double getEntropy(){ return this.Entropy; }
public Integer getSumNilai(){ return this.sumNilai; }
public Integer getSumYa(){ return this.sumYa;
(11)
}
public Integer getSumTidak(){ return this.sumTidak; }
public String getNama(){ return this.nama; }
public void HitungEntropy() {
if (sumYa == 0 || sumTidak == 0) { this.Entropy = 0.0;
} else {
this.Entropy = (-(sumYa / sumNilai.doubleValue()) * (Math.log(sumYa / sumNilai.doubleValue()) / Math.log(2))) + (-(sumTidak / sumNilai.doubleValue()) * (Math.log(sumTidak / sumNilai.doubleValue()) / Math.log(2))); }
}
public void AmbilDariDataSet(SQLiteDatabase database, List<String> field, List<String> value){
String query = "SELECT " + namaAtribut + " FROM " + NAMA_TABEL + " WHERE ";
List<String> _value = new ArrayList<String>(); _value.addAll(value);
List<String> _field = new ArrayList<String>(); _field.addAll(field);
for(int i = 0; i < _field.size(); i++){ query += _field.get(i) + " = ? AND "; }
if(!namaAtribut.equals("*")) {
query += " " + namaAtribut + " = ? AND "; _value.add(nama);
}
query += " Keterangan = ? "; List<String> valueYes, valueNo; valueYes = new ArrayList<String>(); valueYes.addAll(_value);
valueYes.add(LULUS);
valueNo = new ArrayList<String>(); valueNo.addAll(_value);
valueNo.add(TIDAK_LULUS);
Cursor cursor = database.rawQuery(query, valueYes.toArray(new
String[valueYes.size()]));
sumYa = cursor.getCount();
cursor = database.rawQuery(query, valueNo.toArray(new
String[valueNo.size()]));
sumTidak = cursor.getCount(); this.sumNilai = sumYa + sumTidak; }
}
(12)
//Source Code Atribut.java
package com.kurniawan.apptes.c45Algorithm;
import java.util.ArrayList;
import java.util.List;
public class Atribut { public String nama; public List<Nilai> nilai; public Double gain; public Atribut(){ }
public Atribut(String nama){ this.nama = nama;
this.nilai = new ArrayList<Nilai>(); }
public void HitungGain(Double totalEntropy, Integer S){ this.gain = totalEntropy;
for(Nilai n : nilai){
this.gain -= ((n.sumNilai / S.doubleValue()) * (Math.log(n.sumNilai / S.doubleValue()) / Math.log(2))); }
} }
//Source Code DatabaseOpenHelper.java
package com.kurniawan.apptes;
import android.content.Context;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
public class DatabaseOpenHelper extends SQLiteAssetHelper { private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "DataPelamar (2)"; public DatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION); }
}
//Source Code Hasil.java
package com.kurniawan.apptes;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
public class DatabaseHandler {
private SQLiteOpenHelper openHelper; public SQLiteDatabase database;
private static DatabaseHandler instance; public DatabaseHandler(Context context) {
(13)
this.openHelper = new DatabaseOpenHelper(context); }
public static DatabaseHandler getInstance(Context context){ if (instance == null){
instance = new DatabaseHandler(context); }
return instance; }
public void open() {
this.database = openHelper.getWritableDatabase(); }
}
//Source Code Help.java
package com.kurniawan.apptes;
import android.app.Activity;
import android.os.Bundle;
public class Help extends Activity{ @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.help); }
}
// Source Code About.java
package com.kurniawan.apptes;
import android.app.Activity;
import android.os.Bundle;
public class About extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.about); }
(14)
CURRICULUM VITAE
Nama : Kurniawan Wardani AP. Hutagaol NIM : 101401050
Alamat Sekarang : Jln. Pasar III No. 103 Kel. Tegal Rejo, Kec. Medan Perjuangan
Alamat Orangtua : Jln. Pasar III No. 103 Kel. Tegal Rejo, Kec. Medan Perjuangan
Telp/Hp : 082276336927
Email : hutagaol.kurniawan@gmail.com
Riwayat Pendidikan
2010 – 2017 : S-1 Ilmu Komputer Universitas Sumatera Utara, Medan 2007 – 2010 : SMA Negeri 3 Medan
2004 – 2007 : SMP Swasta Budi Murni 1 Medan 1998 – 2004 : SD Swasta Budi Murni 6 Medan
Keahlian
Bahasa Pemrograman : Java.
Multimedia : Adobe Illustrator, Adobe Photoshop. Database : Microsoft Access, MySQL.
(15)
DAFTAR PUSTAKA
Adyatama, A. 2013. Pemanfaatan data mining pada sistem pengambilan keputusan penerimaan karyawan baru dengan metode decision tree dan C4.5. Skripsi. Universitas Sumatera Utara.
Astuti, Y.A. 2011. Analisis perbandingan teknik Support Vector Regression (SVR) dan decision tree C4.5 dalam data mining. Tesis. Universitas Sumatera Utara.
Bentley, Lonnie D. & Whitten, Jeffrey L. 2007. Systems Analysis and Design for the Global Enterprise, McGraw-Hill Education.
Florence, A.M.T. & Savithri, R. 2013. Talent knowledge acquisition using C4.5 classification algorithm. Int. J. of Emerging Technologies in Computational and Applied Sciences 4(4) : 406 – 410.
Jao, C.S. 2010. Decision Support System. Intech : Vukovar.
Kadir, A. 2003. Pengenalan Sistem Informasi. Andi : Yogyakarta.
Kusrini. 2007. Konsep dan Aplikasi Sistem Pendukung Keputusan. CV. Andi Offset : Yogyakarta.
Kusrini & Luthfi, E. H. 2009. Algoritma Data Mining. CV. Andi Offset : Yogyakarta.
Larose, D.T. & Larose, C. D. 2014. Discovering Knowledge in Data : An introduction to data mining. 2nd Edition. John Wiley & Sons, Inc. : Hoboken.
Purwanti, D. 2008 Kebijakan DOWNSIZING; Penyebab dan Dampak yang Ditimbulkannya. Jurnal Bisnis & Manajemen Vol. 4, No. 2
Quinlan, J.R. 1993. C4.5 :Programs for Machine Learning. Morgan Kaufmann Publisher : San Mateo.
Rokach, L. & Maimon, O. 2014. Data Mining with Decision Trees : Theory and application. 2nd Edition. World Scientific Publishing Co. Pte. Ltd. : Singapura.
Russel, Stuart J. & Norvig, P. 2003. Artificial Intelligence: A Modern Approach. New Jersey: Prentice Hall.
(16)
Sauter, V. L. 2010. Decision Support Systems for Business Intelligence. 2nd Edition. John Wiley & Sons. Inc : Hoboken
Supardi, Y. 2014. Semua Bisa Menjadi Programmer Android. PT. Elex Media Komputindo. Jakarta.
Turban, E. & Jay, E.A. 1998. Decision Support System and Intelligent System, Fifth Edition. Prentice Hall International : New Jersey.
(17)
BAB 3
ANALISIS DAN PERANCANGAN
3.1. Analisis Sistem
Di dalam perancangan suatu sistem, diperlukan satu tahap awal yang penting untuk dilakukan. Tahap ini disebut dengan analisis sistem yang mendeskripsikan tahap-tahap awal perancangan ataupun pengembangan suatu sistem. Tahap pertama dari analisis sistem adalah analisis masalah. Adapun tahap ini adalah untuk mempelajari dan memahami masalah yang akan diselesaikan dengan menggunakan sistem ini. Selanjutnya adalah analisis kebutuhan sistem yang bertujuan untuk membuat persyaratan yang akan memenuhi kebutuhan dan permintaan pengguna. Pada tahap akhir adalah pemodelan sistem.
3.1.1. Analisis Masalah
Dalam perspektif manajemen sumber daya manusia, karyawan atau orang-orang yang bekerja dalam perusahaan merupakan salah satu sumber keunggulan kompetitif dan elemen kunci yang penting untuk meraih kesuksesan dalam bersaing dan mencapai tujuan (Purwanti, 2008). Oleh karena itu, perekrutan karyawan dapat dikatan sebagai salah satu faktor penentu kesuksesan suatu perusahaan. Penentuan orang yang tepat pada posisi yang tepat harus lebih diperhatikan pihak pengambil keputusan. Masih banyak perusahaan yang menggunakan cara manual untuk melakukan perekrutan karyawan dimana pihak pengambil keputusan seringkali salah dalam menentukan kelulusan karyawan. Hal ini tentu dapat berpengaruh kepada kinerja perusahaan secara keseluruhan.
Sistem Pendukung Keputusan (SPK) dapat digunakan untuk membantu pihak pengambil keputusan dalam membuat suatu keputusan atas masalah perekrutan karyawan ini. Dengan adanya SPK, proses pengambilan keputusan akan lebih mudah
(18)
dan akurat karena akan dilakukan perhitungan secara otomatis terhadap sistem yang ada.
Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa (fishbone diagram). Diagram Ishikawa adalah sebuah alat grafis yang digunakan untuk mengeksplorasi dan menampilkan pendapat tentang komponen inti suatu kondisi di dalam organisasi. Diagram ini juga dapat menyusuri sumber-sumber penyebab atas suatu masalah (Russel, Stuart J. & Norvig, P. 2003). Pada Gambar 3.1 akan ditampilkan masalah yang terjadi di dalam perekrutan karyawan pada Blackberry Service Center Medan.
Masalah Perekrutan Karyawan Blackberry Service Center Medan Metode Material Man Machine Proses seleksi masih dilakukan secara manual Data yang tidak terkomputerisasi Proses seleksi tidak efisien Data tidak tersimpan secara baik Membutuhkn
sistem yang bekerja secara otomatis
Dibutuhkan alat untuk menyimpan data terkomputerisasi
Gambar 3.1 Diagram Ishikawa analisis masalah sistem
Adapun algoritma yang dapat digunakan untuk pemecahan masalah ini adalah algoritma C4.5. Algoritma ini akan mengklasifikasikan kriteria yang ada untuk dibentuk menjadi pohon keputusan. Selanjutnya pohon keputusan tersebut akan menghasilkan rules yang digunakan untuk menentukan kelulusan seorang pelamar.
3.1.2. Analisis Persyaratan
Analisis persyaratan terdiri dari persyaratan fungsional dan non-fungsional. Persyaratan fungsional berisi persyaratan pokok dari suatu sistem yang wajib ada atau disediakan dalam sistem tersebut. Sedangkan persyaratan non-fungsional berupa persyaratan tambahan yang dapat menunjang kinerja dari persyaratan fungsional.
(19)
1. Persyaratan Fungsional
Adapun yang menjadi persyaratan fungsional dari sistem ini adalah sebagai berikut: a. Aplikasi menghasilkan pilihan keputusan atas masalah perekrutan karyawan
dengan menggunakan algoritma C4.5.
b. Data yang dimasukkan ke dalam aplikasi adalah biodata pelamar dan penilaian yang termasuk ke dalam kategori yang akan digunakan algoritma C4.5.
2. Persyaratan Non-fungsional
Adapun persyaratan non-fungsional pada sistem ini adalah sebagai berikut : a. Aplikasi harus mudah digunakan dan dipelajari.
b. Aplikasi tidak memerlukan peralatan tambahan ataupun perangkat pendukung dalam proses eksekusinya.
c. Aplikasi dapat digunakan sebagai media penyimpanan data pelamar (sebagai database)
3.1.3. Pemodelan
Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem, serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan kegunaannya.
Pada penelitian ini digunakan UML (Unified Modeling Language) sebagai bahasa pemodelan untuk mendesain dan merancang Sistem Pendukung Keputusan dalam menentukan kelulusan pelamar. Model UML yang digunakan antara lain use case diagram, activity diagram, dan sequence diagram.
1. Use Case Diagram
Diagram ini menggambarkan interaksi antara sistem dan sistem eksternal dan para pengguna. Dengan kata lain, diagram ini secara visual menjelaskan siapa yang akan menggunakan sistem dan dengan cara apa pengguna mengharapkan untuk berinteraksi dengan sistem. Naratif use case digunakan sebagai tambahan menjelaskan langkah-langkah dari setiap interaksi secara tertulis (Bentley & Whitten, 2007). Pada Gambar 3.2 di bawah ini digambarkan use case sistem pendukung keputusan dalam menentukan perekrutan karyawan Blackberry Service Center Medan.
(20)
Gambar 3.2 Use case diagram sistem
Pada Gambar 3.2 dapat dilihat terdapat aktor yaitu HRD yang dapat melihat data pelamar dan memasukkan data pelamar baru. Pada saat melihat data pelamar, Pengguna dapat melakukan manipulasi terhadap data yang dipilih. Manipulasi Data adalah use case pilihan yang dapat dipilih setelah dilakukan Lihat Data, sehingga Manipulasi Data merupakan perluasan dari Lihat Data. Pada use case Masukkan Data Baru terdapat use case yang akan dikerjakan selanjutnya yaitu melakukan Perhitungan Algoritma C4.5 dan melakukan Simpan Data, sehingga hubungan antar use case menggunakan relasi include.
2. Activity Diagram
Activity diagram adalah suatu diagram yang digunakan untuk menggambarkan aliran proses usaha secara grafis, langkah-langkah dari suatu use case, atau logika dari suatu tingkah laku objek (method) (Bentley & Whitten, 2007). Nodes bulat berwarna hitam menunjukkan awal proses sedangkan nodes bulat berwarna hitam ditengah menunjukkan akhir proses. Sistem ini dibagi menjadi dua bagian terpisah untuk menunjukkan atau menyederhanakan proses-proses yang terjadi pada user maupun pada sistem. Pada kasus ini activity diagram dibagi menjadi dua, yaitu diagram untuk melihat hasil pengujian dan pengujian data baru. Adapun diagram untuk melihat hasil pengujian dapat dilihat pada Gambar 3.3.
Aplikasi SPK Perekrutan Karyawan
HRD
Lihat Data <<extend>> Manipulasi Data
Masukkan Data Baru
Perhitungan Algoritma C4.5
Simpan Data
<<include>>
(21)
Gambar 3.3 Activity Diagram Lihat Data
Dari Gambar 3.3 HRD pertama kali akan memilih untuk menampilkan database pelamar. Lalu oleh sistem, data akan ditampilkan. HRD akan memilih untuk melakukan manipulasi hasil pengujian pelamar atau keluar dari menu menampilkan data. Jika HRD memilih data pelamar, data yang sudah dimanipulasi akan disimpan ke dalam database oleh sistem. Kemudian sistem akan kembali ke menu utama.
HRD Aplikasi SPK
Memilih Lihat Data
Menampilkan Database Pelamar
Memilih Data Pelamar
Manipulasi Data Pelamar
Simpan Data yang Diubah
(22)
Gambar 3.4 Activity Diagram pengujian data baru
Diagram 3.4 adalah activity yang menunjukkan alur proses untuk pengujian data baru. Pengguna memasukkan biodata kemudian hasil tes pelamar ke dalam sistem. Lalu sistem akan melakukan pengujian terhadap data yang sudah dimasukkan untuk menentukan lulus atau tidaknya pelamar tersebut. Kemudian setelah hasil didapatkan, sistem akan menampilkan database pelamar untuk melihat bahwa benar data telah tersimpan ke dalam database sistem.
HRD Aplikasi SPK
Memilih Memasukkan Data Baru
Menampilkan Form Isi Biodata
Mengisi Form Biodata Pelamar
Simpan Data Pelamar
Menampilkan Form Isi Nilai Mengisi Form Nilai
Pelamar
Perhitungan C4.5
Simpan Nilai dan Hasil Menampilkan Hasil
(23)
3. Sequence Diagram
Sequence diagram adalah suatu diagram yang menggambarkan interaksi antara actor dan sistem pada use-case scenario. Diagram ini juga membantu melihat pesan high-level yang masuk dan keluar dari sistem (Bentley & Whitten, 2007). Garis penuh menunjukkan input yang dilakukan oleh user menuju sistem sedangkan garis putus-putus yang mengarah ke bagian user menunjukkan output yang dihasilkan oleh sistem. Tiap input dan output yang terjadi memiliki activation bars yang menunjukkan periode waktu dimana proses dilakukan.
Gambar 3.5 Sequence Diagram lihat, ubah, dan hapus data
Gambar 3.5 menampilkan interaksi antara pengguna terhadap sistem dan database. Pengguna dapat melihat, mengubah, dan menghapus data pelamar.
Penggun a
Melihat Hasil Pelamar
Menampilkan hasil kelulusan
pelamar
Database
Buka Tabel Pelamar Sistem
Ubah Data
Form Ubah Biodata dan
Nilai
Buka Tabel Pelamar
Ubah Biodata
dan Nilai Simpan Biodata
dan Nilai Baru
Hapus Data
Menampilkan hasil kelulusan
pelamar
(24)
Gambar 3.6 Sequence Diagram pengujian data baru
Gambar 3.6 menampilkan bagaimana proses menguji data baru. Terlihat bahwa pertama pengguna harus memasukkan data dan nilai pelamar. Dari situ, sistem akan menentukan kelulusan pelamar untuk disimpan di database dan ditampilkan kepada pengguna.
4. Flowchart Algoritma C4.5
Flowchart yang menggambarkan langkah-langkah perhitungan Algoritma C4.5 dapat dilihat pada Gambar 3.7
Gambar 3.7 Flowchart Algoritma C4.5
Penggun a
Input data pelamar
Input nilai pelamar Menampilkan hasil kelulusan
pelamar
Database
Simpan Data Sistem
M ulai
Inp ut nilai masing-masing atribut
Tentukan Entrop i dan Gain atribut
maxGain = node(i)
Cek nilai atribut untuk menjadi cabang node(i)
Nilai atribut = cabang
Berhenti Tidak Ya
(25)
Pada Gambar 3.7 terdapat beberapa proses yang terjadi ketika algoritma berjalan. Pertama user akan menginputkan nilai yang menjadi kriteria perhitungan. Proses berikutnya adalah, sistem akan membagi atribut tersebut untuk ditentukan entropy dan gainnya masing-masing. Setelah dilakukan pembandingan, sistem akan mengambil atribut dengan gain tertinggi untuk dijadikan root tree. Selanjutnya, sistem akan melakukan pengecekan untuk nilai atribut root tersebut untuk dibagi menjadi cabang dari tree. Jika nilai atribut memenuhi kriteria menjadi cabang, maka akan dilakukan pengulangan perhitungan entropy dan gain. Jika tidak, proses akan dianggap selesai.
3.2. Perancangan Antarmuka Sistem
Antarmuka pengguna (User Interface) merupakan mekanisme komunikasi antara pengguna (user) dengan sistem. Antarmuka pemakai dapat menerima informasi dari pengguna dan memberikan informasi kepada pengguna untuk membantu mengarahkan alur penelusuran masalah sampai ditemukan suatu solusi. Dengan kata lain antarmuka pemakai sebagai media antara pemakai dan komputer agar dapat saling berinteraksi, sehingga pengguna merasakan adanya keramahan sistem.
3.2.1. Antarmuka Menu Utama
Antarmuka Menu Utama atau Menu Awal adalah antarmuka pertama yang tampil pada saat aplikasi dijalankan seperti terlihat pada Gambar 3.8.
Gambar 3.8 Rancangan Menu Utama DATA
Aplikasi Perekrutan Karyawan
Blackberry Service Center Medan
TENTANG
a
PENGUJIAN
BANTUAN
b
c
(26)
Keterangan Gambar 3.8 : a. Button Data
Adalah tombol yang berfungsi untuk mengantarkan pengguna ke antarmuka Data
b. Button Pengujian
Adalah tombol yang berfungsi untuk mengantarkan pengguna ke antarmuka Pengujian
c. Button Bantuan
Adalah tombol yang berfungsi untuk mengantarkan pengguna ke antarmuka Bantuan
d. Button Tentang
Adalah tombol yang berfungsi untuk mengantarkan pengguna ke antarmuka Tentang
3.2.2. Antarmuka Menu Data
Menu Data akan menampilkan database nama-nama pelamar yang sudah pernah disimpan di dalam aplikasi. Nama tersebut ditampilkan dengan menggunakan sebuah ListView. Adapun tampilan antarmuka Menu Data dapat dilihat pada Gambar 3.9.
Gambar 3.9 Rancangan Menu Data
Jika salah satu nama pada List View dipilih, pengguna akan dibawa ke halaman Hasil Pengujian.
(27)
3.2.3. Antarmuka Menu Pengujian
Pada antarmuka ini, pengguna dapat memasukkan data pelamar baru dan nilai yang diperlukan untuk pembentukan tree. Rancangan antarmuka ini dapat dilihat pada Gambar 3.10.
Gambar 3.10 Rancangan Pengujian
Keterangan Gambar 3.10 : a. Text Field Nama
Berfungsi sebagai kolom inputan nama pelamar b. Text Field Alamat
Berfungsi sebagai kolom inputan alamat pelamar c. Text Field No. Telepon
Berfungsi sebagai kolom inputan nomor telepon pelamar d. Text Field Pend. Terakhir
Berfungsi sebagai kolom inputan pendidikan formal terakhir pelamar e. Text Field Pengalaman
Berfungsi sebagai kolom inputan apakah pelamar memiliki pengalaman bekerja
Nama
Alamat
No. Telp
Pend. Terakhir
Pengalaman
Psikotes
Intellegensi
HASIL
a
b
c
d
e
f
g
BIODATA PELAMAR
j CEK
h
SIMPAN i
(28)
f. Text Field Psikotes
Adalah kolom inputan nilai psikotes pelamar g. Text Field Status Intellegensi
Adalah kolom inputan nilai intellegensi pelamar h. Button Cek
Berfungsi untuk menguji kelulusan pelamar i. Button Simpan
Adalah tombol untuk menyimpan biodata pelamar dan menampilkan hasil data yang telah disimpan
j. Text View Hasil
Berfungsi untuk menampilkan hasil pengujian kelulusan pelamar
3.2.4. Antarmuka Menu Mengubah Data Pelamar
Adapun antarmuka ini berfungsi untuk mengubah data pelamar yang ada pada ListView di antarmuka Menu Data. Rancangan menu ini dapat dilihat pada Gambar 3.11.
Gambar 3.11 Rancangan Mengubah Data Pelamar Nama
Alamat
No. Telp
Pend. Terakhir
Pengalaman
Psikotes
Intellegensi
HASIL
a
b
c
d
e
f
g
UBAH BIODATA PELAMAR
j CEK
h
SIMPAN i
(29)
Keterangan Gambar 3.11 : a. Text Field Nama
Berfungsi sebagai kolom inputan nama pelamar b. Text Field Alamat
Berfungsi sebagai kolom inputan alamat pelamar c. Text Field No. Telepon
Berfungsi sebagai kolom inputan nomor telepon pelamar d. Text Field Pend. Terakhir
Berfungsi sebagai kolom inputan pendidikan formal terakhir pelamar e. Text Field Pengalaman
Berfungsi sebagai kolom inputan apakah pelamar memiliki pengalaman bekerja
f. Text Field Psikotes
Adalah kolom inputan nilai psikotes pelamar g. Text Field Status Intellegensi
Adalah kolom inputan nilai intellegensi pelamar h. Button Cek
Berfungsi untuk menguji kelulusan pelamar i. Button Simpan
Adalah tombol untuk menyimpan biodata pelamar dan menampilkan hasil data yang telah disimpan
j. Text View Hasil
Berfungsi untuk menampilkan hasil pengujian kelulusan pelamar
3.2.5. Antarmuka Menu Hasil
Antarmuka ini adalah antarmuka yang menampilkan hasil kelulusan seorang pelamar. Rancangan antarmuka ini terlihat pada Gambar 3.12.
(30)
Gambar 3.12 Rancangan Hasil
Keterangan Gambar 3.12 : a. Text View Nama
Berfungsi untuk menampilkan nama pelamar b. Text View No. Telepon
Berfungsi untuk menampilkan No. Telepon pelamar c. Text View Alamat
Berfungsi untuk menampilkan alamat pelamar d. Text View Pendidikan Terakhir
Berfungsi untuk menampilkan pendidikan terakhir pelamar e. Text View Pengalaman Bekerja
Berfungsi untuk menampilkan apakah pelamar memiliki pengalaman bekerja sebelum melamar
f. Text View Nilai Psikotes
Berfungsi untuk menampilkan nilai psikotes pelamar g. Text View Nilai Intellegensi
Berfungsi untuk menampilkan nilai intellegensi pelamar Hasil Kelulusan
Nama
a
No. Telp
b
Alamat
c
Pendidikan Terakhir
d
Pengalaman Bekerja
e
Nilai Psikotes
f
Nilai Intellegensi
g
Hasil
(31)
h. Text View Kelulusan
(32)
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1. Implementasi Sistem
Tahap implementasi merupakan tahapan yang dikerjakan setelah analisis dan perancangan sistem selesai dilakukan sebagaimana telah diuraikan pada Bab 3. Tahapan implementasi sistem ini harus dilalui dalam proses pengembangan perangkat lunak dari suatu sistem karena merupakan proses pengubahan spesifikasi sistem menjadi sistem yang dapat dijalankan.
Sistem perekrutan karyawan ini menggunakan algoritma C4.5 di dalam perancangannya. Algoritma ini berfungsi untuk menghasilkan kelulusan seorang pelamar yang melamar di Blackberry Service Center Medan. Sebelum melakukan perhitungan algoritma, data pelamar yang digunakan untuk pengujian dijadikan sebagai data training. Data tersebut adalah data pelamar yang ada antara tahun 2012-Januari 2015 yaitu sebanyak 144 data dengan rincian 19 pelamar dinyatakan lulus dan 125 pelamar tidak lulus. Dari data tersebut, didapat kriteria yang menjadi penilaian pihak pengambil keputusan untuk menentukan kelulusan seorang pelamar. Kriteria inilah yang akan menjadi atribut di dalam menghasilkan sebuah analisa untuk membuat pohon keputusan dari masalah ini. Atribut itu adalah pendidikan terakhir, pengalaman bekerja, nilai psikotes, dan nilai intellegensi. Berdasarkan data yang diperoleh dari Blackberry Service Center, atribut tersebut memiliki nilainya masing-masing.
1. Pendidikan terakhir
Atribut pendidikan terakhir memiliki nilai Strata I, Diploma III, Diploma I, SMA/SMK.
(33)
2. Pengalaman bekerja
Atribut ini dibagi atas pilihan Ya dan Tidak. “Ya” berarti memiliki
pengalaman bekerja, “Tidak” berarti belum memiliki pengalaman bekerja
(fresh graduate). 3. Nilai psikotes
Atribut ini berisi hasil dari ujian psikotes seorang pelamar. Nilai psikotes pelamar berisi nilai antara 0-9, dibagi menjadi 2 kelas yaitu 0-4 dan 5-9. 4. Nilai intellegensi
Nilai intellegensi dibagi menjadi 0, 1, 2, 3.
Dalam perancangan pohon keputusan dengan algoritma C4.5, perlu dibuat Data Atribut Target. Adapun Tabel Data Atribut seperti terlihat pada Tabel 4.1.
Tabel 4.1 Data Atribut Target
Atribut Target Deskripsi
Ya Pelamar Lulus
Tidak Pelamar Tidak Lulus
Selanjutnya, Data Atribut Target tersebut akan digunakan untuk menganalisis data set
yang ada berdasarkan variabel yang telah ditentukan seperti terlihat pada Tabel 4.2.
Tabel 4.2 Analisis Data Set
Atribut Nilai Sum
(Nilai)
Sum (Ya)
Sum (Tidak)
Pendidikan Terakhir SMA/SMK 39 5 34
D1 2 2 0
D3 41 2 39
S1 62 8 54
Pengalaman Ya 86 14 72
Tidak 58 5 53
Psikotes 0-4 105 0 105
5-9 39 19 20
(34)
1 35 0 35
2 50 10 40
3 30 9 21
Algoritma C4.5 ini menggunakan nilai entropy dan gain dari setiap atribut di dalam penentuan root dan node pohon keputusan. Langkah pertama dalam mencari entropy
dan gain variabel adalah menghitung entropy total dari data set dengan menggunakan rumus
� � = ∑ − × � �
�=
Maka didapat :
� � = (− 9 × � 9 ) + (− × � ) = ,
Untuk langkah selanjutnya, algoritma akan menentukan gain dan entropy dari masing-masing atribut. Untuk menghitung gain masing-masing variabel, digunakan rumus :
�� �, � = � � − ∑�� × � �
� �=
Adapun analisis entropy dan gain masing-masing variabel seperti terlihat pada Tabel 4.3.
Tabel 4.3 Perhitungan Entropy dan Gain
No-de
Variabel Nilai Sum
(Nilai) Sum (Ya)
Sum
(Tidak) Entropy
Gain
1 Pendidikan
Terakhir
SMA/SMK 39 5 34 0,552495114
D1 2 1 1 1
D3 41 4 37 0,461216041 S1 62 9 53 0,597597776
0,010606338 Pengalaman Ya 86 14 72 0,640944185
(35)
Tidak 58 5 53 0,423680572
0,009311589 Psikotes 0-4 105 0 105 0
5-9 39 19 20 0,999525689
0,292041944 Intellegensi 0 29 0 29 0
1 35 0 35 0
2 50 10 40 0,721928095 3 30 9 21 0,881290899
0,12847507
Dari tabel di atas dapat dilihat bahwa Psikotes adalah atribut dengan nilai gain
tertinggi, yaitu 0,292042. Psikotes diletakkan sebagai root tree. Atribut Psikotes memiliki dua nilai yaitu 0-4 dan 5-9. Dari tabel dapat dilihat bahwa tidak ada data yang lulus pada data set, sehingga menyebabkan salah satu cabang dari root psikotes adalah atribut target “Tidak”. Sedangkan nilai 5-9 masih merupakan pencarian node tree yang lebih dalam. Dengan hasil tersebut, didapat pohon keputusan awal seperti terlihat pada Gambar 4.1.
1 Psikotes
1.1 ?
5-9
Tidak 0-4
Gambar 4.1 Pohon keputusan node 1
Data awal yang berisi 144 data difilter dengan mengambil data yang memiliki nilai atribut Psikotes = 5-9, yaitu sebanyak 39 data dengan rincian 19 pelamar diterima dan 20 pelamar ditolak. Dari data tersebut, dihitung lagi entropy total dari data yang sudah difilter.
(36)
� � = − ( ) × � ( ) + − ( ) × � ( ) = ,
Lalu data tersebut dianalisis lagi untuk mencari nilai entropy dan gain dari masing-masing atribut yang tersisa. Hasil analisis tersebut dapat dilihat pada Tabel 4.4.
Tabel 4.4 Analisis Atribut untuk Node 1.1
No-de
Atribut Nilai Sum
(Nilai) Sum (Ya)
Sum
(Tidak) Entropy
Gain
1.1 Pendidikan
Terakhir
SMA/SMK 9 5 4 0,99107606
D1 1 1 0 0
D3 10 4 6 0,970950594 S1 19 9 10 0,98000884
0,03564858 Pengalaman Ya 19 14 5 0,831474388
Tidak 20 5 15 0,811278124
0,17840836
Intellegensi 0 7 0 7 0
1 4 0 4 0
2 17 10 7 0,977417818 3 11 9 2 0,684038436
0,38053851
Berdasarkan hasil analisis di atas, diperoleh atribut intellegensi dengan nilai gain
paling tinggi, yaitu sebesar 0,380538. Selanjutnya, atribut intellegensi menjadi node
1.1 pada pohon keputusan. Dari tabel diperoleh bahwa atribut memiliki 4 nilai yaitu 0, 1, 2, dan 3. Data yang dihasilkan untuk nilai 0 dan 1 adalah nol, sehingga cabang
untuk nilai 0 dan 1 adalah “Tidak”. Untuk mendapat percabangan dari nilai 2 dan 3,
tabel sebelumnya difilter dan dilakukan analisis kembali dengan nilai intellegensi = 2 dan nilai intellegensi = 4. Maka, bentuk tree sementara dapat dilihat pada Gambar 4.2.
(37)
1 Psikotes 1.1 Intellegensi 5-9 Tidak 0-4 1.1.3 ? 2 1.1.4 ? 3 Tidak 1 Tidak 0
Gambar 4.2 Pohon Keputusan Node 1.1
Perhitungan pohon keputusan terbagi menjadi dua yaitu pencarian node 1.1.3 dan 1.1.4.
1. Node 1.1.3
Node ini merupakan percabangan dari nilai intellegensi = 2. Sehingga analisis data yang dilakukan adalah data yang memiliki nilai psikotes = 5-9 dan nilai intellegensi = 2. Dari Tabel 4.4 dapat dilihat bahwa ada 17 data pelamar yang memiliki nilai psikotes = 5-9 dan nilai intellegensi = 2, dengan rincian 10 pelamar lulus dan 7 lagi tidak lulus. Sehingga nilai entropy untuk analisis data adalah :
� � = − ( ) × � ( ) + − ( ) × � ( ) = ,
Adapun hasil analisis untuk node 1.1.3 dapat dilihat pada Tabel 4.5.
Tabel 4.5 Analisis Atribut untuk Node 1.1.3
No-de
Variabel Nilai Sum
(Nilai) Sum (Ya)
Sum
(Tidak) Entropy
Gain
1.1.3 Pendidikan
Terakhir
SMA/SMK 4 3 1 0,811278
(38)
D3 6 3 3 1
S1 6 3 3 1
0,080646494 Pengalaman Ya 10 10 0 0
Tidak 7 0 7 0
0,977417818
Hasil analisis atribut menunjukkan bahwa atribut pengalaman memiliki nilai gain
yang lebih tinggi daripada atribut pendidikan terakhir. Dengan begitu, atribut pengalaman dapat diterima sebagai node 1.1.3. Atribut pengalaman memiliki nilai Ya dan Tidak. Dari hasil analisis terlihat bahwa semua data dengan nilai pengalaman = Ya dinyatakan lulus dan data dengan nilai pengalaman = Tidak dinyatakan tidak lulus. Sehingga pohon keputusan sementara dapat digambarkan seperti pada Gambar 4.3
1 Psikotes
1.1 Intellegensi
5-9
Tidak 0-4
1.1.3 Pengalaman 2
1.1.4 ? 3
Tidak 1
Tidak
0
Ya Ya
Tidak Tidak
(39)
2. Node 1.1.4
Ulangi lagi analisis dengan cara filter data yang memiliki nilai Psikotes = 5-9 dan Intellegensi = 3 untuk mencari node 1.1.4. Hasilnya adalah didapat 11 data dengan rincian 9 pelamar dinyatakan lulus dan 2 pelamar tidak lulus. Maka, didapat nilai
entropy untuk analisis data yang memiliki nilai Psikotes = 5-9 dan Intellegensi = 3 adalah :
� � = − ( ) × � ( ) + − ( ) × � ( ) = ,
Adapun hasil analisis data dengan nilai Psikotes = 5-9 dan Intellegensi = 3 terlihat seperti pada Tabel 4.5.
Tabel 4.6 Analisis Atribut untuk Node 1.1.4
No-de
Atribut Nilai Sum
(Nilai) Sum (Ya)
Sum
(Tidak) Entropy
Gain
1.1.4 Pendidikan
Terakhir
SMA/SMK 3 2 1 0,918296
D1 0 0 0 0
D3 1 1 0 0
S1 7 6 1 0,591673
0,057075076
Pengalaman Ya 4 4 0 0
Tidak 7 0 7 0
0,684038436
Dari hasil analisis dapat dilihat bahwa atribut pengalaman memiliki nilai gain yang lebih tinggi daripada pendidikan. Pengalaman dapat diterima sebagai node 1.1.4, sehingga pohon keputusan akhir dapat digambarkan seperti pada Gambar 4.4.
(40)
1 Psikotes
1.1 Intellegensi
5-9
Tidak 0-4
1.1.3 Pengalaman
2
1.1.4 Pengalaman 3
Tidak
1
Tidak
0
Ya Ya
Tidak Tidak
Ya Ya
Tidak Tidak
Gambar 4.4 Pohon Keputusan Node 1.1.4
Dari pohon keputusan diperoleh rules yang akan digunakan untuk penentuan kelulusan pelamar, yaitu :
IF Psikotes < 5 THEN Kelulusan = Tidak
IF Psikotes > 4 ^ Intellegensi = 0-1 THEN Kelulusan = Tidak
IF Psikotes > 4 ^ Intellegensi = 2 ^ Pengalaman = Ya THEN Kelulusan = Ya IF Psikotes > 4 ^ Intellegensi = 2 ^ Pengalaman = Tidak THEN Kelulusan = Tidak IF Psikotes > 4 ^ Intellegensi = 3 ^ Pengalaman = Ya THEN Kelulusan = Ya IF Psikotes > 4 ^ Intellegensi = 3 ^ Pengalaman = Tidak THEN Kelulusan = Tidak
4.2. Antarmuka Sistem
Ada beberapa antarmuka yang telah dirancang pada aplikasi ini. Adapun tujuan pembuatan antarmuka ini adalah untuk memudahkan pengguna dalam penggunaan aplikasi ini.
(41)
4.2.1. Form Menu Utama
Form Menu Utama ini merupakan form yang pertama kali muncul ketika aplikasi ini dijalankan. Seperti terlihat pada Gambar 4.5, form ini terdiri dari empat button, yaitu Data, Pengujian, Bantuan, dan Tentang. Data berfungsi untuk mengantar pengguna menuju form Data. Pengujian berfungsi untuk mengantar pengguna menuju form
Pengujian, Bantuan adalah button yang mengantar pengguna menuju form bantuan. Tentang akan mengantar pengguna menuju form Tentang.
Gambar 4.5 Form Menu Utama
4.2.2. Form Menu Data
Form Menu Data akan menampilkan daftar nama-nama pelamar yang sudah pernah dimasukkan ke dalam aplikasi seperti terlihat pada Gambar 4.6.
Gambar 4.6 Form Menu Data
(42)
4.2.3. Form Pengujian
Pada form ini, pengguna akan memasukkan biodata seorang pelamar baru untuk kemudian disimpan ke dalam database. Pada Gambar 4.7 terlihat beberapa field yang harus diisi oleh pengguna, yaitu Nama, Alamat, No. Telepon, Pendidikan Terakhir, Pengalaman Bekerja, Nilai Psikotes, dan Nilai Intellegensi. Setelah semua field terisi, pengguna dapat memilih button CEK untuk mendapatkan hasil pengujian. Setelah diperoleh hasil pengujian, akan muncul button baru dengan nama SIMPAN yang berfungsi untuk menyimpan data yang sudah diuji.
Gambar 4.7 Form Pengujian
4.2.4. Form Hasil
Form Hasil adalah form yang berfungsi untuk menampilkan biodata, nilai, dan hasil kelulusan seorang pelamar yang dipilih dari listView yang ada pada form Menu Data. Adapun tampilan form ini seperti terlihat pada Gambar 4.11.
(43)
Pada form ini terdapat dua button, yaitu UBAH dan HAPUS. Button UBAH berfungsi untuk mengubah data yang dipilih, dan HAPUS untuk menghapus data yang dipilih.
4.2.5. Form Bantuan
Form Bantuan berisi petunjuk penggunaan aplikasi, yaitu fungsi menu utama. Berikut ditampilkan form Bantuan pada Gambar 4.9
Gambar 4.9 Form Bantuan
4.2.6. Form Tentang
Form ini adalah form yang berisi judul skripsi, nama, dan NIM penulis. Tampilan dari
form ini dapat dilihat pada Gambar 4.10.
(44)
4.3. Pengujian Sistem
Pengujian sistem dilakukan untuk memeriksa kinerja antar komponen sistem yang diimplementasikan. Tujuannya adalah untuk memastikan bahwa elemen atau komponen dari sistem telah berfungsi sesuai dengan yang diharapkan. Pengujian akan dilakukan dengan metode black box testing. Pengujian black box berfokus kepada pengujian dengan melihat fungsi-fungsi yang ada di dalam sistem tanpa harus mengetahui bagaimana fungsi tersebut dibuat programnya. Pada sistem perekrutan karyawan ini, pengujian merujuk pada fungsi-fungsi yang dimiliki oleh sistem, kemudian membandingkan hasil keluaran program dengan hasil yang diharapkan. Bila hasil yang diharapkan sesuai dengan hasil pengujian, hal ini berarti perangkat lunak sesuai dengan desain yang telah ditentukan sebelumnya. Bila belum sesuai, maka perlu dilakukan pengecekan dan perbaikan lebih lanjut.
Pada Tabel 4.7, akan ditampilkan hasil pengujian 20 data yang diambil secara acak dari total 144 data pelamar.
Tabel 4.7 Data Pengujian Sampel
Id Pendidikan Terakhir Pengalaman
Bekerja Psikotes Intellegensi Kelulusan
6 S1 Ya 4 3 Tidak
7 S1 Tidak 7 3 Ya
18 S1 Tidak 5 0 Tidak
20 D3 Tidak 5 2 Tidak
25 SMA Ya 3 0 Tidak
30 S1 Ya 3 3 Tidak
39 D3 Ya 4 1 Tidak
42 S1 Ya 2 3 Tidak
53 S1 Ya 0 2 Tidak
57 S1 Ya 3 2 Tidak
61 SMA Ya 4 2 Tidak
(45)
83 D3 Ya 2 1 Tidak
96 SMA Ya 6 2 Ya
107 D3 Ya 4 2 Tidak
110 S1 Ya 3 0 Tidak
114 SMA Tidak 3 2 Tidak
121 D3 Ya 3 0 Tidak
126 D3 Tidak 3 2 Tidak
133 S1 Tidak 1 1 Tidak
4.3.1. Pengujian Perhitungan Algoritma
Hasil pengujian data pelamar dengan menggunakan aplikasi dapat dilihat pada Tabel 4.8.
Tabel 4.8 Tabel Hasil Pengujian Aplikasi Penentuan Kelulusan Karyawan Blackberry Service Center Medan
Id
Pelamar Kelulusan Gambar Hasil Pengujian Aplikasi
6 Tidak
(46)
7 Ya
Gambar 4.12 Hasil Uji Sampel 2
18 Tidak
(47)
20 Tidak
Gambar 4.14 Hasil Uji Sampel 4
25 Tidak
(48)
30 Tidak
Gambar 4.16 Hasil Uji Sampel 6
39 Tidak
(49)
42 Tidak
Gambar 4.18 Hasil Uji Sampel 8
53 Tidak
(50)
57 Tidak
Gambar 4.20 Hasil Uji Sampel 10
61 Tidak
(51)
68 Ya
Gambar 4.22 Hasil Uji Sampel 12
83 Tidak
(52)
96 Ya
Gambar 4.24 Hasil Uji Sampel 14
107 Tidak
(53)
110 Tidak
Gambar 4.26 Hasil Uji Sampel 16
114 Tidak
(54)
121 Tidak
Gambar 4.28 Hasil Uji Sampel 18
126 Tidak
(55)
133 Tidak
Gambar 4.30 Hasil Uji Sampel 20
Setelah dilakukan pengujian terhadap keseluruhan data (144 data), didapatkan hasil pengujian seperti terlihat pada Tabel 4.9 berikut ini.
Tabel 4.9. Perbandingan Data Set dan Hasil Pengujian
Data Set Hasil Pengujian
Lulus 19 14
Tidak Lulus 125 130
Total 144 144
Berdasarkan Tabel 4.9, didapat persentase keakuratan kelulusan hasil pengujian aplikasi :
� �ℎ � �� � �
� �ℎ � � � �� × % = × % = , %
Dari hasil perhitungan di atas, dapat dilihat bahwa algoritma C4.5 cukup efektif untuk membantu manajer dalam menentukan kelulusan pelamar dengan tingkat keakuratan sebesar 73,68%.
(56)
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan hasil dari implementasi dan pengujian, dapat disimpulkan bahwa :
1. Dengan menggunakan aplikasi ini, pengguna dapat lebih efektif dan efisien dalam menentukan kelulusan pelamar pada Blackberry Service Center Medan.
2. Algoritma C4.5 dapat digunakan untuk memecahkan masalah perekrutan karyawan dengan persentase keakuratan sebesar 73,68%.
3. Hasil yang diperoleh dari pengujian ini hanya sebagai alat bantu bagi pengambil keputusan. Keputusan kelulusan akhirnya akan ditentukan oleh pengambil keputusan juga.
5.2. Saran
Adapun saran yang dapat diberikan untuk mengembangkan penelitian ini adalah sebagai berikut :
1. Peneliti selanjutnya dapat menambah sampel pengujian yang digunakan pada perhitungan algoritma C4.5 untuk mendapatkan hasil yang lebih bervariasi.
2. Penelitian dapat dilakukan dengan melakukan pembandingan terhadap algoritma lain untuk mencari efektifitas yang lebih baik dalam menyelesaikan masalah perekrutan karyawan.
3. Pengujian sistem merupakan salah satu proses yang harus diperhatikan untuk mendapatkan hasil yang optimal dan sesuai dengan tujuan sebuah sistem pendukung keputusan dibuat.
(57)
BAB 2
TINJAUAN PUSTAKA
2.1. Sistem Pendukung Keputusan
Sistem Pendukung Keputusan (SPK) atau dikenal Decision Support System(DSS) adalah sistem informasi interaktif yang menyediakan informasi, pemodelan dan pemanipulasian data yang digunakan untuk membantu pengambilan keputusan pada situasi yang semiterstruktur dan situasi yang tidak terstruktur dimana tak seorangpun tahu secara pasti bagaimana keputusan seharusnya dibuat (Kadir, 2003).
2.1.1 Karakteristik Sistem Pendukung Keputusan
Adapun yang menjadi karakteristik SPK (Kadir, 2003) :
1. Menawarkan keluwesan, kemudahan beradaptasi, dan tanggapan yang cepat. 2. Memungkinkan pemakai memulai dan mengendalikan masukan dan keluaran. 3. Dapat dioperasikan dengan sedikit atau tanpa bantuan pemrogram profesional. 4. Menyediakan dukungan untuk keputusan dan permasalahan yang solusinya tak
dapat ditentukan di depan.
5. Menggunakan analisis data dan perangkat pemodelan yang canggih.
2.1.2 Arsitektur Sistem Pendukung Keputusan
Menurut Kusrini (2009), aplikasi SPK bisa terdiri dari beberapa subsistem, yaitu : 1. Subsistem manajemen data
Subsistem ini memasukkan satu database yang berisi data yang relevan untuk suatu situasi dan dikelola oleh perangkat lunak yang disebut sistem manajemen database (Data Base Management System/DBMS).
(58)
2. Subsistem manajemen model
Merupakan paket perangkat lunak yang memasukkan model keuangan, statistik, ilmu manajemen, atau model kuantitatif lain yang memberikan kapabilitas analitik dan manajemen perangkat lunak yang tepat.
3. Subsistem antarmuka pengguna
Pengguna berkomunikasi dengan dan memerintahkan sistem pendukung keputusan melalui subsistem tersebut. Pengguna adalah bagian yang dipertimbangkan dari sistem.
4. Subsistem manajemen berbasis pengetahuan
Subsistem tersebut mendukung semua subsistem lain atau bertindak langsung sebagai suatu komponen independen dan bersifat opsional.
2.1.3 Pandangan Pengguna Sistem Pendukung Keputusan
Pandangan pengguna SPK adalah salah satu yang mempengaruhi motivasi penggunaan SPK. Hubungan antara pandangan pengguna SPK dan motivasi penggunaan SPK diharapkan haruslah positif. Karena itu, motivasi untuk menggunakan SPK diharapkakn meningkat ketika SPK dirasakan menjadi lebih efektif ataupun efisien, atau lebih mudah penggunaannya. (Jao, 2010). Adapun yang menjadi pandangan pengguna tersebut adalah :
1. Keefektifan
Pengguna mungkin memposisikan keefektifan dan penggunaan lebih sedikit usaha untuk mencapai target mereka ketika sadar akan keuntungan dari meningkatkan hasil keputusan. Akibatnya, pertimbangan pengguna terhadap hasil keputusan akan menuju kepada peningkatan penggunaan SPK.
2. Efisiensi
Sebuah SPK dikatakan efisien jika dapat membantu pengguna dalam membuat keputusan dalam waktu yang singkat.
3. Usaha
Penelitian menunjukkan bahwa peningkatan penggunaan SPK meningkat ketika sebuah SPK mengurangi usaha yang digunakan untuk mengimplementasi strategi yang membutuhkan usaha penuh, dan ketika penggunaan SPK meningkatkan kualitas dan akurasi keputusan.
(59)
2.2 Android
Android merupakan sebuah sistem operasi perangkat mobile berbasis linux yang mencakup sistem operasi, middleware, dan aplikasi. Untuk mengembangkan Android, dibentuk OHA (Open Handset Aliance), konsorsium dari 34 perusahaan peranti keras (Hardware), peranti lunak (Software), dan telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, dan Nvidia. Pada tanggal 5 November 2007, Android dirilis pertama kali. Android bersama OHA menyatakan mendukung pengembangan open source pada perangkat mobile.
Sekitar bulan September 2007, Google mengenalkan Nexus One, salah satu jenis smartphone yang menggunakan Android sebagai sistem operasinya yang diproduksi oleh HTC Corp. dan tersedia di pasaran pada tanggal 5 Januari 2008. Sejak saat itu, Android berkembang pesat dan bersaing dengan Apple dalam sistem operasi untuk PC Tablet. Terdapat dua jenis distributor sistem operasi Android. Pertama yang mendapat dukungan penuh dari Google atau GMS (Google Mail Services), dan kedua adalah yang benar-benar bebas distribusinya, tanpa dukungan langsung Google, atau dikenal sebagai OHD (Open Handset Distribution). Hingga 14 Oktober 2013, Android sudah merilis 31 versi mulai dari versi Beta yang belum memakai versi angka sampai Kitkat versi 4.4. Semakin versi tinggi, fiturnya semakin canggih dan banyak.
2.3 Algoritma C4.5
Algoritma C4.5 adalah perluasan dari algoritma ID3 yang diciptakan Quinlan untuk menghasilkan decision tree. Algoritma ini menggunakan konsep information gain atau entropy reduction untuk memilih optimal split. C4.5 secara rekursif memeriksa setiap decision node, memilih optimal split, sampai tak ada lagi kemungkinan melakukan split (Larose & Larose, 2014).
Algoritma C4.5 adalah salah satu metode untuk membuat decision tree berdasarkan data training yang telah disediakan (Adyatama, 2013). Teknik pengklasifikasian C4.5 menggunakan entropy dan information gain untuk perluasan pohon(tree) (Florence & Savithri, 2013). Secara umum proses algoritma C4.5 untuk membangun pohon keputusan adalah sebagai berikut (Kusrini, 2009) :
1. Pilih atribut sebagai akar
2. Buat cabang untuk masing-masing nilai 3. Bagi kasus ke dalam cabang
(60)
4. Ulangi proses untuk masing-masing cabang sampai semua kasus selesai. Untuk memilih atribut sebagai akar, didasarkan pada nilai gain tertinggi dari atribut-atribut yang ada. Untuk menghitung gain digunakan rumus :
��� �, � = � � � � − ∑��� × � � � ��
� �=
Keterangan :
S : Himpunan Kasus A : Atribut
n : Jumlah Partisi Atribut A Si : Jumlah Kasus pada Partisi ke-i S : Jumlah Kasus dalam S
� � � � = ∑ − � × � � �
� �=
Keterangan :
S : Himpunan Kasus A : Fitur
N : Jumlah partisi S
pi : Proporsi dari Si terhadap S
Contoh kasus yang terjadi adalah untuk menyelesaikan kasus pertandingan tenis akan dilakukan atau tidak, berdasarkan keadaan cuaca, suhu, kelembapan, dan angin seperti pada Tabel 2.1.
(61)
Tabel 2.1 Data Set Kasus Penentuan Pelaksanaan Pertandingan No Cuaca Suhu Kelembapan Berangin Main
1 Cerah Panas Tinggi Salah Tidak
2 Cerah Panas Tinggi Benar Tidak
3 Berawan Panas Tinggi Salah Ya
4 Hujan Sejuk Tinggi Salah Ya
5 Hujan Dingin Normal Salah Ya
6 Hujan Dingin Normal Benar Ya
7 Berawan Dingin Normal Benar Ya
8 Cerah Sejuk Tinggi Salah Tidak
9 Cerah Dingin Normal Salah Ya
10 Hujan Sejuk Normal Salah Ya
11 Cerah Sejuk Normal Benar Ya
12 Berawan Sejuk Tinggi Benar Ya
13 Berawan Panas Normal Salah Ya
14 Hujan Sejuk Tinggi Benar Tidak
Kemudian hitung entropy dengan rumus :
� � � � = ∑ − � × � � �
� �=
Maka didapat :
� � � � = − ( ) × � � ( ) + − ( ) × � � ( ) = ,
Tabel 2.2 Hasil Perhitungan Entropy pada Data Set
Total Kasus Sum(Ya) Sum(Tidak) Entropy Total
(62)
Setelah mendapatkan entropy dari keseluruhan kasus pada Tabel 2.2, lakukan analisis pada setiap atribut dan nilai-nilainya dan hitung entropynya.
Hitung gain setiap atribut dengan rumus :
��� �, � = � � � � − ∑��� × � � � ��
� �=
��� � ��� = , − (( ) × + ( ) × , + ( ) × , )
��� � ��� = ,
Kemudian, hitung gain masing-masing atribut suhu, kelembapan, dan berangin. Hasil perhitungan dari masing-masing atribut terlihat pada Tabel 2.3.
Tabel 2.3 Analisis Atribut, Nilai, Banyaknya Kejadian Nilai, Entropy dan Gain
No-de Atribut Nilai
Sum (Nilai)
Sum (Ya)
Sum
(Tidak) Entropy Gain
1 Cuaca Berawan 4 4 0 0
Hujan 5 4 1 0,721928095 Cerah 5 2 3 0,970950594
0,258521037
Suhu Dingin 4 4 0 0
Panas 4 2 2 1
Sejuk 6 4 2 0,918295834
0,183850925 Kelembapan Tinggi 7 3 4 0,985228136
Normal 7 7 0 0
0,370506501 Berangin Salah 8 6 2 0,811278124
Benar 6 2 4 0,918295834
(1)
DAFTAR ISI
Hal.
PERSETUJUAN ii
PERNYATAAN iii
UCAPAN TERIMA KASIH iv
ABSTRAK vi
ABSTRACT vii
DAFTAR ISI viii
DAFTAR TABEL x
DAFTAR GAMBAR xi
DAFTAR LAMPIRAN xiii
BAB I PENDAHULUAN
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 2
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 3
1.7 Sistematika Penulisan 4
BAB II TINJAUAN PUSTAKA
2.1 Sistem Pendukung Keputusan 5
2.1.1 Karakteristik Sistem Pendukung Keputusan 5 2.1.2 Arsitektur Sistem Pendukung Keputusan 5 2.1.3 Pandangan Pengguna Sistem Pendukung Keputusan 6
2.2 Android 7
2.3 Algoritma C4.5 7
BAB III ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem 15
3.1.1 Analisis Masalah 15
3.1.2 Analisis Persyaratan 16
3.1.3 Pemodelan 17
3.2 Perancangan Antarmuka Sistem 23
3.2.1 Antarmuka Menu Utama 23
3.2.2 Antarmuka Menu Data 24
3.2.3 Antarmuka Menu Pengujian 25 3.2.4 Antarmuka Menu Mengubah Data Pelamar 26
(2)
BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi Sistem 30
4.2 Antarmuka Sistem 38
4.2.1 Form Menu Utama 39 4.2.2 Form Menu Data 39 4.2.3 Form Pengujian 40
4.2.4 Form Hasil 40
4.2.5 Form Bantuan 41 4.2.6 Form Tentang 42
4.3 Pengujian Sistem 42
4.3.1 Pengujian Perhitungan Algoritma 43
BAB V KESIMPULAN DAN SARAN
5.1 Kesimpulan 54
5.2 Saran 54
DAFTAR PUSTAKA 55
(3)
DAFTAR TABEL
Hal.
Tabel 2.1 Data Set Kasus Penentuan Pelaksanaan Pertandingan 9 Tabel 2.2 Hasil Perhitungan Entropy pada Data Set 9 Tabel 2.3 Analisis Atribut, Nilai, Banyaknya Kejadian Nilai, Entropy dan Gain 10
Tabel 2.4 Data dengan Kelembapan Tinggi 11
Tabel 2.5 Hasil Perhitungan Entropy Atribut Kelembapan Tinggi 11
Tabel 2.6 Analisis Atribut untuk Node 1.1 12
Tabel 2.7 Hasil Analisis Node 1.1.2 13
Tabel 2.8 Hasil Perhitungan Entropy Atribut Kelembapan Tinggi dan Hujan 13
Tabel 2.9 Analisis Atribut untuk Node 1.1.2 13
Tabel 4.1 Data Atribut Target 31
Tabel 4.2 Analisis Data Set 31
Tabel 4.3 Perhitungan Entropy dan Gain 32
Tabel 4.4 Analisis Atribut untuk Node 1.1 34
Tabel 4.5 Analisis Atribut untuk Node 1.1.3 35
Tabel 4.6 Analisis Atribut untuk Node 1.1.4 37
Tabel 4.7 Data Pengujian Sampel 42
Tabel 4.8 Tabel Hasil Pengujian Aplikasi Penentuan Kelulusan Karyawan 43 Tabel 4.9 Perbandingan Data Set dan Hasil Pengujian 50
(4)
DAFTAR GAMBAR
Hal.
Gambar 2.1 Pohon Keputusan Node 1 (root node) 11
Gambar 2.2 Pohon Keputusan Analisis Node 1.1 12
Gambar 2.3 Pohon Keputusan Akhir 14
Gambar 3.1 Diagram Ishikawa Analisis Masalah Sistem 16
Gambar 3.2 Use Case Diagram Sistem 18
Gambar 3.3 Activity Diagram Lihat Data 19
Gambar 3.4 Activity Diagram Pengujian Data Baru 20 Gambar 3.5 Sequence Diagram Lihat, Ubah, dan Hapus Data 21 Gambar 3.6 Sequence Diagram Pengujian Data Baru 22
Gambar 3.7 Flowchart Algoritma C4.5 22
Gambar 3.8 Rancangan Menu Utama 23
Gambar 3.9 Rancangan Menu Data 24
Gambar 3.10 Rancangan Pengujian 25
Gambar 3.11 Rancangan Mengubah Data Pelamar 26
Gambar 3.12 Rancangan Hasil 28
Gambar 4.1 Pohon Keputusan Node 1 33
Gambar 4.2 Pohon Keputusan Node 1.1 35
Gambar 4.3 Pohon Keputusan Node 1.1.3 36
Gambar 4.4 Pohon Keputusan Node 1.1.4 38
Gambar 4.5 Tampilan Form Menu Utama 39
Gambar 4.6 Tampilan Form Menu Data 39
Gambar 4.7 Tampilan Form Pengujian 40
Gambar 4.8 Tampilan Form Hasil 40
Gambar 4.9 Tampilan Form Bantuan 41
Gambar 4.10 Tampilan Form Tentang 41
Gambar 4.11 Hasil Uji Sampel 1 43
Gambar 4.12 Hasil Uji Sampel 2 44
Gambar 4.13 Hasil Uji Sampel 3 44
Gambar 4.14 Hasil Uji Sampel 4 45
Gambar 4.15 Hasil Uji Sampel 5 45
Gambar 4.16 Hasil Uji Sampel 6 46
Gambar 4.17 Hasil Uji Sampel 7 46
Gambar 4.18 Hasil Uji Sampel 8 47
Gambar 4.19 Hasil Uji Sampel 9 47
Gambar 4.20 Hasil Uji Sampel 10 48
Gambar 4.21 Hasil Uji Sampel 11 48
Gambar 4.22 Hasil Uji Sampel 12 49
Gambar 4.23 Hasil Uji Sampel 13 49
Gambar 4.24 Hasil Uji Sampel 14 50
Gambar 4.25 Hasil Uji Sampel 15 50
(5)
Gambar 4.26 Hasil Uji Sampel 16 51
Gambar 4.27 Hasil Uji Sampel 17 51
Gambar 4.28 Hasil Uji Sampel 18 52
Gambar 4.29 Hasil Uji Sampel 19 52
(6)
DAFTAR LAMPIRAN
Hal.
LISTING PROGRAM A-1
CURRICULUM VITAE B-1