
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...xknKetergantungan 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
kw - 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=XTyBagaimana 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 vecySiapkan 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 vecyBagaimana 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)=constKonversi 2
(X vecw)TX vecw= vecwTXTX vecwKami 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)=constPada output, kita mendapatkan persamaan yang harus kita bedakan:
Err= vecwTXTX vecwโ2 vecwTXT vecy+ vecyT vecyKami 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} }) '= 02XTX vecwโ2XT vecy+0=0XTX vecw=XT vecyPertanyaan 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 vecwUntuk 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+...+w2kakkNamun, 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+...+a0kwk2) dibedakan dengan
w1 kami mendapatkan:
w0a01+2w1a11+w2a21+...+wkak1+a10w0+a12w2+...+a1kwk3) dibedakan dengan
wk kami mendapatkan:
w0a0k+w1a1k+w2a2k+...+w(kโ1)a(kโ1)k+ak0w0+ak1w1+ak2w2+...+2wkakkPada 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 vecyMari 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 qquadUntuk 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 vecyKami membedakan ekspresi yang dihasilkan: fracd( vecwTXTX vecwโ2 vecwTXT vecy+ vecyT vecy)d vecw=2XTX vecwโ2XT vecy=0XTX 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/2785132)
habr.com/ru/company/ods/blog/3220763)
habr.com/en/post/3070044)
nabatchikov.com/blog/view/matrix_derBuku 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