{count, plural, one {Kursus} other {Kursus}}
Jalankan dan edit kode dari Tutorial ini secara online
Jalankan kodeJika Anda ingin belajar lebih banyak Python, ikuti kursus gratis DataCamp Intro to Python for Data Science.
Anda semua pernah melihat dataset. Terkadang kecil, tetapi sering kali ukurannya sangat besar. Menangani dataset yang sangat besar menjadi tantangan, setidaknya cukup besar hingga menyebabkan hambatan pemrosesan.
Lalu, apa yang membuat dataset tersebut begitu besar? Ya, fiturnya. Semakin banyak jumlah fitur, semakin besar datasetnya. Ya, tidak selalu. Anda akan menemukan dataset dengan jumlah fitur yang sangat banyak, tetapi tidak mengandung begitu banyak instance. Namun itu bukan pokok bahasan di sini. Jadi, Anda mungkin bertanya-tanya, dengan komputer standar di tangan, bagaimana memproses jenis dataset ini tanpa berputar-putar.
Sering kali, dalam dataset berdimensi tinggi, ada beberapa fitur yang sepenuhnya tidak relevan, tidak signifikan, dan tidak penting. Telah terlihat bahwa kontribusi jenis fitur ini sering kali lebih kecil terhadap pemodelan prediktif dibandingkan fitur kritis. Bahkan bisa jadi kontribusinya nol. Fitur-fitur ini menimbulkan sejumlah masalah yang pada gilirannya menghambat proses pemodelan prediktif yang efisien -
- Alokasi sumber daya yang tidak perlu untuk fitur-fitur ini.
- Fitur-fitur ini bertindak sebagai noise sehingga model machine learning dapat berkinerja sangat buruk.
- Model membutuhkan waktu lebih lama untuk dilatih.
Lalu, apa solusinya? Solusi paling ekonomis adalah Seleksi Fitur.
Seleksi Fitur adalah proses memilih fitur-fitur paling signifikan dari suatu dataset. Dalam banyak kasus, Seleksi Fitur juga dapat meningkatkan kinerja model machine learning.
Menarik, bukan?
Anda telah mendapat pengenalan informal tentang Seleksi Fitur dan pentingnya dalam dunia Data Science dan Machine Learning. Dalam tulisan ini Anda akan membahas:
- Pengenalan seleksi fitur dan memahami pentingnya
- Perbedaan antara seleksi fitur dan reduksi dimensi
- Berbagai jenis metode seleksi fitur
- Implementasi berbagai metode seleksi fitur dengan scikit-learn
Pengenalan Seleksi Fitur
Seleksi fitur juga dikenal sebagai pemilihan variabel atau pemilihan atribut.
Pada dasarnya, ini adalah proses memilih fitur yang paling penting/relevan dari sebuah dataset.
Memahami Pentingnya Seleksi Fitur
Pentingnya seleksi fitur paling terasa ketika Anda berhadapan dengan dataset yang berisi sejumlah besar fitur. Tipe dataset ini sering disebut sebagai dataset berdimensi tinggi. Dengan dimensi yang tinggi ini, muncul banyak masalah seperti: waktu pelatihan model machine learning meningkat signifikan; model menjadi sangat rumit yang pada gilirannya dapat menyebabkan overfitting.
Sering kali dalam himpunan fitur berdimensi tinggi, terdapat beberapa fitur yang redundan, artinya fitur-fitur tersebut hanyalah perpanjangan dari fitur-fitur penting lainnya. Fitur yang redundan juga tidak berkontribusi efektif terhadap pelatihan model. Jadi, jelas ada kebutuhan untuk mengekstrak fitur paling penting dan paling relevan dari sebuah dataset guna memperoleh kinerja pemodelan prediktif yang paling efektif.
"Tujuan pemilihan variabel ada tiga: meningkatkan kinerja prediksi dari prediktor, menyediakan prediktor yang lebih cepat dan hemat biaya, serta memberikan pemahaman yang lebih baik tentang proses dasar yang menghasilkan data."
-An Introduction to Variable and Feature Selection
Sekarang mari pahami perbedaan antara reduksi dimensi dan seleksi fitur.
Terkadang, seleksi fitur disalahartikan sebagai reduksi dimensi. Padahal keduanya berbeda. Keduanya sama-sama mengurangi jumlah atribut dalam dataset, tetapi metode reduksi dimensi melakukannya dengan membuat kombinasi baru dari atribut (kadang disebut transformasi fitur), sedangkan metode seleksi fitur menyertakan atau mengecualikan atribut yang ada dalam data tanpa mengubahnya.
Beberapa contoh metode reduksi dimensi adalah Principal Component Analysis, Singular Value Decomposition, Linear Discriminant Analysis, dan sebagainya.
Izinkan saya merangkum pentingnya seleksi fitur untuk Anda:
- Memampukan algoritma machine learning dilatih lebih cepat.
- Mengurangi kompleksitas model dan membuatnya lebih mudah diinterpretasikan.
- Meningkatkan akurasi model jika subset yang tepat dipilih.
- Mengurangi overfitting.
Pada bagian berikutnya, Anda akan mempelajari berbagai jenis metode seleksi fitur umum - Metode Filter, Wrapper, dan Embedded.
Metode Filter
Gambar berikut paling tepat menggambarkan metode seleksi fitur berbasis filter:

Sumber Gambar: Analytics Vidhya
Metode filter bergantung pada kekhasan umum data yang dievaluasi untuk memilih subset fitur, tanpa menyertakan algoritma penambangan apa pun. Metode filter menggunakan kriteria penilaian seperti jarak, informasi, ketergantungan, dan konsistensi. Metode filter menggunakan kriteria utama teknik pemeringkatan dan menggunakan metode pengurutan peringkat untuk pemilihan variabel. Alasan menggunakan metode pemeringkatan adalah kesederhanaannya, menghasilkan fitur yang baik dan relevan. Metode pemeringkatan akan menyaring fitur yang tidak relevan sebelum proses klasifikasi dimulai.
Metode filter umumnya digunakan sebagai langkah prapemrosesan data. Pemilihan fitur independen dari algoritma machine learning mana pun. Fitur diberi peringkat berdasarkan skor statistik yang menentukan korelasi fitur dengan variabel keluaran. Korelasi adalah istilah yang sangat kontekstual, dan berbeda-beda sesuai pekerjaan. Anda dapat merujuk tabel berikut untuk mendefinisikan koefisien korelasi untuk berbagai jenis data (dalam hal ini kontinu dan kategorikal).

Sumber Gambar: Analytics Vidhya
Beberapa contoh metode filter meliputi uji Chi-kuadrat, information gain, dan skor koefisien korelasi.
Berikutnya, Anda akan melihat metode Wrapper.
Metode Wrapper
Sama seperti metode filter, berikut infografik serupa yang akan membantu Anda memahami metode wrapper dengan lebih baik:

Sumber Gambar: Analytics Vidhya
Seperti yang terlihat pada gambar di atas, metode wrapper memerlukan satu algoritma machine learning dan menggunakan kinerjanya sebagai kriteria evaluasi. Metode ini mencari fitur yang paling cocok untuk algoritma machine learning dan bertujuan meningkatkan kinerja penambangan. Untuk mengevaluasi fitur, akurasi prediktif digunakan untuk tugas klasifikasi dan kualitas klaster dievaluasi menggunakan klastering.
Beberapa contoh tipikal metode wrapper adalah forward feature selection, backward feature elimination, recursive feature elimination, dan lain-lain.
- Forward Selection: Prosedur dimulai dengan himpunan fitur kosong [himpunan tereduksi]. Fitur terbaik dari fitur asli ditentukan dan ditambahkan ke himpunan tereduksi. Pada setiap iterasi berikutnya, atribut terbaik dari atribut asli yang tersisa ditambahkan ke himpunan.
- Backward Elimination: Prosedur dimulai dengan himpunan atribut penuh. Pada setiap langkah, atribut terburuk yang tersisa dalam himpunan dihapus.
- Kombinasi forward selection dan backward elimination: Metode stepwise forward selection dan backward elimination dapat digabungkan sehingga pada setiap langkah, prosedur memilih atribut terbaik dan menghapus yang terburuk dari atribut yang tersisa.
- Recursive Feature Elimination: Recursive feature elimination melakukan pencarian rakus untuk menemukan subset fitur dengan kinerja terbaik. Secara iteratif ia membuat model dan menentukan fitur terbaik atau terburuk pada setiap iterasi. Ia membangun model berikutnya dengan fitur tersisa hingga semua fitur dieksplorasi. Kemudian ia memberi peringkat fitur berdasarkan urutan eliminasi. Dalam kasus terburuk, jika sebuah dataset berisi N fitur, RFE akan melakukan pencarian rakus untuk 2N kombinasi fitur.
Cukup baik!
Sekarang mari pelajari metode embedded.
Metode Embedded
Metode embedded bersifat iteratif dalam arti memperhatikan setiap iterasi proses pelatihan model dan dengan cermat mengekstrak fitur-fitur yang paling berkontribusi pada pelatihan untuk iterasi tertentu. Metode regularisasi adalah metode embedded yang paling umum digunakan yang memberikan penalti pada fitur berdasarkan ambang koefisien.
Itulah mengapa metode regularisasi juga disebut metode penalization yang memperkenalkan kendala tambahan ke dalam optimisasi algoritma prediktif (seperti algoritma regresi) yang mengarahkan model ke kompleksitas yang lebih rendah (lebih sedikit koefisien).
Contoh algoritma regularisasi adalah LASSO, Elastic Net, Ridge Regression, dan lain-lain.
Perbedaan antara Metode Filter dan Wrapper
Memang kadang membingungkan membedakan metode filter dan wrapper dari segi fungsionalitasnya. Mari lihat poin-poin perbedaannya.
- Metode filter tidak melibatkan model machine learning untuk menentukan apakah suatu fitur baik atau buruk, sedangkan metode wrapper menggunakan model machine learning dan melatihnya dengan fitur untuk memutuskan apakah fitur tersebut penting atau tidak.
- Metode filter jauh lebih cepat dibandingkan metode wrapper karena tidak melibatkan pelatihan model. Di sisi lain, metode wrapper mahal secara komputasi, dan untuk dataset yang sangat besar, metode wrapper bukan pilihan seleksi fitur yang paling efektif untuk dipertimbangkan.
- Metode filter mungkin gagal menemukan subset fitur terbaik ketika tidak ada cukup data untuk memodelkan korelasi statistik fitur, tetapi metode wrapper dapat selalu memberikan subset fitur terbaik karena sifatnya yang ekshaustif.
- Menggunakan fitur dari metode wrapper dalam model machine learning akhir Anda dapat menyebabkan overfitting karena metode wrapper sudah melatih model dengan fitur-fitur tersebut dan ini memengaruhi kekuatan sejati pembelajaran. Namun fitur dari metode filter pada sebagian besar kasus tidak akan menyebabkan overfitting.
Sejauh ini Anda telah mempelajari pentingnya seleksi fitur, memahami perbedaannya dengan reduksi dimensi. Anda juga membahas berbagai jenis metode seleksi fitur. Sejauh ini, bagus!
Sekarang, mari lihat beberapa jebakan yang mungkin Anda temui saat melakukan seleksi fitur:
Pertimbangan Penting
Anda mungkin sudah memahami nilai seleksi fitur dalam pipeline machine learning dan manfaat yang diberikannya jika diintegrasikan. Namun sangat penting untuk memahami di mana tepatnya Anda harus mengintegrasikan seleksi fitur dalam pipeline Anda.
Sederhananya, Anda harus menyertakan langkah seleksi fitur sebelum memberikan data ke model untuk pelatihan, terutama ketika Anda menggunakan metode estimasi akurasi seperti cross-validation. Ini memastikan bahwa seleksi fitur dilakukan pada lipatan data tepat sebelum model dilatih. Namun jika Anda melakukan seleksi fitur terlebih dahulu untuk menyiapkan data, lalu melakukan pemilihan dan pelatihan model pada fitur yang dipilih, maka itu akan menjadi kesalahan besar.
Jika Anda melakukan seleksi fitur pada seluruh data lalu melakukan cross-validation, maka data uji pada setiap lipatan prosedur cross-validation juga telah digunakan untuk memilih fitur, dan ini cenderung menimbulkan bias pada kinerja model machine learning Anda.
Cukup teori! Sekarang langsung ke pengodean.
Studi Kasus di Python
Untuk studi kasus ini, Anda akan menggunakan dataset Pima Indians Diabetes. Deskripsi dataset dapat ditemukan di sini.
Dataset ini terkait tugas klasifikasi di mana Anda perlu memprediksi apakah seseorang menderita diabetes berdasarkan 8 fitur.
Terjadi total 768 observasi dalam dataset. Tugas pertama Anda adalah memuat dataset sehingga bisa lanjut. Namun sebelum itu, mari impor dependensi yang diperlukan. Anda bisa mengimpor yang lain sambil berjalan.
import pandas as pd
import numpy as np
Sekarang setelah dependensi diimpor, mari muat dataset Pima Indians ke dalam objek DataFrame dengan bantuan pustaka Pandas.
data = pd.read_csv("diabetes.csv")
Dataset berhasil dimuat ke objek DataFrame data. Sekarang, mari lihat datanya.
data.head()

Jadi Anda dapat melihat 8 fitur berbeda yang dilabelkan ke luaran 1 dan 0, di mana 1 berarti observasi tersebut menderita diabetes, dan 0 berarti tidak menderita diabetes. Dataset ini diketahui memiliki nilai hilang. Secara khusus, ada observasi yang hilang untuk beberapa kolom yang ditandai sebagai nilai nol. Anda dapat menyimpulkan ini dari definisi kolom-kolom tersebut, dan tidak masuk akal memiliki nilai nol untuk ukuran-ukuran tersebut, misalnya nol untuk body mass index atau tekanan darah adalah tidak valid.
Namun untuk tutorial ini, Anda akan langsung menggunakan versi praproses dari dataset.
# load data
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pd.read_csv(url, names=names)
Anda kini memuat data ke objek DataFrame bernama dataframe.
Mari konversi objek DataFrame menjadi array NumPy untuk komputasi yang lebih cepat. Juga, mari pisahkan data ke dalam variabel terpisah agar fitur dan label terpisah.
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
Hebat! Anda telah menyiapkan data Anda.
Pertama, Anda akan mengimplementasikan uji statistik Chi-Squared untuk fitur non-negatif guna memilih 4 fitur terbaik dari dataset. Anda sudah melihat uji Chi-Squared termasuk kelas metode filter. Jika ada yang penasaran ingin mengetahui internal Chi-Squared, video ini menjelaskannya dengan sangat baik.
Pustaka scikit-learn menyediakan kelas SelectKBest yang dapat digunakan dengan serangkaian uji statistik berbeda untuk memilih sejumlah fitur tertentu, dalam kasus ini Chi-Squared.
# Import the necessary libraries first
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
Anda telah mengimpor pustaka untuk menjalankan eksperimen. Sekarang, mari lihat aksinya.
# Feature extraction
test = SelectKBest(score_func=chi2, k=4)
fit = test.fit(X, Y)
# Summarize scores
np.set_printoptions(precision=3)
print(fit.scores_)
features = fit.transform(X)
# Summarize selected features
print(features[0:5,:])
[ 111.52 1411.887 17.605 53.108 2175.565 127.669 5.393 181.304]
[[148. 0. 33.6 50. ]
[ 85. 0. 26.6 31. ]
[183. 0. 23.3 32. ]
[ 89. 94. 28.1 21. ]
[137. 168. 43.1 33. ]]
Interpretasi:
Anda dapat melihat skor untuk setiap atribut dan 4 atribut yang dipilih (dengan skor tertinggi): plas, test, mass, dan age. Skor ini akan membantu Anda lebih lanjut dalam menentukan fitur terbaik untuk melatih model.
Catatan: Baris pertama menunjukkan nama fitur. Untuk prapemrosesan dataset, nama telah dikodekan secara numerik.
Berikutnya, Anda akan mengimplementasikan Recursive Feature Elimination yang merupakan jenis metode seleksi fitur wrapper.
Recursive Feature Elimination (atau RFE) bekerja dengan secara rekursif menghapus atribut dan membangun model pada atribut yang tersisa.
Ia menggunakan akurasi model untuk mengidentifikasi atribut mana (dan kombinasi atribut) yang paling berkontribusi dalam memprediksi atribut target.
Anda dapat mempelajari lebih lanjut tentang kelas RFE di dokumentasi scikit-learn.
# Import your necessary dependencies
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
Anda akan menggunakan RFE dengan pengklasifikasi Logistic Regression untuk memilih 3 fitur teratas. Pemilihan algoritma tidak terlalu penting selama cukup andal dan konsisten.
# Feature extraction
model = LogisticRegression()
rfe = RFE(model, 3)
fit = rfe.fit(X, Y)
print("Num Features: %s" % (fit.n_features_))
print("Selected Features: %s" % (fit.support_))
print("Feature Ranking: %s" % (fit.ranking_))
Num Features: 3
Selected Features: [ True False False False False True True False]
Feature Ranking: [1 2 3 5 6 1 1 4]
Anda dapat melihat bahwa RFE memilih 3 fitur teratas yaitu preg, mass, dan pedi.
Fitur-fitur ini ditandai True dalam array support dan ditandai dengan pilihan “1” dalam array ranking. Ini, pada gilirannya, menunjukkan kekuatan fitur-fitur tersebut.
Berikutnya Anda akan menggunakan Ridge regression yang pada dasarnya merupakan teknik regularisasi dan juga teknik seleksi fitur embedded.
Artikel ini memberikan penjelasan yang sangat baik tentang regresi Ridge. Pastikan untuk membacanya.
# First things first
from sklearn.linear_model import Ridge
Selanjutnya, Anda akan menggunakan regresi Ridge untuk menentukan koefisien R2.
Juga, lihat dokumentasi resmi scikit-learn tentang regresi Ridge.
ridge = Ridge(alpha=1.0)
ridge.fit(X,Y)
Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,
normalize=False, random_state=None, solver='auto', tol=0.001)
Untuk lebih memahami hasil regresi Ridge, Anda akan mengimplementasikan sedikit fungsi pembantu yang akan membantu Anda mencetak hasil dengan lebih baik sehingga mudah diinterpretasikan.
# A helper method for pretty-printing the coefficients
def pretty_print_coefs(coefs, names = None, sort = False):
if names == None:
names = ["X%s" % x for x in range(len(coefs))]
lst = zip(coefs, names)
if sort:
lst = sorted(lst, key = lambda x:-np.abs(x[0]))
return " + ".join("%s * %s" % (round(coef, 3), name)
for coef, name in lst)
Berikutnya, Anda akan memasukkan suku koefisien model Ridge ke fungsi kecil ini dan melihat hasilnya.
print ("Ridge model:", pretty_print_coefs(ridge.coef_))
Ridge model: 0.021 * X0 + 0.006 * X1 + -0.002 * X2 + 0.0 * X3 + -0.0 * X4 + 0.013 * X5 + 0.145 * X6 + 0.003 * X7
Anda dapat melihat semua suku koefisien yang dipasangkan dengan variabel fitur. Ini kembali membantu Anda memilih fitur yang paling esensial. Berikut beberapa poin yang perlu diingat saat menerapkan regresi Ridge:
- Juga dikenal sebagai L2-Regularization.
- Untuk fitur yang berkorelasi, artinya mereka cenderung mendapatkan koefisien yang serupa.
- Fitur yang memiliki koefisien negatif tidak terlalu berkontribusi. Namun dalam skenario yang lebih kompleks dengan banyak fitur, skor ini pasti akan membantu Anda dalam proses pengambilan keputusan seleksi fitur.
Nah, bagian studi kasus selesai. Metode yang Anda implementasikan di atas akan membantu Anda memahami fitur dari suatu dataset secara komprehensif. Berikut beberapa poin penting tentang teknik-teknik ini:
- Seleksi fitur pada dasarnya adalah bagian dari prapemrosesan data yang dianggap sebagai bagian paling memakan waktu dari setiap pipeline machine learning.
- Teknik-teknik ini akan membantu Anda mendekatinya secara lebih sistematis dan ramah machine learning. Anda akan dapat menginterpretasikan fitur dengan lebih akurat.
Penutup!
Pada tulisan ini, Anda membahas salah satu topik statistik yang paling banyak dipelajari dan diteliti, yaitu seleksi fitur. Anda juga mengenal berbagai variannya dan menggunakannya untuk melihat fitur mana dalam suatu dataset yang penting.
Anda dapat melanjutkan tutorial ini dengan menggabungkan ukuran korelasi ke dalam metode wrapper dan melihat kinerjanya. Dalam prosesnya, Anda mungkin akan membuat mekanisme seleksi fitur Anda sendiri. Begitulah cara Anda membangun fondasi untuk riset kecil Anda. Para peneliti juga menggunakan berbagai prinsip soft computing untuk melakukan seleksi. Ini sendiri merupakan bidang studi dan riset yang luas. Selain itu, Anda sebaiknya mencoba algoritma seleksi fitur yang ada pada berbagai dataset dan menarik kesimpulan Anda sendiri.
Mengapa metode seleksi fitur tradisional ini masih relevan?
Ya, pertanyaan ini wajar. Karena ada arsitektur neural net (misalnya CNN) yang cukup mampu mengekstrak fitur paling signifikan dari data, tetapi itu pun memiliki keterbatasan. Menggunakan CNN untuk dataset tabular biasa yang tidak memiliki sifat khusus (sifat yang dimiliki citra pada umumnya seperti sifat translasi, tepi, sifat posisi, kontur, dll.) bukan keputusan paling bijak. Selain itu, ketika data dan sumber daya terbatas, melatih CNN pada dataset tabular biasa bisa menjadi sia-sia. Jadi, dalam situasi seperti itu, metode yang Anda pelajari pasti akan sangat berguna.
Berikut beberapa sumber jika Anda ingin menggali lebih dalam topik ini:
- Feature Selection for Knowledge Discovery and Data Mining
- Subspace, Latent Structure, and Feature Selection: Statistical and Optimization Perspectives Workshop
- Feature Selection: Problem statement and Uses
- Using genetic algorithms for feature selection in Data Analytics
Di bawah ini adalah referensi yang digunakan untuk menulis tutorial ini.
- Data Mining: Concepts and Techniques; Jiawei Han Micheline Kamber Jian Pei.
- An introduction to feature selection
- Artikel Analytics Vidhya tentang seleksi fitur
- Hierarchical and Mixed Model - kursus DataCamp
- Feature Selection For Machine Learning in Python
- Outlier Detection in Stream Data by Machine Learning and Feature Selection Methods
- S. Visalakshi dan V. Radha, "A literature review of feature selection techniques and applications: Review of feature selection in data mining," 2014 IEEE International Conference on Computational Intelligence and Computing Research, Coimbatore, 2014, hlm. 1-6.
Jangan ragu untuk menuliskan pertanyaan Anda di kolom komentar jika ada!

