🌌Fitur dan Ekstransi Fitur

Apa itu fitur?

Fitur merupakan representasi dari sebuah data (raw data) yang berbentuk nilai-nilai dalam angka. Fitur merupakan atribut, karakteristik, atau penciri dari data tersebut yang menunjukkan sebuah keunikan dari sebuah data. Secara alamiah, fitur didapatkan dari data yang telah tersedia. Selain itu, terkadang, fitur juga memiliki hubungan dengan algoritma atau model pembelajaran mesin yang digunakan. Dengan kata lain, beberapa model hanya cocok dengan beberapa jenis fitur, begitu juga sebaliknya. Pemilihan fitur yang tepat, dapat mempermudah model dalam melakukan pembelajaran, sehingga dapat mencapai tujuan dengan lebih baik. Untuk mendapatkan fitur yang sesuai dengan data, model, dan tujuan pembelajaran mesin, dapat dilakukan proses perekayasaan fitur atau lebih sering dikenal dengan istilah feature engineering.

Untuk lebih memahami tentang konsep fitur, mari kita gunakan data pesan email. Perhatikan ilustrasi pada Gambar 2.1. Pada konteks pesan email, data yang digunakan keseluruhan pesan email itu sendiri. Didalam sebuah pesan email pasti terdapat alamat pengirim, alamat tujuan, subyek pesan email, dan isi email. Lalu, mana yang dapat kita jadikan sebagai fitur dalam data pesan email? Beberapa hal yang mungkin revelan untuk menjadi fitur pesan email adalah panjang isi email, kata atau karakter khusus di dalam email, nama pengirim, alamat penerima, dan sebagainya. Hal ini menjadikan jumlah fitur di dalam sebuah data bisa jadi sangat banyak.

Jumlah fitur yang kita gunakan juga sangat penting. Jika fitur yang digunakan terlalu sedikit, maka model pembelajaran mesin tidak dapat belajar dengan baik. Jika fitur yang digunakan terlalu banyak, proses pembelajaran akan berlangsung lebih lama dan ada kemungkinan model menjadi lebih sulit untuk menemukan pola-pola unik didalam fitur-fitur tersebut. Kedua hal tersebut dikenal dengan istilah underfitting dan overfitting.

Ekstraksi Fitur

Setelah mengetahui konsep fitur pada pembelajaran mesin, selanjutnya kita akan membahas bagaimana cara mendapatkan fitur dari sebuah data. Proses ini dikenal dengan nama ekstraksi fitur (feature extraction).

Ekstraksi fitur adalah proses pengurangan (reduksi) dimensi dari sebuah data mentah menjadi nilai-nilai atau variabel-variabel yang mudah dikelola oleh perangkat komputasi. Pada proses ini juga dilakukan pemilihan dan pengkombinasian nilai-nilai dari data sehingga dapat digunakan sebagai fitur atau representasi dari data tersebut. Untuk memudahkan pemahaman terkait dengan dimensi dan fitur, perhatikan data penumpang kapal Titanic pada Gambar dibawah ini.

Dimensi pada data penumpang kapal Titanic merupakan semua kolom pada data mulai dari PassengerId hingga Embarked. Sehingga, berdasarkan hal tersebut, kita dapat mengatakan bahwa data tersebut terdiri dari 12 dimensi. Lalu, apabila kita memunculkan sebuah pertanyaan, "Bagaimana caranya jika kita ingin mengetahui pengumpang yang selamat dari tragedi Titanic?". Maka kita perlu menganalisis kolom mana saya yang mungkin dapat mencirikan bahwa penumpang tersebut selamat atau tidak. Bisa jadi, tidak semua 12 dimensi data kita gunakan menjadi fitur untuk dapat menjawab pertanyaan tersebut.

Mari coba kita analisa bersama-sama.

Informasi terkait dengan apakah penumpang selamat atau tidak, dapat dilihat dari kolom "Survived". Nilai "0" untuk tidak selamat dan "1" untuk penumpang yang selamat. Kolom "Survived" akan menjadi acuan kita dalam mencari ciri-ciri penumpang yang selamat. Selanjutnya kita perlu melakukan analisis dimensi mana yang dapat menggambarkan bahwa penumpang tersebut selamat ataupun tidak. Let's do this!

  • PassengerId --> "PassengerId" merupakan kolom yang digunakan untuk mengetahui urutan penumpang. Kesemuanya nilainya unik untuk setiap penumpang, tidak unik untuk membedakan penumpang yang salamat atau tidak. So, kita tidak dapat menggunakan PessengerId sebagai fitur.

  • Pclass --> "Pclass" merupakan informasi terkait dengan kelas penumpang didalam dek kapal Titanic. Nilainya terdiri dari 1,2,3. Bisa jadi kelas penumpang menggambarkan lokasi pada kapal, dek bawah, dek tengah, ataupun dek atas. Potensi dek bawah untuk tidak selamat pada tragedi ini cukup besar secara logika. Sedangkan dek atas sebaliknya. Sehingga, ada kemungkinan "Pclass" dapat menjadi nilai yang unik.

  • Name --> "Name" merupakan informasi tekait dengan nama penumpang. Seluruhnya unik untuk setiap penumpang, sama seperti "PassengerId". Akan menjadi sulit apabila nilai ini kita gunakan untuk menjadi sebuah penciri penumpang selamat ataupun tidak. Kita tidak akan menggunakannya.

  • "Sex" --> "Sex" merupakan informasi terkait dengan jenis kelamin penumpang. Nilai ini memiliki kemungkinan untuk menjadi sebuah fitur. Hal ini dikarenakan, pada kondisi darurat, terdapat kemungkinan jenis kelamin tertentu memiliki prioritas untuk diselamatkan terlebih dahulu. Kita dapat melihat pada film Titatic, anak-anak dan wanita merupakan prioritas untuk diselamatkan. Oleh karena itu, kita dapat menggunakan "Sex" sebagai fitur.

  • "Age" --> Seperti nama kolomnya, "Age" merupakan informasi terkait dengan usia penumpang. Nilai ini juga memiliki kemungkinan untuk dijadikan sebuah fitur dengan alasan yang sama dengan "Sex", yaitu prioritas.

  • "SibSp" --> "SibSp" merupakan informasi terkait dengan jumlah saudara (siblings) dan pasangan ("spouses"). Pada tragedi Titanic, keadaan menjadi sangat tidak terkendali, ada kemungkinan setiap orang berusaha menyelamatkan dirinya sendiri. Sehingga, jumlah saudara ataupun pasangan mungkin tidak revelan untuk menggambarkan orang tersebut selamat atau tidak.

  • "Parch" --> "Parch" merupakan informasi terkait dengan jumlah anak ataupun orang tua yang ikut dalam perjalanan Titanic. Dengan alasan yang sama dengan "SibSp", cukup sulit untuk menjadikan data ini sebagai acuan untuk mengetahui apakah penumpang selamat atau tidak.

  • "Ticket" --> "Ticket" merupakan informasi nomor tiket untuk setiap penumpang. Nomor ini unik untuk setiap tiket. Sehingga sulit untuk menjadinya penciri "Survived" sama halnya seperti "PassengerID".

  • "Fare" --> "Fare" merupakan informasi harga tiket yang dibayarkan oleh penumpang. Setiap orang mungkin berbeda. Akan tetapi, tiket untuk setiap kelas pasti tidak jauh berbeda. Sehingga, kita dapat mengelompokkan "Fare" menjadi 3 kelompok dengan rentang harga tertentu. Hal ini dikarenakan "Fare" kemungkinan memiliki korelasi dengan "Pclass". Oleh karena itu, "Fare" memiliki kemungkinan untuk menjadi fitur.

  • "Cabin" --> "Cabin" merupakan informasi lokasi kabin penumpang. Jika kita perhatikan pada Gambar 2.2, terdapat beberapa data dengan nilai "NaN" pada "Cabin". Hal ini menandakan hilangnya informasi "Cabin" pada data tersebut, atau, bisa jadi penumpang tersebut memang memegang tiket non-kabin. Kita dapat menjadikan ini sebagai fitur dengan syarat. Syaratnya adalah, kita harus mengenaralisir nilai kabin dan non kabin.

  • "Embarked" --> "Embarked" adalah informasi tentang dimana penumpang akan turun. Dikarenakan targedi Titanic terjadi sebelum Titanic bersandar disalah satu lokasi embarkasi, maka, informasi ini menjadi tidak relevan untuk menjadi acuan apakah penumpang selamat atau tidak.

Berdasarkan analisa yang telah kita lakukan, maka kita mendapatkan,

  • "Pclass"

  • "Sex"

  • "Age"

  • "Fare"

  • "Cabin"

sebagai fitur yang akan kita gunakan untuk memprediksi apakah penumpang selamat atau tidak. Kita dapat melihat, dimensi yang digunakan mengecil. Tidak semua informasi dari data Titanic kita gunakan untuk memprediksi keselamatan penumpang. Inilah yang dimaksud dengan konsep reduksi dimensi pada proses ekstraksi fitur. Selain itu, berdasarkan analisa yang kita lakukan, kita juga melakukan pemilihan nilai-nilai yang dapat menggambarkan kondisi keselamatan penumpang. Proses inilah yang disebut proses pemiliah nilai atau fitur.

Pertanyaan selanjutnya adalah, apakah fitur yang kita pilih sudah tepat? Jawabannya bisa jadi "ya" bisa jadi "tidak". Diperlukan pengukuran lebih lanjut terkait dengan hal ini. Kita akan mempelajarinya sepanjang perjalanan kita mempelajari materi pembelajaran mesin. So, keep learning!

Last updated