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.

Bagikan artikel ini

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 AinmathbbRm×nAinmathbb{R}^{m\times n}. Sebuah matriks berada dalam bentuk eselon baris jika memenuhi tiga aturan struktural:

  1. Setiap baris tak nol berada di atas semua baris yang seluruhnya nol.
  2. Entri tak nol pertama pada setiap baris tak nol, yang disebut pivot, berada lebih ke kanan daripada pivot pada baris di atasnya.
  3. 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 11 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 f1f_1 dan f2f_2; kolom f3f_3 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.

  1. Langkah 0Matriks fitur asliMulai
    Matriks fitur asli
    Barisf₁f₂f₃
    R1123
    R2246
    R3112
  2. Langkah 1Nolkan kolom pertama di bawah pivotR₂ ← R₂ − 2R₁; R₃ ← R₃ − R₁
    Nolkan kolom pertama di bawah pivot
    Barisf₁f₂f₃
    R1123
    R2000
    R30-1-1
  3. Langkah 2Pindahkan baris nonnol ke atasR₂ ↔ R₃
    Pindahkan baris nonnol ke atas
    Barisf₁f₂f₃
    R1123
    R20-1-1
    R3000
  4. Langkah 3Normalkan pivot keduaR₂ ← −R₂
    Normalkan pivot kedua
    Barisf₁f₂f₃
    R1123
    R2011
    R3000

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:

  • f1f_1: kekuatan kecocokan retrieval;
  • f2f_2: kekuatan verifikasi; dan
  • f3f_3: sinyal gabungan yang secara tidak sengaja dicatat sebagai fitur terpisah.

Matriksnya adalah

A=[123246112].A= \begin{bmatrix} 1&2&3\\ 2&4&6\\ 1&1&2 \end{bmatrix}.

Sebelum melakukan reduksi, perhatikan bahwa kolom ketiga adalah jumlah kolom pertama dan kedua: f3=f1+f2f_3=f_1+f_2. 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:

R2←R2−2R1,R3←R3−R1,R_2\leftarrow R_2-2R_1, \qquad R_3\leftarrow R_3-R_1,

yang menghasilkan

[1230000−1−1].\begin{bmatrix} 1&2&3\\ 0&0&0\\ 0&-1&-1 \end{bmatrix}.

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 −1-1:

[1230−1−1000]⟶[123011000].\begin{bmatrix} 1&2&3\\ 0&-1&-1\\ 0&0&0 \end{bmatrix} \quad\longrightarrow\quad \boxed{ \begin{bmatrix} 1&2&3\\ 0&1&1\\ 0&0&0 \end{bmatrix}}.

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:

[123∣4246∣8112∣3].\begin{bmatrix} 1&2&3&\mid&4\\ 2&4&6&\mid&8\\ 1&1&2&\mid&3 \end{bmatrix}.

Operasi yang sama menghasilkan

[101∣2011∣1000∣0].\begin{bmatrix} 1&0&1&\mid&2\\ 0&1&1&\mid&1\\ 0&0&0&\mid&0 \end{bmatrix}.

Persamaannya sekarang adalah

θ1+θ3=2,θ2+θ3=1.\theta_1+\theta_3=2, \qquad \theta_2+\theta_3=1.

Misalkan variabel bebasnya adalah θ3=t\theta_3=t. Maka

θ1=2−t,θ2=1−t,θ3=t.\theta_1=2-t, \qquad \theta_2=1-t, \qquad \theta_3=t.

Setiap nilai tt menghasilkan vektor parameter yang memberikan ruas kanan yang sama. Misalnya, t=0t=0 menghasilkan (2,1,0)(2,1,0), sedangkan t=1t=1 menghasilkan (1,0,1)(1,0,1). 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

0θ1+0θ2+0θ3=0.0\theta_1+0\theta_2+0\theta_3=0.

Baris itu redundan, sehingga tidak memberikan kendala baru. Jangan menyamakannya dengan

0θ1+0θ2+0θ3=5,0\theta_1+0\theta_2+0\theta_3=5,

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

y^=θ1f1+θ2f2+θ3f3.\hat{y}=\theta_1f_1+\theta_2f_2+\theta_3f_3.

Ketika f3=f1+f2f_3=f_1+f_2, prediksi menjadi

y^=(θ1+θ3)f1+(θ2+θ3)f2.\hat{y}=(\theta_1+\theta_3)f_1+(\theta_2+\theta_3)f_2.

Dalam desain ini, hanya jumlah θ1+θ3\theta_1+\theta_3 dan θ2+θ3\theta_2+\theta_3 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 3.8×10163.8\times10^{16} 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 11 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 R2−2R1R_2-2R_1:

[1224]⟶[1200].\begin{bmatrix}1&2\\2&4\end{bmatrix} \longrightarrow \begin{bmatrix}1&2\\0&0\end{bmatrix}.

Ada satu pivot, jadi rank-nya adalah 11. 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 θ3=t\theta_3=t memungkinkan dua persamaan pertama menentukan θ1\theta_1 dan θ2\theta_2 dalam bentuk tt.

Pertanyaan

Tampilkan solusi langkah demi langkah

Baris tersebut menyatakan 0=50=5 atau pernyataan mustahil lainnya. Tidak ada pemberian nilai pada peubah yang dapat mengubah sisi kiri dari nol, sehingga sistemnya inkonsisten. Baris 0=00=0 berbeda: baris itu redundan dan membiarkan himpunan solusi yang ada tetap sama.

Pertanyaan

Tampilkan solusi langkah demi langkah

Pada t=1t=1, vektornya adalah (1,0,1)(1,0,1). Ketiga baris menghasilkan 1+2(0)+3(1)=41+2(0)+3(1)=4, 2(1)+4(0)+6(1)=82(1)+4(0)+6(1)=8, dan 1+0+2(1)=31+0+2(1)=3. 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.

Sumber

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. NumPy documentation: numpy.linalg.matrix_rank
  4. NumPy documentation: numpy.linalg.solve
  5. NumPy documentation: numpy.linalg.cond
  6. NumPy documentation: numpy.linalg.norm