Menyelesaikan sistem persamaan linear menggunakan matriks dan Python

Matriks tetap menjadi dasar dari semua matematika yang digunakan untuk ML. Mari kita pahami mengapa demikian dan bagaimana matriks dapat digunakan untuk menyelesaikan sistem persamaan linear dari perspektif 2 metode berbeda.

Sistem persamaan linear dalam ML

Tugas standar yang diselesaikan metode ML secara umum dapat diilustrasikan sebagai:

Kami menangani sekumpulan fitur, memiliki “tabel” dengan nilai fitur dan kombinasi nilai target. Kami memiliki nilai target yang ditentukan untuk subkumpulan data yang dapat kami gunakan untuk mempelajarinya. Setelah pembelajaran selesai, kami kemudian dapat menerapkan temuan kami untuk mendapatkan hasil pada kumpulan data dengan nilai target yang tidak diketahui:

Seperti yang kita ingat dari Matematika, fungsi garis dapat direpresentasikan sebagai:

Ini adalah contoh dimensi tunggal, dan untuk 2 dimensi atau lebih:

Sekarang jika kita memperlakukan x1, x2 dan seterusnya, sebagai fitur dan f sebagai nilai target, kita dapat menulis ulang kumpulan data pembelajaran awal kita ke dalam bentuk persamaan linier:

Dan sekarang pada dasarnya kita hanya perlu menuliskannya sebagai sistem persamaan linear dan menyelesaikannya:

Setelah menyelesaikannya, kita mendapatkan nilai spesifik a1, a2 … (juga disebut bobot), yang akan kita gunakan dalam fungsi linier untuk menemukan nilai target yang tidak diketahui (f) dengan nilai fitur yang diketahui (x). Dan fungsi terakhir dengan bobot yang dihitung inilah yang disebut model ML.

Catatan nyata

Seperti yang mungkin Anda sadari, ini terdengar terlalu mudah untuk menjadi bagian dari industri ML yang hebat. Faktanya, ini adalah kasus ideal. Dalam kehidupan nyata Anda tidak pernah memiliki cukup data untuk dapat membangun model ideal, itulah sebabnya Anda mendapatkan solusi tak terbatas atau tidak ada solusi sama sekali menggunakan pendekatan ini. Dalam praktiknya, hal terbaik yang dapat Anda lakukan adalah mendapatkan solusi yang mendekati solusi ideal. Namun, dalam praktiknya, hal ini lebih dari cukup dalam banyak kasus.

Para insinyur ML masih menangani sistem persamaan linier tetapi pada tingkat yang berbeda. Alih-alih menyelesaikan fungsi nilai target langsung dari persamaan fitur, kami memecahkan persamaan yang membantu kami meminimalkan apa yang disebut kesalahan (jarak antara nilai target sebenarnya dan nilai terhitung berdasarkan bobot yang diberikan). Misalnya. jika kita menggunakan MSE berdasarkan norma Euclidean:

Saya akan menulis lebih banyak tentang regresi linier dan optimasi fungsi kesalahan nanti, dan untuk saat ini mari kita lupakan saja dan kembali ke sistem persamaan dan bagaimana matriks dapat digunakan untuk menyelesaikannya.

Bentuk matriks sistem persamaan linear

Jadi bagaimana matriks berhubungan dengan sistem persamaan linier? Katakanlah kita mempunyai sistem persamaan linear berikut untuk diselesaikan:

Sekarang mari kita buat matriks bobot (angka-angka sebelum x1…3) dan dua vektor — X dan nilai target Y:

Seperti yang kita ketahui, “matriks dapat dikalikan”, oleh karena itu penulisan matriks (vektor) berikut ini sama dengan penulisan sistem persamaan linear awal kita:

Bagus, jadi sekarang kita tahu, matriks itu keren untuk mengurangi penulisan. Namun tidak hanya itu, kita juga dapat menggunakan matriks untuk mencari solusi persamaan kita.

Menemukan solusi menggunakan matriks terbalik

Aljabar linier sebenarnya memudahkan kita mencari solusi dalam bentuk matriks:

Dimana w aneh dengan -1 ini disebut matriks terbalik. Itu dapat dengan mudah ditemukan dengan Python serta vektor X setelah mengalikan matriks terbalik dengan Y:

Di sini kita menemukan w_inv menggunakan metode np.linalg.inv, dan mengalikan matriks w_inv dengan Y (yang merupakan vektor) untuk mendapatkan hasil X vektor. Skrip ini memberi kita hal berikut:

[[1.]
 [2.]
 [3.]]

Yang merupakan vektor X yang dihitung:

Metode eliminasi Gaussian

Meskipun metode sebelumnya keren, namun sulit bagi komputer, karena kompleksitas perhitungan matriks terbalik meningkat secara dramatis seiring dengan jumlah objek dan dimensi dalam matriks.

Pendekatan lain (digunakan oleh sekelompok metode) adalah mengubah matriks w ke bentuk di mana solusi persamaan menjadi sepele. Bentuk ini disebut bentuk segitiga dari suatu matriks dan metodenya sendiri disebut eliminasi Gaussian (karena kita sebenarnya menghilangkan beberapa elemen matriks).

Proses transformasi jika dilakukan dalam beberapa iterasi dan diperbolehkan sebagai berikut:

  • mengalikan baris mana pun dengan angka apa pun (kecuali nol, tentu saja),
  • tambahkan baris mana pun ke baris lainnya,
  • tukar baris mana pun.

Hal lain yang diminta oleh metode Gaussian adalah menambahkan vektor Y ke matriks w untuk mendapatkan matriks yang diperluas:

Sekarang mari kita iterasi untuk mendapatkan bentuk segitiga akhir. Pertama, mari kita tukar baris pertama dan terakhir:

Sekarang mari kita kurangi baris pertama dikalikan 4 dari baris ketiga:

Selanjutnya, kita akan menambahkan baris pertama ke baris kedua:

Bagus, kita perlu melakukan satu hal terakhir untuk mendapatkan bentuk segitiga — dapatkan 0 di mana kita punya -6. Untuk mencapai ini kita harus mengalikan baris kedua dengan 6/8 dan menambahkannya ke baris ketiga:

Ini adalah bentuk akhir matriks kita, karena kita mempunyai angka nol di bawah diagonalnya (ini adalah bentuk segitiga yang kita cari). Seperti yang kita ingat, matriks ini mewakili w untuk vektor X dan vektor Y di sisi kanan, sehingga kita dapat menulis sistem yang diperbarui berdasarkan bentuk matriks baru:

Ini adalah bentuk sistem sepele, yang mari kita lakukan iterasi dari persamaan ketiga ke persamaan pertama dengan menggunakan setiap solusi iterasi rendah pada iterasi atas:

Dengan Python scipy dapat digunakan untuk mendapatkan matriks segitiga yang dioptimalkan:

Perhatikan, bahwa scipy akan mengembalikan matriks yang berbeda dari yang kita iterasi. Ini karena scipy mengambil baris berbeda sebagai baris pertama (dibutuhkan elemen dengan nilai pertama maksimal). Namun tetap saja, solusi sistem yang menggunakan matriks ini akan sama dengan yang kita dapatkan. Jadi, terdapat berbagai bentuk segitiga dari sebuah matriks.

Ringkasan

Kita dapat menuliskan sistem persamaan linear apa pun dalam bentuk matriks. Dan dari sana kita dapat menggunakan transformasi matriks untuk mencari solusi sistem, misalnya menggunakan matriks terbalik: