Kami membawa persamaan regresi linier ke dalam bentuk matriks



Tujuan artikel ini adalah untuk memberikan dukungan kepada ahli data pemula. Pada artikel sebelumnya, kami menguji tiga metode untuk menyelesaikan persamaan regresi linier: solusi analitis, gradient descent, stochastic gradient descent. Kemudian untuk solusi analitis kami menerapkan formula XTX vecw=XT vecy . Dalam artikel ini, sebagai berikut dari judul, kami akan membenarkan penggunaan formula ini, atau dengan kata lain, kami akan mendapatkannya secara mandiri.

Mengapa masuk akal untuk memberi perhatian lebih pada formula XTX vecw=XT vecy ?

Ini adalah persamaan matriks yang dalam banyak kasus, kenalan dengan regresi linier dimulai. Pada saat yang sama, kalkulasi terperinci tentang bagaimana formula itu diturunkan jarang terjadi.

Misalnya, di kursus pembelajaran mesin Yandex, ketika siswa diperkenalkan dengan regularisasi, mereka menyarankan menggunakan fungsi dari perpustakaan sklearn , sementara tidak ada kata yang disebutkan tentang representasi matriks dari algoritma. Pada saat inilah beberapa pendengar mungkin ingin memahami masalah ini secara lebih rinci - menulis kode tanpa menggunakan fungsi yang sudah jadi. Dan untuk ini, pertama-tama kita harus menyajikan persamaan dengan regulator dalam bentuk matriks. Artikel ini akan memungkinkan mereka yang ingin menguasai keterampilan seperti itu. Mari kita mulai.

Baseline


Target


Kami memiliki sejumlah nilai target. Misalnya, target mungkin harga aset: minyak, emas, gandum, dolar, dll. Pada saat yang sama, dengan sejumlah nilai indikator target yang kami maksud adalah jumlah pengamatan. Pengamatan seperti itu mungkin, misalnya, harga minyak bulanan untuk tahun ini, yaitu, kita akan memiliki 12 nilai target. Kami mulai memperkenalkan notasi. Kami menetapkan setiap nilai target sebagai yi . Total yang kita miliki n pengamatan, yang berarti kita bisa membayangkan pengamatan kita sebagai y1,y2,y3...yn .

Regresi


Kami berasumsi bahwa ada beberapa faktor yang sampai batas tertentu menjelaskan nilai-nilai indikator target. Sebagai contoh, nilai tukar pasangan dolar / rubel sangat dipengaruhi oleh harga minyak, nilai Fed, dll. Faktor-faktor semacam itu disebut sebagai regressor. Pada saat yang sama, setiap nilai indikator target harus sesuai dengan nilai regressor, yaitu, jika kita memiliki 12 target untuk setiap bulan pada 2018, maka kita juga harus memiliki 12 regressor untuk periode yang sama. Nyatakan nilai masing-masing regresi oleh xi:x1,x2,x3...xn . Biarkan dalam kasus kami ada k regressors (yaitu k faktor-faktor yang mempengaruhi nilai target). Jadi regressor kami dapat direpresentasikan sebagai berikut: untuk regressor pertama (misalnya, harga minyak): x11,x12,x13...x1n , untuk regressor ke-2 (misalnya, suku bunga Fed): x21,x22,x23...x2n untuk k "regressor: xk1,xk2,xk3...xkn

Ketergantungan target pada regressor


Asumsikan Ketergantungan Target yi dari regressor " i -th "observasi dapat diekspresikan melalui persamaan regresi linear dari bentuk:

f(w,xi)=w0+w1x1i+...+wkxki



dimana xi - " i nilai regressor dari 1 ke n ,

k - jumlah regresi dari 1 hingga k

w - koefisien sudut yang mewakili jumlah dimana indikator target yang dihitung akan berubah rata-rata ketika regressor berubah.

Dengan kata lain, kami untuk semua orang (kecuali w0 ) dari regressor kita menentukan koefisien "kita" w , lalu gandakan koefisien dengan nilai-nilai dari regressor " i -th "observasi, sebagai hasilnya kita mendapatkan perkiraan tertentu" i "target.

Oleh karena itu, kita perlu memilih koefisien tersebut w dimana nilai-nilai fungsi aproksimasi kami f(w,xi) akan ditempatkan sedekat mungkin dengan nilai target.

Estimasi kualitas fungsi aproksimasi


Kami akan menentukan estimasi kualitas fungsi aproksimasi dengan metode kuadrat terkecil. Fungsi penilaian kualitas dalam kasus ini akan mengambil bentuk berikut:

Err= jumlah limitni=1(yiโˆ’f(xi))2 rightarrowmin



Kita perlu memilih nilai koefisien seperti $ w $ untuk mana nilainya Err akan menjadi yang terkecil.

Kami menerjemahkan persamaan ke dalam bentuk matriks


Tampilan vektor


Pertama, untuk membuat hidup Anda lebih mudah, Anda harus memperhatikan persamaan regresi linier dan perhatikan bahwa koefisien pertama w0 tidak dikalikan dengan setiap regressor. Selain itu, ketika kita menerjemahkan data ke dalam bentuk matriks, keadaan di atas akan sangat menyulitkan perhitungan. Dalam hal ini, diusulkan untuk memperkenalkan regressor lain untuk koefisien pertama w0 dan samakan dengan satu. Atau lebih tepatnya, masing-masing " i "nilai" dari regresi ini menyamakan dengan kesatuan - karena ketika dikalikan dengan kesatuan, tidak ada yang akan berubah dalam hal hasil perhitungan, dan dari sudut pandang aturan untuk produk matriks, siksaan kita akan berkurang secara signifikan.

Sekarang, untuk sementara, untuk menyederhanakan materi, misalkan kita hanya punya satu " i "observasi. Lalu, bayangkan nilai-nilai dari para regresor" i Pengamatan th sebagai vektor  vecxi . Vektor  vecxi memiliki dimensi (k kali1) itu adalah k baris dan 1 kolom:

 vecxi= beginpmatrixx0ix1i...xki endpmatrix qquad



Koefisien yang diinginkan dapat direpresentasikan sebagai vektor  vecw berdimensi (k kali1) :

 vecw= beginpmatrixw0w1...wk endpmatrix qquad



Persamaan regresi linier untuk " i -th "observasi akan mengambil bentuk:

f(w,xi)= vecxiT vecw



Fungsi penilaian kualitas model linier akan berbentuk:

Err= jumlah limitni=1(yiโˆ’ vecxiT vecw)2 rightarrowmin



Perhatikan bahwa sesuai dengan aturan perkalian matriks, kami perlu mengubah vektor  vecxi .

Representasi matriks


Sebagai hasil dari penggandaan vektor, kita mendapatkan nomor: (1 kalik) centerdot(k kali1)=1 kali1 seperti yang diharapkan. Angka ini adalah perkiraan " i -th "target. Tapi kita perlu memperkirakan tidak satu nilai dari target, tetapi semua. Untuk melakukan ini, kita menulis semuanya" i matriks regresi X . Matriks yang dihasilkan memiliki dimensi (n kalik) :

$$ menampilkan $$ X = \ mulai {pmatrix} x_ {00} & x_ {01} & ... & x_ {0k} \\ x_ {10} & x_ {11} & ... & x_ {1k} \\ ... & ... & ... & ... \\ x_ {n0} & x_ {n1} & ... & x_ {nk} \ end {pmatrix} \ qquad $$ menampilkan $$ $$



Sekarang persamaan regresi linier akan berbentuk:

f(w,X)=X vecw



Nyatakan nilai-nilai indikator target (semua yi ) per vektor  vecy dimensi (n kali1) :

 vecy= beginpmatrixy0y1...yn endpmatrix qquad



Sekarang kita dapat menulis dalam format matriks persamaan untuk menilai kualitas model linier:

Err=(X vecwโˆ’ vecy)2 rightarrowmin



Sebenarnya, dari formula ini kita selanjutnya mendapatkan formula yang kita kenal XTXw=XTy

Bagaimana ini dilakukan? Kurung dibuka, diferensiasi dilakukan, ekspresi yang dihasilkan diubah, dll., Dan itulah yang akan kita lakukan sekarang.

Transformasi matriks


Perluas kurung


(X vecwโˆ’ vecy)2=(X vecwโˆ’ vecy)T(X vecwโˆ’ vecy)

=(X vecw)TX vecwโˆ’ vecyTX vecwโˆ’(X vecw)T vecy+ vecyT vecy

Siapkan persamaan untuk diferensiasi


Untuk melakukan ini, kami melakukan beberapa transformasi. Dalam perhitungan selanjutnya, akan lebih nyaman bagi kita jika vektor  vecwT akan disajikan pada awal setiap pekerjaan dalam persamaan.

Konversi 1


 vecyTX vecw=(X vecw)T vecy= vecwTXT vecy

Bagaimana ini bisa terjadi? Untuk menjawab pertanyaan ini, lihat saja ukuran dari matriks yang dikalikan dan lihat bahwa pada output kita mendapatkan angka atau sebaliknya const .

Kami menulis dimensi dari ekspresi matriks.

 vecyTX vecw:(1 kalin) centerdot(n kalik) centerdot(k kali1)=(1 kali1)=const

(X vecw)T vecy:((n kalik) centerdot(k kali1))T centerdot(n kali1)=(1 kalin) centerdot(n kali1)=(1 kali1)=const

 vecwTXT vecy:(1 kalik) centerdot(k kalin) centerdot(n kali1)=(1 kali1)=const

Konversi 2


(X vecw)TX vecw= vecwTXTX vecw

Kami menulis mirip dengan transformasi 1

(X vecw)TX vecw:((n kalik) centerdot(k kali1))T centerdot(n kalik) centerdot(k kali1)=(1 kali1)=const

 vecwTXTX vecw:(1 kalik) centerdot(k kalin) centerdot(n kalik) centerdot(k kali1)=(1 kali1)=const

Pada output, kita mendapatkan persamaan yang harus kita bedakan:
Err= vecwTXTX vecwโˆ’2 vecwTXT vecy+ vecyT vecy

Kami membedakan fungsi menilai kualitas model


Bedakan dengan vektor  vecw :

 fracd( vecwTXTX vecwโˆ’2 vecwTXT vecy+ vecyT vecy)d vecw


(\ vec {w} ^ TX ^ TX \ vec {w}) '- (2 \ vec {w} ^ TX ^ T \ vec {y})' + (\ vec {y} ^ T \ vec {y} }) '= 0

2XTX vecwโˆ’2XT vecy+0=0

XTX vecw=XT vecy

Pertanyaan mengapa ( vecyT vecy)โ€ฒ=0 seharusnya tidak, tetapi operasi untuk menentukan turunannya dalam dua ekspresi lainnya, kami akan menganalisis secara lebih rinci.

Diferensiasi 1


Kami mengungkapkan perbedaan:  fracd( vecwTXTX vecw)d vecw=2XTX vecw

Untuk menentukan turunan dari matriks atau vektor, Anda perlu melihat apa yang ada di dalamnya. Kami melihat:

$ inline $ \ vec {w} ^ T = \ begin {pmatrix} w_0 & w_1 & ... & w_k \ end {pmatrix} \ qquad $ inline $

 vecw= beginpmatrixw0w1...wk endpmatrix qquad

$ sebaris $ X ^ T = \ begin {pmatrix} x_ {00} & x_ {10} & ... & x_ {n0} \\ x_ {01} & x_ {11} & ... & x_ {n1} \\ ... & ... & ... & ... \\ x_ {0k} & x_ {1k} & ... & x_ {nk} \ end {pmatrix} \ qquad $ inline $ $ $ inline $ X = \ begin {pmatrix} x_ {00} & x_ {01} & ... & x_ {0k} \\ x_ {10} & x_ {11} & ... & x_ {1k} \\ ... & ... & ... & ... \\ x_ {n0} & x_ {n1} & ... & x_ {nk} \ end {pmatrix} \ qquad $ inline $

Nyatakan produk matriks XTX melalui matriks A . Matriks A persegi dan terlebih lagi, itu simetris. Properti ini akan berguna bagi kita lebih jauh, ingatlah. Matriks A memiliki dimensi (k kalik) :

$ inline $ A = \ begin {pmatrix} a_ {00} & a_ {01} & ... & a_ {0k} \\ a_ {10} & a_ {11} & ... & a_ {1k} \\ ... & ... & ... & ... \\ a_ {k0} & a_ {k1} & ... & a_ {kk} \ end {pmatrix} \ qquad $ inline $ $

Sekarang tugas kita adalah dengan benar mengalikan vektor dengan matriks dan tidak mendapatkan "dua kali lima", jadi kita akan fokus dan sangat hati-hati.

$ sebaris $ \ vec {w} ^ TA \ vec {w} = \ begin {pmatrix} w_0 & w_1 & ... & w_k \ end {pmatrix} \ qquad \ kali \ mulai {pmatrix} a_ {00} & a_ {01} & ... & a_ {0k} \\ a_ {10} & a_ {11} & ... & a_ {1k} \\ ... & ... & ... & ... \ \ a_ {k0} & a_ {k1} & ... & a_ {kk} \ end {pmatrix} \ qquad \ kali \ mulai {pmatrix} w_0 \\ w_1 \\ ... \\ w_k \ end {pmatrix} \ qquad = $ inline $

$ sebaris $ = \ mulai {pmatrix} w_0a_ {00} + w_1a_ {10} + ... + w_ka_ {k0} & ... & w_0a_ {0k} + w_1a_ {1k} + ... + w_ka_ {kk} \ end {pmatrix} \ kali \ begin {pmatrix} w_0 \\ w_1 \\ ... \\ w_k \ end {pmatrix} \ qquad = $ inline $

= mulaipmatrix(w0a00+w1a10+...+wkak0)w0 mkern10mu+ mkern10mu... mkern10mu+ mkern10mu(w0a0k+w1a1k+...+wkakk)wk endpmatrix=

=w20a00+w1a10w0+wkak0w0 mkern10mu+ mkern10mu... mkern10mu+ mkern10muw0a0kwk+w1a1kwk+...+w2kakk

Namun, kami mendapat ekspresi yang rumit! Bahkan, kami mendapat nomor - skalar. Dan sekarang, sudah benar-benar, kita lolos ke diferensiasi. Adalah perlu untuk menemukan turunan dari ekspresi yang diperoleh untuk setiap koefisien w0w1...wk dan dapatkan vektor dimensi di output (k kali1) . Untuk berjaga-jaga, saya akan menjelaskan prosedur untuk tindakan:

1) dibedakan dengan wo kami mendapatkan: 2w0a00+w1a10+w2a20+...+wkak0+a01w1+a02w2+...+a0kwk

2) dibedakan dengan w1 kami mendapatkan: w0a01+2w1a11+w2a21+...+wkak1+a10w0+a12w2+...+a1kwk

3) dibedakan dengan wk kami mendapatkan: w0a0k+w1a1k+w2a2k+...+w(kโˆ’1)a(kโˆ’1)k+ak0w0+ak1w1+ak2w2+...+2wkakk

Pada output, vektor ukuran yang dijanjikan (k kali1) :

 beginpmatrix2w0a00+w1a10+w2a20+...+wkak0+a01w1+a02w2+...+a0kwkw0a01+2w1a11+w2a21+...+wkak1+a10w0+a12w2+...+a1kwk.........w0a0k+w1a1k+w2a2k+...+w(kโˆ’1)a(kโˆ’1)k+ak0w0+ak1w1+ak2w2++...+2wkakk endpmatrix



Jika Anda melihat lebih dekat pada vektor, Anda akan melihat bahwa elemen kiri dan kanan vektor dapat dikelompokkan sedemikian rupa sehingga, sebagai hasilnya, vektor dapat dibedakan dari vektor yang disajikan  vecw ukurannya (k kali1) . Sebagai contoh w1a10 (elemen kiri dari garis atas vektor) +a01w1 (elemen kanan dari garis atas vektor) dapat direpresentasikan sebagai w1(a10+a01) , dan w2a20+a02w2 - bagaimana w2(a20+a02) dll. di setiap baris. Kelompok:

 beginpmatrix2w0a00+w1(a10+a01)+w2(a20+a02)+...+wk(ak0+a0k)w0(a01+a10)+2w1a11+w2(a21+a12)+...+wk(ak1+a1k).........w0(a0k+ak0)+w1(a1k+ak1)+w2(a2k+ak2)+...+2wkakk endpmatrix



Keluarkan vektor  vecw dan pada output kita dapatkan:

$$ tampilkan $$ \ begin {pmatrix} 2a_ {00} & a_ {10} + a_ {01} & a_ {20} + a_ {02} & ... & a_ {k0} + a_ {0k} \\ a_ {01} + a_ {10} & 2a_ {11} & a_ {21} + a_ {12} & ... & a_ {k1} + a_ {1k} \\ ... & ... & .. . & ... & ... \\ ... & ... & ... & ... & ... \\ ... & ... & ... & ... & .. . \\ a_ {0k} + a_ {k0} & a_ {1k} + a_ {k1} & a_ {2k} + a_ {k2} & ... & 2a_ {kk} \ end {pmatrix} \ kali \ mulai {pmatrix} w_0 \\ w_1 \\ ... \\ ... \\ ... \\ w_k \ end {pmatrix} \ qquad $$ menampilkan $$



Sekarang, mari kita lihat matriks yang dihasilkan. Matriks adalah jumlah dari dua matriks A+AT :

$$ tampilkan $$ \ begin {pmatrix} a_ {00} & a_ {01} & a_ {02} & ... & a_ {0k} \\ a_ {10} & a_ {11} & a_ {12} & ... & a_ {1k} \\ ... & ... & ... & ... & ... \\ a_ {k0} & a_ {k1} & a_ {k2} & ... & a_ {kk} \ end {pmatrix} + \ begin {pmatrix} a_ {00} & a_ {10} & a_ {20} & ... & a_ {k0} \\ a_ {01} & a_ {11} & a_ {21} & ... & a_ {k1} \\ ... & ... & ... & ... & ... \\ a_ {0k} & a_ {1k} & a_ {2k} & ... & a_ {kk} \ end {pmatrix} \ qquad $$ menampilkan $$



Ingat bahwa sedikit lebih awal, kami mencatat satu properti penting dari matriks A - itu simetris. Berdasarkan pada properti ini, kami dapat dengan yakin menyatakan ungkapan itu A+AT sama dengan 2A . Ini mudah untuk diverifikasi dengan mengungkapkan produk matriks demi elemen XTX . Kami tidak akan melakukan ini di sini, mereka yang ingin dapat melakukan cek sendiri.

Mari kita kembali ke ekspresi kita. Setelah transformasi kami, ternyata kami ingin melihatnya:

(A+AT) kali mulaipmatrixw0w1...wk endpmatrix qquad=2A vecw=2XTX vecw



Jadi, kami mengatasi diferensiasi pertama. Kami beralih ke ekspresi kedua.

Diferensiasi 2


 fracd(2 vecwTXT vecy)d vecw=2XT vecy

Mari kita pergi di sepanjang jalan yang terpukul. Ini akan jauh lebih pendek dari yang sebelumnya, jadi jangan jauh-jauh dari layar.

Kami mengungkapkan vektor elemen dan matriks:

$ inline $ \ vec {w} ^ T = \ begin {pmatrix} w_0 & w_1 & ... & w_k \ end {pmatrix} \ qquad $ inline $

$ sebaris $ X ^ T = \ begin {pmatrix} x_ {00} & x_ {10} & ... & x_ {n0} \\ x_ {01} & x_ {11} & ... & x_ {n1} \\ ... & ... & ... & ... \\ x_ {0k} & x_ {1k} & ... & x_ {nk} \ end {pmatrix} \ qquad $ inline $ $

 vecy= beginpmatrixy0y1...yn endpmatrix qquad

Untuk sementara, kami menghapus deuce dari perhitungan - itu tidak memainkan peran besar, maka kami akan mengembalikannya ke tempatnya. Kalikan vektor dengan matriks. Pertama-tama, kita mengalikan matriks XT pada vektor  vecy , di sini kita tidak memiliki batasan. Dapatkan vektor ukuran (k kali1) :

 beginpmatrixx00y0+x10y1+...+xn0ynx01y0+x11y1+...+xn1yn...x0ky0+x1ky1+...+xnkyn endpmatrix qquad



Lakukan tindakan berikut - kalikan vektor  vecw ke vektor yang dihasilkan. Pada output, angka akan menunggu kita:

 beginpmatrixw0(x00y0+x10y1+...+xn0yn)+w1(x01y0+x11y1+...+xn1yn) mkern10mu+ mkern10mu... mkern10mu+ mkern10muwk(x0ky0+x1ky1+...+xnkyn) endpmatrix qquad



Kami kemudian membedakannya. Pada output kita mendapatkan vektor dimensi (k kali1) :

 beginpmatrixx00y0+x10y1+...+xn0ynx01y0+x11y1+...+xn1yn...x0ky0+x1ky1+...+xnkyn endpmatrix qquad



Apakah itu menyerupai sesuatu? Baiklah! Ini adalah produk dari matriks. XT pada vektor  vecy .

Dengan demikian, diferensiasi kedua berhasil diselesaikan.

Alih-alih sebuah kesimpulan


Sekarang kita tahu bagaimana kesetaraan muncul. XTX vecw=XT vecy .

Akhirnya, kami menjelaskan cara cepat untuk mengubah formula utama.

Perkirakan kualitas model sesuai dengan metode kuadrat terkecil:
 jumlah limitni=1(yiโˆ’f(xi))2 mkern20mu= mkern20mu jumlah limitni=1(yiโˆ’ vecxiT vecw)2=

=(X vecwโˆ’ vecy)2 mkern20mu= mkern20mu(X vecwโˆ’ vecy)T(X vecwโˆ’ vecy) mkern20mu= mkern20mu vecwTXTX vecwโˆ’2 vecwTXT vecy+ vecyT vecy

Kami membedakan ekspresi yang dihasilkan:
 fracd( vecwTXTX vecwโˆ’2 vecwTXT vecy+ vecyT vecy)d vecw=2XTX vecwโˆ’2XT vecy=0

XTX vecw=XT vecy

 leftarrow Karya penulis sebelumnya - โ€œKami menyelesaikan persamaan regresi linier sederhanaโ€
 rightarrow Karya berikutnya dari penulis - "Chewing Logistic Regression"

Sastra


Sumber internet:

1) habr.com/en/post/278513
2) habr.com/ru/company/ods/blog/322076
3) habr.com/en/post/307004
4) nabatchikov.com/blog/view/matrix_der

Buku teks, koleksi tugas:

1) Catatan kuliah tentang matematika yang lebih tinggi: kursus penuh / D.T. Ditulis - edisi ke-4. - M .: Iris Press, 2006
2) Analisis Regresi Terapan / N. Draper, G. Smith - edisi ke-2. - M .: Keuangan dan Statistik, 1986 (diterjemahkan dari bahasa Inggris)
3) Tugas untuk menyelesaikan persamaan matriks:
function-x.ru/matrix_equations.html
mathprofi.ru/deistviya_s_matricami.html

Source: https://habr.com/ru/post/id479398/


All Articles