Rekayasa dan seleksi fitur

Machine Learning Ujung ke Ujung

Joshua Stapleton

Machine Learning Engineer

Rekayasa fitur

Membuat fitur

  • Menyederhanakan masalah
  • Meningkatkan efisiensi model

Teknik

  • Ubah fitur yang sudah ada
  • Rancang fitur baru

Manfaat

  • Lebih mudah diterapkan, dirawat, dilatih
  • Peningkatan interpretabilitas

Tahap siklus pembelajaran mesin saat ini: rekayasa fitur

Machine Learning Ujung ke Ujung

Normalisasi

  • Menskalakan fitur numerik ke [0, 1]
  • Berguna saat fitur memiliki skala/jangkauan berbeda
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import Normalizer

# Bagi data
X_train, X_test = train_test_split(df, test_size=0.2, random_state=42)
# Buat objek normalizer, fit pada data latih, normalisasi, lalu transform data uji
norm = Normalizer()
X_train_norm = norm.fit_transform(X_train)
X_test_norm = norm.transform(X_test)
Machine Learning Ujung ke Ujung

Standarisasi

  • Menskalakan data agar mean = 0, varians = 1
  • Bermanfaat untuk algoritme yang mengasumsikan mean dan varians serupa
from sklearn.preprocessing import StandardScaler

# Bagi data
X_train, X_test = train_test_split(df, test_size=0.2, random_state=42)
# Buat objek scaler dan fit data latih untuk standarisasi
sc = StandardScaler()
X_train_stzd = sc.fit_transform(X_train)
# Hanya transform data uji
X_test_stzd = sc.transform(X_test)
Machine Learning Ujung ke Ujung

Apa yang membuat fitur bagus?

  • Gunakan fitur yang relevan
  • Cuaca pada hari janji temu pasien tidak berpengaruh pada diagnosis

 

Gambar cuaca badai yang menunjukkan prinsip relevansi fitur dalam seleksi fitur

  • Gunakan fitur yang tidak mirip (ortogonal)
  • Dua fitur usia dalam bulan dan usia dalam tahun tidak membantu

 

Diagram yang menunjukkan prinsip ortogonalitas dalam seleksi fitur

Machine Learning Ujung ke Ujung

sklearn.feature_selection

 

from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
from sklearn.model_selection import train_test_split

# Membagi data menjadi train dan test terlebih dahulu untuk menghindari kebocoran data X_train, X_test, y_train, y_test = train_test_split( heart_disease_df_X, heart_disease_df_y, test_size=0.2, random_state=42)
Machine Learning Ujung ke Ujung

sklearn.feature_selection (lanj.)

 

# Definisikan dan latih model random forest
rf = RandomForestClassifier(n_jobs=-1, class_weight='balanced', max_depth=5)
rf.fit(X_train, y_train)

# Definisikan dan jalankan seleksi fitur model = SelectFromModel(rf, prefit=True) features_bool = model.get_support() features = heart_disease_df.columns[features_bool]
Machine Learning Ujung ke Ujung

Ayo berlatih!

Machine Learning Ujung ke Ujung

Preparing Video For Download...