Kursus Matematika untuk AI · Pelajaran 24 dari 180
Bentuk Eselon Baris Mengungkap Fitur AI yang Redundan
Gunakan pivot, variabel bebas, dan bentuk eselon baris untuk mendiagnosis fitur redundan serta parameter model yang tidak unik dalam matriks desain kecil.
Ketika sebuah model memiliki tiga kolom fitur, kita mudah mengira bahwa model tersebut memiliki tiga arah independen untuk dipelajari. Namun, sebuah fitur dapat ada di dalam data tanpa menambahkan informasi baru. Jika satu kolom merupakan kombinasi kolom lainnya, model mungkin menghasilkan prediksi yang sama dengan banyak vektor parameter yang berbeda.
Bentuk eselon baris membuat struktur tersembunyi itu terlihat. Setelah menyelesaikan pelajaran ini, Anda akan dapat menemukan pivot, mengidentifikasi variabel bebas, menjelaskan solusi umum, dan menggunakan implementasi NumPy kecil untuk mendiagnosis fitur redundan tanpa mengacaukan peringatan numerik dengan kesimpulan matematis.
Capaian pembelajaran: Menemukan pivot, variabel bebas, dan solusi umum.
Pelajaran 23: Eliminasi Gauss mempertahankan himpunan solusi memperkenalkan operasi baris yang sah dan menjaga solusi sistem tetap sama. Pelajaran 18: Matriks mengatur aturan linear memperkenalkan matriks koefisien. Situs pendamping Mathematics for Machine Learning resmi menempatkan pelajaran ini di Bagian 2.3 dari PDF buku saat ini. Angka, skenario fitur, kode, visual, dan penilaian dalam pelajaran ini adalah karya asli.
Tangga mencatat apa yang dapat ditentukan oleh persamaan
Mulailah dengan matriks . Sebuah matriks berada dalam bentuk eselon baris jika memenuhi tiga aturan struktural:
- Setiap baris tak nol berada di atas semua baris yang seluruhnya nol.
- Entri tak nol pertama pada setiap baris tak nol, yang disebut pivot, berada lebih ke kanan daripada pivot pada baris di atasnya.
- Setiap entri di bawah pivot bernilai nol.
Pivot membentuk tangga dari kiri ke kanan. Kolom pivot adalah arah yang dibatasi oleh baris-baris tersebut. Kolom tanpa pivot adalah arah bebas: nilainya dapat berubah sementara persamaan menentukan variabel lainnya di sekitarnya.
Bentuk eselon baris tidak sama dengan bentuk eselon baris tereduksi. Bentuk tereduksi juga mengharuskan setiap pivot bernilai dan menjadi satu-satunya entri tak nol di kolomnya. Kedua bentuk dapat mengungkap rank dan variabel bebas; bentuk tereduksi sering lebih mudah digunakan untuk membaca jawaban berparameter.
Visual di bawah mempertahankan setiap keadaan antara agar tetap terlihat. Matriks akhir memiliki dua pivot, pada kolom dan ; kolom tidak memiliki pivot.
Catatan eliminasi baris statis
Pivot membentuk tangga
Setiap keadaan menampilkan matriks lengkap. Pivot pada baris nonnol terakhir lebih ke kanan daripada pivot di baris atasnya, dan baris nol telah berpindah ke bawah.
Matriks fitur asli Baris f₁ f₂ f₃ R1 1 2 3 R2 2 4 6 R3 1 1 2 Nolkan kolom pertama di bawah pivot Baris f₁ f₂ f₃ R1 1 2 3 R2 0 0 0 R3 0 -1 -1 Pindahkan baris nonnol ke atas Baris f₁ f₂ f₃ R1 1 2 3 R2 0 -1 -1 R3 0 0 0 Normalkan pivot kedua Baris f₁ f₂ f₃ R1 1 2 3 R2 0 1 1 R3 0 0 0
Entri yang disorot adalah pivot dalam struktur akhir. Kolom f₃ tidak memiliki pivot, sehingga menjadi arah bebas yang menunjukkan fitur redundan.
Operasi baris menyingkap dua arah fitur yang independen dan satu kolom redundan. Entri yang digarisbawahi menandai posisi pivot akhir.
Contoh terperinci: kolom fitur yang redundan
Bayangkan matriks desain kecil yang merangkum tiga sinyal yang diekstrak untuk tiga contoh:
- : kekuatan kecocokan retrieval;
- : kekuatan verifikasi; dan
- : sinyal gabungan yang secara tidak sengaja dicatat sebagai fitur terpisah.
Matriksnya adalah
Sebelum melakukan reduksi, perhatikan bahwa kolom ketiga adalah jumlah kolom pertama dan kedua: . Ini merupakan intuisi yang berguna, tetapi reduksi baris memberi kita prosedur yang tetap bekerja ketika hubungannya tidak mudah terlihat melalui pemeriksaan langsung.
Pertama, gunakan entri kiri atas sebagai pivot. Nolkan entri di bawahnya:
yang menghasilkan
Baris kedua untuk sementara menjadi nol, tetapi sistem tidak kehilangan informasi: baris tak nol di bawah masih perlu dipindahkan ke atas. Tukar baris tersebut, lalu kalikan baris kedua yang baru dengan :
Pivot berada pada kolom 1 dan 2. Kolom 3 tidak memiliki pivot, sehingga menjadi kolom bebas. Matriks tersebut memiliki rank 2, bukan 3: data menyimpan tiga fitur bernama, tetapi hanya memiliki dua arah independen.
Variabel bebas menjelaskan suatu keluarga, bukan kegagalan
Untuk melihat arti pivot yang hilang, tambahkan ruas kanan yang konsisten dengan hubungan baris yang sama:
Operasi yang sama menghasilkan
Persamaannya sekarang adalah
Misalkan variabel bebasnya adalah . Maka
Setiap nilai menghasilkan vektor parameter yang memberikan ruas kanan yang sama. Misalnya, menghasilkan , sedangkan menghasilkan . Keduanya memenuhi tiga persamaan asli. Prediksi model tetap, tetapi bobot individual tidak dapat diidentifikasi hanya dari pengamatan ini.
Baris nol berbeda dari kontradiksi
Baris terakhir dalam contoh menjadi
Baris itu redundan, sehingga tidak memberikan kendala baru. Jangan menyamakannya dengan
yang mustahil. Dalam matriks augmented, baris dengan sisi kiri nol dan ruas kanan tak nol menandakan inkonsistensi dan karena itu tidak memiliki solusi. Matriks sisi kiri yang sama dapat mendukung tak hingga banyak solusi, satu solusi, atau tidak ada solusi, bergantung pada ruas kanan yang telah ditransformasikan.
Perbedaan ini penting dalam pipeline data. Baris yang berulang atau saling bergantung dapat mengurangi jumlah bukti independen tanpa membuat persamaan saling bertentangan. Sebaliknya, baris yang kontradiktif menyatakan bahwa pengamatan tidak dapat dijelaskan secara tepat oleh model linear yang diusulkan.
Menerapkan pencarian pivot dalam NumPy
Implementasi ringkas berikut menggunakan pivoting parsial. Pada setiap kolom, implementasi ini memilih kandidat dengan magnitudo terbesar di bawah baris pivot saat ini, menukarnya ke posisi tersebut, menormalisasi pivot, lalu membersihkan entri di bawahnya. Toleransi mencegah nilai yang hanya merupakan noise pembulatan diperlakukan sebagai pivot yang nyata.
import numpy as np
def row_echelon(matrix, tolerance=1e-12):
a = np.array(matrix, dtype=float, copy=True)
rows, columns = a.shape
pivot_row = 0
pivot_columns = []
for column in range(columns):
if pivot_row == rows:
break
candidate = pivot_row + np.argmax(np.abs(a[pivot_row:, column]))
if abs(a[candidate, column]) <= tolerance:
continue
a[[pivot_row, candidate]] = a[[candidate, pivot_row]]
a[pivot_row] /= a[pivot_row, column]
for row in range(pivot_row + 1, rows):
a[row] -= a[row, column] * a[pivot_row]
a[np.abs(a) <= tolerance] = 0
pivot_columns.append(column)
pivot_row += 1
return a, pivot_columns
features = np.array([
[1, 2, 3],
[2, 4, 6],
[1, 1, 2],
])
echelon, pivots = row_echelon(features)
print(echelon)
print(pivots)
print(np.linalg.matrix_rank(features))
Keluaran yang bermakna kira-kira adalah
[[1. 2. 3.]
[0. 1. 1.]
[0. 0. 0.]]
[0, 1]
2
Desimal yang tepat bergantung pada dtype dan toleransi, tetapi kesimpulan strukturalnya stabil di sini: dua kolom pivot dan satu kolom bebas. matrix_rank NumPy juga menggunakan toleransi di sekitar nilai singular, bukan menanyakan apakah nilai floating-point benar-benar sama dengan nol. Karena itu, keputusan rank harus dilaporkan bersama skala dan toleransinya, bukan sebagai kebenaran abadi tentang pengukuran yang bising.
Arti hal ini bagi model AI
Misalkan model linear menghitung
Ketika , prediksi menjadi
Dalam desain ini, hanya jumlah dan yang dapat diamati. Karena itu, vektor parameter yang berbeda dapat menghasilkan prediksi identik pada setiap baris matriks. Proses pelatihan tetap dapat mengembalikan satu set bobot karena optimizer, inisialisasi, regularizer, atau jalur numerik memilih satu titik dari keluarga tersebut. Titik yang dipilih itu bukan bukti bahwa data telah mengidentifikasi kontribusi independen setiap fitur.
Gunakan bentuk eselon baris sebagai alat diagnostik, bukan pengganti validasi. Perhitungan rank pada sampel kecil dapat berubah ketika prapemrosesan, penskalaan, penanganan nilai hilang, atau data baru berubah. Untuk matriks yang lebih besar atau bising, periksa juga skala nilai singular dan condition number. Matriks yang full-rank masih dapat hampir saling bergantung, sehingga solusinya sensitif terhadap perubahan pengukuran yang kecil.
condition = np.linalg.cond(features)
residual = np.linalg.norm(features[:, 2] - features[:, 0] - features[:, 1])
print(condition, residual)
Di sini residual tepat nol pada nilai yang tersimpan dan condition number sangat besar dalam aritmetika floating-point (sekitar pada proses ini). Matriks yang tepat rank-deficient memiliki condition number matematis tak hingga, tetapi SVD floating-point dapat melaporkan nilai hingga yang sangat besar. Kontras itu sendiri merupakan peringatan. Dalam data produksi, gunakan toleransi yang memperhitungkan skala: residual yang sangat kecil dapat berarti ketergantungan yang benar-benar hampir terjadi atau sekadar pengukuran yang berada di bawah presisi penting bagi aplikasi.
Uji pemahaman Anda
Pertanyaan
Tampilkan solusi langkah demi langkah
Bentuk eselon baris mengharuskan setiap baris tak nol berada di atas semua baris nol, setiap pivot berikutnya bergerak ke kanan, dan entri di bawah setiap pivot bernilai nol. Matriks dapat memenuhi aturan ini meskipun entri pivot bukan dan entri di atas pivot tidak nol. Syarat tambahan tersebut merupakan bagian dari bentuk eselon baris tereduksi.
Pertanyaan
Tampilkan solusi langkah demi langkah
Gunakan baris pertama sebagai pivot dan ganti baris kedua dengan :
Ada satu pivot, jadi rank-nya adalah . Baris kedua tidak memberikan kendala independen; baris tersebut mengulang baris pertama dengan skala dua kali lipat.
Pertanyaan
Tampilkan solusi langkah demi langkah
Variabel ketiga bebas karena matriks eselon akhir memiliki pivot pada kolom 1 dan 2, tetapi tidak pada kolom 3. Menetapkan memungkinkan dua persamaan pertama menentukan dan dalam bentuk .
Pertanyaan
Tampilkan solusi langkah demi langkah
Baris tersebut menyatakan atau pernyataan mustahil lainnya. Tidak ada pemberian nilai pada peubah yang dapat mengubah sisi kiri dari nol, sehingga sistemnya inkonsisten. Baris berbeda: baris itu redundan dan membiarkan himpunan solusi yang ada tetap sama.
Pertanyaan
Tampilkan solusi langkah demi langkah
Pada , vektornya adalah . Ketiga baris menghasilkan , , dan . Nilai-nilai ini tepat sama dengan ruas kanan yang dipilih, sehingga solusi berparameter tersebut benar-benar menggambarkan solusi yang valid, bukan hanya solusi dari persamaan tereduksi.
Pertanyaan
Tampilkan solusi langkah demi langkah
Data mengizinkan suatu keluarga vektor parameter dengan prediksi yang sama. Inisialisasi, jalur optimizer, regularisasi, atau preferensi numerik implisit dapat memilih satu anggota keluarga itu. Vektor yang dikembalikan merupakan pilihan yang dibuat oleh seluruh prosedur pelatihan; vektor itu tidak menunjukkan bahwa pengamatan secara unik mengidentifikasi bobot setiap fitur.
Pertanyaan
Tampilkan solusi langkah demi langkah
Periksa skala nilai singular, condition number, satuan data, ketidakpastian pengukuran, dan toleransi yang digunakan untuk keputusan rank. Nilai singular yang kecil dapat membuat solusi sangat sensitif terhadap perubahan kecil meskipun rank matematisnya full. Penskalaan ulang, pengumpulan lebih banyak pengamatan independen, penghapusan fitur redundan, atau penggunaan formulasi yang diregularisasi mungkin lebih tepat daripada mempercayai banyak digit yang tidak stabil.
Pelajaran berikutnya menggunakan struktur baris untuk menjelaskan mengapa perangkat lunak numerik biasanya menyelesaikan sistem secara langsung, bukan membentuk invers eksplisit. Pivot bukan sekadar tanda di atas kertas: pivot memberi tahu arah mana yang dibatasi data dan arah mana yang masih ambigu.