Kursus Matematika untuk AI · Pelajaran 33 dari 180

Rank Matriks Menghitung Informasi Independen dalam Fitur AI

Hitung rank matriks dari pivot atau fitur, hubungkan sudut pandang baris dan kolom, lalu gunakan nilai singular untuk menemukan fitur data yang redundan.

Bagikan artikel ini

Sebuah dataset dapat memiliki tiga kolom fitur, tetapi hanya memuat dua arah variasi yang independen. Perbedaan ini penting saat model mencoba memberikan efek terpisah kepada fitur-fitur yang selalu berubah bersama. Rank matriks menghitung arah independen di dalam matriks, baik kita memeriksa kolom fitur maupun baris sampelnya.

Setelah menyelesaikan pelajaran ini, kamu akan dapat menghitung rank matriks dengan mencari pivot, menjelaskan mengapa sudut pandang baris dan kolom menghasilkan angka yang sama, serta membaca pratinjau nilai singular tanpa menganggap setiap nilai kecil sebagai nol persis.

Hasil belajar: Menghitung rank dan menghubungkan sudut pandang baris dengan kolom.

Pelajaran ini menggabungkan gagasan bentuk eselon baris dan dimensi: pivot menunjukkan arah independen, sedangkan rank menghitungnya. Bagian 2.6.2 dari Mathematics for Machine Learning mendefinisikan rank melalui baris dan kolom yang independen secara linear. Matriks data, penafsiran fitur, grafik nilai singular, perhitungan, dan latihan dalam pelajaran ini adalah karya orisinal.

Tiga kolom dapat memuat hanya dua arah

Bayangkan empat sesi yang mencatat menit penggunaan aplikasi seluler, menit penggunaan situs web, serta total menit aktif. Setiap sesi disimpan sebagai satu baris dan setiap pengukuran sebagai satu kolom:

X=[123246011134]=[∣∣∣xmobilexwebxtotal∣∣∣]∈R4×3.X=\begin{bmatrix} 1&2&3\\ 2&4&6\\ 0&1&1\\ 1&3&4 \end{bmatrix} = \begin{bmatrix} \vert&\vert&\vert\\ \boldsymbol{x}_{\text{mobile}}& \boldsymbol{x}_{\text{web}}& \boldsymbol{x}_{\text{total}}\\ \vert&\vert&\vert \end{bmatrix} \in\mathbb{R}^{4\times3}.

Pada setiap baris, fitur ketiga dihitung dengan menjumlahkan waktu seluler dan waktu di situs web:

xtotal=xmobile+xweb.\boldsymbol{x}_{\text{total}} =\boldsymbol{x}_{\text{mobile}}+\boldsymbol{x}_{\text{web}}.

Jadi, ketiga kolom tersebut saling bergantung. Kolom total tetap berguna sebagai pengukuran bernama, tetapi tidak menambahkan arah linear baru pada matriks khusus ini. Dua kolom pertama independen: pada baris ketiga, hanya kolom situs web yang bernilai bukan nol, sehingga kelipatan bukan nol dari kolom situs web dapat disingkirkan. Lalu baris pertama menyingkirkan kelipatan bukan nol dari kolom seluler. Karena itu, dimensi ruang kolom adalah dua.

Di sini m=4m=4 sesi dan n=3n=3 fitur, jadi rank paling tinggi tiga. Kita telah menunjukkan bahwa ketiga kolom saling bergantung, sedangkan dua kolom pertama independen. Maka rank⁡(X)=2\operatorname{rank}(X)=2.

Pivot pada baris digunakan untuk menghitung rank

Saat menyelesaikan sistem persamaan linear, operasi baris juga harus diterapkan pada ruas kanan agar solusinya tetap sama. Pada matriks fitur ini, eliminasi mempertahankan rank dan memperlihatkan pivot. Pertama, ganti baris 2 dengan baris 2 dikurangi dua kali baris 1, lalu ganti baris 4 dengan baris 4 dikurangi baris 1. Berikutnya, kurangi baris 3 dari baris 4 yang baru dan pindahkan baris ketiga yang bukan nol ke posisi kedua:

[123246011134]∼[123011000000]∼[101011000000].\begin{bmatrix} 1&2&3\\ 2&4&6\\ 0&1&1\\ 1&3&4 \end{bmatrix} \sim \begin{bmatrix} 1&2&3\\ 0&1&1\\ 0&0&0\\ 0&0&0 \end{bmatrix} \sim \begin{bmatrix} 1&0&1\\ 0&1&1\\ 0&0&0\\ 0&0&0 \end{bmatrix}.

Ada dua baris bukan nol dan dua kolom pivot, jadi rank-nya dua. Kolom pertama dan kedua dari matriks asli membentuk basis ruang kolomnya; kolom ketiga tidak memiliki pivot karena merupakan jumlah dua kolom pertama.

Sudut pandang baris langsung menghasilkan hitungan yang sama. Tuliskan baris sampel sebagai r1,…,r4\boldsymbol{r}_1,\ldots,\boldsymbol{r}_4. Baris kedua sama dengan 2r12\boldsymbol{r}_1, sedangkan baris keempat sama dengan r1+r3\boldsymbol{r}_1+\boldsymbol{r}_3. Baris pertama dan ketiga independen, sehingga dimensi ruang baris juga dua. Secara umum, rank baris dan rank kolom sama untuk setiap matriks berhingga, termasuk matriks persegi panjang. Transposisi menukar kedua ruang tersebut, tetapi tidak mengubah jumlah arah independen di dalamnya.

Nilai singular memberi pratinjau arah

Untuk matriks besar atau berisik, perangkat lunak biasanya memperkirakan rank dari dekomposisi nilai singular (SVD). SVD menyatakan matriks sebagai X=UΣVTX=U\Sigma V^\mathsf{T}, dengan elemen diagonal Σ\Sigma berupa nilai singular nonnegatif yang diurutkan dari terbesar ke terkecil. Setiap nilai menunjukkan seberapa kuat matriks bekerja sepanjang sepasang arah. Nilai nol persis berarti arah tersebut tidak ada.

Untuk contoh ini, nilai singularnya kira-kira 9.8829.882, 0.5810.581, dan nol (dengan kemungkinan selisih pembulatan floating-point). Membagi semuanya dengan nilai terbesar menghasilkan pratinjau yang tidak bergantung pada skala: 1.0001.000, 0.0590.059, dan kira-kira 00. Batang ketiga menghilang karena fitur total adalah jumlah persis dari fitur lainnya. Arah kedua lebih kecil daripada yang pertama, tetapi tetap bukan nol. Rasio ini bukan persentase varians yang dijelaskan: nilai singular menunjukkan skala, sedangkan kuadratnya adalah nilai eigen dari XTXX^\mathsf{T}X. Untuk data yang telah dipusatkan, kuadrat tersebut mengikuti varians sepanjang arah terkait, dengan faktor normalisasi bersama.

Pratinjau nilai singular

Dua arah tetap ada dalam matriks fitur

Setiap batang menunjukkan nilai singular yang dibagi dengan nilai terbesar. Arah ketiga bernilai nol hingga pembulatan floating-point karena waktu total merupakan jumlah fitur lainnya.

  1. Arah pertama1.000
  2. Arah kedua0.059
  3. Arah ketiga≈ 0
Sebelum normalisasi, nilainya kira-kira 9.882, 0.581, dan 0. Arah dengan nilai kecil belum tentu merupakan arah nol; penentuan rank memerlukan aturan eksak atau numerik.

Grafik ini adalah pratinjau untuk satu matriks, bukan batas universal. NumPy matrix_rank menghitung nilai singular yang melampaui suatu toleransi. Secara default, toleransi tersebut diskalakan berdasarkan nilai singular terbesar, dimensi terbesar matriks, dan presisi floating-point tipe datanya. Cara ini menangani pembulatan pada hubungan yang eksak; toleransi berbeda mungkin lebih sesuai jika noise pengukuran lebih besar daripada galat floating-point. Rutinitas svd mengembalikan nilai singular dalam urutan menurun.

import numpy as np

X = np.array([
    [1, 2, 3],
    [2, 4, 6],
    [0, 1, 1],
    [1, 3, 4],
], dtype=float)

singular_values = np.linalg.svd(X, compute_uv=False)
rank_columns = np.linalg.matrix_rank(X)
rank_rows = np.linalg.matrix_rank(X.T)

print(X.shape)                              # (4, 3)
print(np.round(singular_values, 3))          # [9.882 0.581 0.   ]
print(rank_columns, rank_rows)               # 2 2

SVD floating-point dapat mengembalikan angka positif yang sangat kecil meskipun aritmetika eksak menghasilkan nol. Toleransi NumPy menggolongkan angka itu sebagai nol untuk estimasi rank. Tampilan 0. adalah keluaran yang telah dibulatkan, bukan klaim bahwa nilai singular yang dihitung setiap komputer selalu tepat nol hingga ke setiap bit.

Rank menunjukkan bobot model yang redundan

Model linear tanpa intersep dengan bobot w∈R3\boldsymbol{w}\in\mathbb{R}^3 memprediksi hasil empat sesi sebagai y^=Xw\hat{\boldsymbol{y}}=X\boldsymbol{w}. Misalkan bobot (wm,ww,wt)(w_m,w_w,w_t) masing-masing untuk waktu seluler, web, dan total. Karena waktu total merupakan jumlah dua fitur pertama,

Xw=(wm+wt)xmobile+(ww+wt)xweb.X\boldsymbol{w} = (w_m+w_t)\boldsymbol{x}_{\text{mobile}} + (w_w+w_t)\boldsymbol{x}_{\text{web}}.

Hanya dua bobot gabungan yang memengaruhi prediksi, meskipun model menyimpan tiga bobot. Untuk sembarang angka cc, mengganti (wm,ww,wt)(w_m,w_w,w_t) dengan (wm+c,ww+c,wt−c)(w_m+c,w_w+c,w_t-c) tidak mengubah prediksi mana pun. Pada dataset ini, rank dua berarti ketiga koefisien tidak dapat ditentukan secara unik hanya dari prediksi. Regularisasi dapat memilih satu kumpulan bobot, tetapi perhitungan rank saja tidak mengatakan fitur mana yang layak ditafsirkan secara kausal atau semantis.

Inilah penerapan AI-nya: rank mengukur keragaman fitur linear yang efektif dalam sebuah matriks data. Rank dapat mengungkap fitur turunan yang redundan sebelum fitur itu mempersulit penafsiran koefisien atau pencocokan kuadrat terkecil. Angka ini tidak mengukur seluruh informasi dalam dataset, memprediksi akurasi model, atau menangkap hubungan nonlinear. Perubahan pada baris data, definisi fitur, atau prapemrosesan dapat mengubah rank.

Ketergantungan yang nyaris terjadi perlu toleransi yang jelas

Total yang dibuat pada contoh ini merupakan jumlah yang eksak. Pengukuran nyata mungkin memenuhi x3≈x1+x2\boldsymbol{x}_3\approx\boldsymbol{x}_1+\boldsymbol{x}_2. Rank matematis eksaknya bisa tiga meskipun nilai singular terkecil sangat kecil. Rank numerik dapat menganggap arah itu dapat diabaikan jika nilainya berada di bawah toleransi yang dipilih. Laporkan toleransi dan skala data jika perbedaan ini memengaruhi keputusan.

Penskalaan fitur juga mengubah ukuran nilai singular. Mengalikan satu kolom fitur dengan konstanta bukan nol mempertahankan rank eksak, tetapi dapat mengubah rasio nilai singular yang digunakan untuk menilai rank numerik atau perkiraan. Karena itu, standardisasi bukan sekadar langkah kosmetik saat menafsirkan nilai singular kecil. Rank menjelaskan ketergantungan linear dalam matriks yang direpresentasikan dengan encoding pilihan; rank tidak memberikan takaran tetap informasi semantis untuk setiap kolom.

Jika matriks memiliki pp kolom fitur tetapi hanya rr arah independen, bentuk eselon baris menunjukkan kolom mana yang dapat menjadi basis, sementara nilai singular menunjukkan kekuatan numerik arah-arah tersebut. Langkah berikutnya adalah menanyakan ke mana matriks memetakan sesuatu dan arah input mana yang hilang: kernel dan image membuat kedua pertanyaan itu eksplisit.

Periksa pemahaman

Pertanyaan 1

Untuk matriks 5 × 3, berapa rank maksimum yang mungkin, dan apa arti rank 2 bagi kolom serta barisnya?

Tampilkan solusi langkah demi langkah

Rank maksimum adalah min⁡(5,3)=3\min(5,3)=3. Jika rank-nya dua, ruang kolom berdimensi dua. Jadi, hanya dua kolom yang dapat independen dan setidaknya satu dari tiga kolom merupakan kombinasi kolom lain. Ruang baris juga berdimensi dua, artinya hanya dua dari lima baris yang independen. Ini bukan berarti matriks hanya memiliki dua elemen atau dua catatan.

Pertanyaan 2

Pada matriks sesi, verifikasi hubungan kolom yang membuat satu fitur redundan. Dua kolom mana yang independen?

Tampilkan solusi langkah demi langkah

Baca kolom sebagai vektor: xm=(1,2,0,1)T\boldsymbol{x}_m=(1,2,0,1)^\mathsf{T}, xw=(2,4,1,3)T\boldsymbol{x}_w=(2,4,1,3)^\mathsf{T}, dan xt=(3,6,1,4)T\boldsymbol{x}_t=(3,6,1,4)^\mathsf{T}. Jika dijumlahkan per komponen, xm+xw=(3,6,1,4)T=xt\boldsymbol{x}_m+\boldsymbol{x}_w=(3,6,1,4)^\mathsf{T}=\boldsymbol{x}_t, jadi ketiganya bergantung. Dua kolom pertama independen: kombinasi axm+bxw=0a\boldsymbol{x}_m+b\boldsymbol{x}_w=\boldsymbol{0} memiliki komponen ketiga b=0b=0, lalu komponen pertama memberi a=0a=0. Keduanya merentang ruang kolom berdimensi dua.

Pertanyaan 3

Baris kedua adalah dua kali baris pertama, dan baris keempat adalah jumlah baris pertama dan ketiga. Mengapa ini menghasilkan rank baris 2?

Tampilkan solusi langkah demi langkah

Kedua persamaan itu menunjukkan bahwa baris kedua dan keempat tidak menambahkan arah baru. Baris pertama dan ketiga independen: jika ar1+br3=0a\boldsymbol{r}_1+b\boldsymbol{r}_3=0, komponen pertama memberi a=0a=0, lalu komponen kedua memberi b=0b=0. Jadi, dua baris independen membentuk basis ruang baris yang berdimensi dua.

Pertanyaan 4

Setelah reduksi baris, sebuah matriks memiliki tiga baris bukan nol dan kolom pivot 1, 2, dan 4. Berapa rank-nya, dan kolom asli mana yang membentuk basis ruang kolom?

Tampilkan solusi langkah demi langkah

Jumlah pivot adalah tiga, jadi rank-nya tiga. Untuk membentuk basis ruang kolom asli, ambil kolom 1, 2, dan 4 dari matriks asli, bukan dari matriks yang telah direduksi. Operasi baris mengungkap kolom asli mana yang independen, tetapi operasi tersebut dapat mengubah kolom-kolomnya.

Pertanyaan 5

Mengapa <code>np.linalg.svd</code> dapat mengembalikan nilai singular ketiga yang positif tetapi sangat kecil untuk hubungan fitur eksak dalam pelajaran ini, sedangkan <code>np.linalg.matrix_rank</code> mengembalikan 2?

Tampilkan solusi langkah demi langkah

Aritmetika floating-point membulatkan perhitungan antara, sehingga SVD mungkin tidak menghasilkan nol hingga ke setiap bit meskipun kolom input tersimpan dalam keadaan bergantung secara eksak. matrix_rank membandingkan nilai singular dengan suatu toleransi; nilai yang sangat kecil berada di bawah ambang default NumPy dan dihitung sebagai nol. Estimasi ini bersifat numerik serta bergantung pada toleransi dan tipe data.

Pertanyaan 6

Tunjukkan mengapa ada tak terhingga banyak tripel koefisien yang menghasilkan prediksi sama saat waktu total sama dengan waktu seluler ditambah waktu web.

Tampilkan solusi langkah demi langkah

Vektor prediksi adalah wmxm+wwxw+wt(xm+xw)w_m\boldsymbol{x}_m+w_w\boldsymbol{x}_w+w_t(\boldsymbol{x}_m+\boldsymbol{x}_w), yang menyederhana menjadi (wm+wt)xm+(ww+wt)xw(w_m+w_t)\boldsymbol{x}_m+(w_w+w_t)\boldsymbol{x}_w. Untuk sembarang cc, penggantian menjadi (wm+c,ww+c,wt−c)(w_m+c,w_w+c,w_t-c) mempertahankan kedua bobot gabungan: (wm+c)+(wt−c)=wm+wt(w_m+c)+(w_t-c)=w_m+w_t dan hal yang sama berlaku untuk web. Karena itu prediksi tidak berubah, dan tiga bobot awal tidak dapat ditentukan secara unik dari prediksi tersebut.

Pertanyaan 7

Sebuah matriks memiliki nilai singular 8, 0.4, dan 0.001. Apakah itu membuktikan rank eksaknya 2? Informasi tambahan apa yang membantu menentukan rank numerik?

Tampilkan solusi langkah demi langkah

Tidak. Ketiga nilai singular positif, sehingga jika nilai tersebut eksak, rank eksaknya tiga. Nilai ketiga yang kecil mungkin dianggap dapat diabaikan untuk rank perkiraan atau numerik, tetapi keputusan itu memerlukan toleransi yang terkait dengan skala matriks, presisi floating-point, noise pengukuran, dan tugas selanjutnya. Rasionya saja tidak menetapkan ambang universal.

Pertanyaan 8

Jika dua fitur tepat sebanding dalam matriks pelatihan, apakah rank saja dapat memastikan salah satunya tidak berguna untuk setiap prediksi di masa depan? Jelaskan batas kesimpulannya.

Tampilkan solusi langkah demi langkah

Rank menjelaskan ketergantungan linear di antara kolom fitur dalam matriks yang dianalisis. Kesebandingan itu mungkin berasal dari rumus yang juga berlaku untuk catatan mendatang, sehingga satu kolom tidak menambahkan arah linear baru. Namun, bisa juga hubungan itu hanya kebetulan pada sampel yang sempit dan tidak berlaku untuk data baru. Rank saja tidak menentukan kasus mana yang terjadi dan tidak menjelaskan kegunaan nonlinear atau akurasi prediksi.

Sumber

  1. Mathematics for Machine Learning book PDF
  2. NumPy documentation: numpy.linalg.matrix_rank
  3. NumPy documentation: numpy.linalg.svd