Menu
CoddyTech

Regularisasi

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 34 dari 58.

Model linear yang overfit mengandalkan bobot besar agar dapat menyesuaikan diri dengan setiap baris yang penuh noise. Regresi Ridge mengenakan penalti untuk bobot besar, dan alpha menentukan besarnya penalti.

Berikut 20 gitar bekas, dengan enam fitur berskala yang memprediksi harga:

Enam garis, masing-masing menunjukkan bobot untuk fitur gitar, terhadap alpha dari 0.01 hingga 1000. Kondisi dimulai pada 116, merek pada 104, usia pada minus 83; semuanya menyusut menuju 0 saat alpha meningkat

Ini hanya perlu satu penggantian dari LinearRegression, yang bobotnya adalah [-83. 116. 104. 27. 17. 15.]:

from sklearn.linear_model import Ridge

ridge = Ridge(alpha=100)
ridge.fit(X_train, y_train)
print(np.round(ridge.coef_))

Ini mencetak:

[-14.  18.  16.  10.   5.   8.]

Alpha lebih besar, bobot lebih kecil, overfitting lebih sedikit. Jika terlalu besar, model mengalami underfitting.

challenge icon

Tantangan

Sedang

Sebuah situs liburan memprediksi harga pondok per malam berdasarkan 8 fitur, hanya dengan menggunakan 16 pondok. Program membaca alpha; kode awal membagi dan menstandarkan data.

  1. Latih model LinearRegression dan Ridge dengan alpha tersebut.
  2. Cetak total ukuran bobot setiap model: jumlah bobot tanpa tanda, lalu bulatkan.
  3. Cetak nilai R kuadrat untuk setiap model pada data uji (3 desimal) dan model yang lebih baik, seperti di bawah ini.

Untuk wilayah lain dan 5:

Total weight size: plain 90, ridge 53
Test R squared: plain -0.471, ridge 0.642
Better on new cottages: ridge

Coba sendiri

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import r2_score

alpha = float(input())

# Jangan ubah baris-baris di bawah ini: 28 pondok liburan, 8 fitur, dan harga per malam dalam euro
cottages = pd.read_csv("cottages.csv")
features = ["size_m2", "bedrooms", "lake_m", "age_years", "town_km", "sauna", "road_noise_db", "forest_m"]
X = cottages[features]
y = cottages["price"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online