
Sumber:
Regresi linear adalah salah satu algoritma asas untuk banyak bidang yang berkaitan dengan analisis data. Alasan untuk ini adalah jelas. Ini adalah algoritma yang sangat mudah dan mudah difahami, yang telah menyumbang kepada penggunaannya yang meluas selama berpuluh-puluh, jika tidak beratus-ratus tahun. Ideanya ialah kita menganggap pergantungan linear satu pembolehubah pada set pembolehubah lain, dan kemudian cuba memulihkan pergantungan ini.
Tetapi artikel ini bukan tentang menggunakan regresi linear untuk menyelesaikan masalah praktikal. Di sini kami akan mempertimbangkan ciri menarik pelaksanaan algoritma teragih untuk pemulihannya, yang kami temui semasa menulis modul pembelajaran mesin dalam . Sedikit matematik asas, pembelajaran mesin dan pengkomputeran teragih boleh membantu anda memikirkan cara melakukan regresi linear walaupun data anda diedarkan merentasi ribuan nod.
Apa yang kita bincangkan?
Kami berhadapan dengan tugas memulihkan pergantungan linear. Sebagai data input, satu set vektor pembolehubah bebas yang sepatutnya diberikan, setiap satunya dikaitkan dengan nilai tertentu pembolehubah bersandar. Data ini boleh diwakili dalam bentuk dua matriks:

Sekarang, kerana pergantungan diandaikan, dan, lebih-lebih lagi, linear, kami akan menulis andaian kami dalam bentuk hasil darab matriks (untuk memudahkan rakaman, di sini dan di bawah diandaikan bahawa istilah bebas persamaan tersembunyi di belakang
, dan lajur terakhir matriks
mengandungi unit):

Bunyi sangat seperti sistem persamaan linear, bukan? Nampaknya, tetapi kemungkinan besar tidak akan ada penyelesaian kepada sistem persamaan sedemikian. Sebabnya ialah bunyi bising, yang terdapat dalam hampir semua data sebenar. Sebab lain mungkin adalah kekurangan pergantungan linear seperti itu, yang boleh diatasi dengan memperkenalkan pembolehubah tambahan yang tidak linear bergantung pada yang asal. Pertimbangkan contoh berikut:

Sumber:
Ini adalah contoh mudah regresi linear yang menunjukkan hubungan satu pembolehubah (di sepanjang paksi
) daripada pembolehubah lain (di sepanjang paksi
). Agar sistem persamaan linear yang sepadan dengan contoh ini mempunyai penyelesaian, semua titik mesti terletak tepat pada garis lurus yang sama. Tetapi itu tidak benar. Tetapi mereka tidak terletak pada garis lurus yang sama dengan tepat kerana bunyi bising (atau kerana andaian perhubungan linear adalah salah). Oleh itu, untuk memulihkan hubungan linear daripada data sebenar, biasanya perlu memperkenalkan satu lagi andaian: data input mengandungi hingar dan hingar ini mempunyai . Anda boleh membuat andaian tentang jenis taburan hingar lain, tetapi dalam kebanyakan kes, taburan normallah yang dipertimbangkan, yang akan dibincangkan lebih lanjut.
Kaedah kemungkinan maksimum
Jadi, kami mengandaikan kehadiran bunyi taburan normal rawak. Apa yang perlu dilakukan dalam keadaan sedemikian? Untuk kes ini dalam matematik ada dan digunakan secara meluas . Pendek kata, intipatinya terletak pada pilihan dan pemaksimumannya yang seterusnya.
Kami kembali untuk memulihkan hubungan linear daripada data dengan hingar biasa. Perhatikan bahawa hubungan linear yang diandaikan ialah jangkaan matematik
taburan normal sedia ada. Pada masa yang sama, kebarangkalian itu
mengambil satu nilai atau yang lain, tertakluk kepada kehadiran yang boleh diperhatikan
, seperti berikut:

Marilah kita menggantikannya sekarang
и
Pembolehubah yang kita perlukan ialah:

Yang tinggal hanyalah mencari vektor
, di mana kebarangkalian ini adalah maksimum. Untuk memaksimumkan fungsi sedemikian, adalah mudah untuk mengambil logaritmanya dahulu (logaritma fungsi akan mencapai maksimum pada titik yang sama dengan fungsi itu sendiri):

Yang, seterusnya, turun untuk meminimumkan fungsi berikut:

By the way, ini dipanggil kaedah . Selalunya semua pertimbangan di atas ditinggalkan dan kaedah ini hanya digunakan.
Penguraian QR
Minimum fungsi di atas boleh didapati dengan mencari titik di mana kecerunan fungsi ini adalah sifar. Dan kecerunan akan ditulis seperti berikut:

ialah kaedah matriks untuk menyelesaikan masalah pengecilan yang digunakan dalam kaedah kuasa dua terkecil. Dalam hal ini, kami menulis semula persamaan dalam bentuk matriks:

Jadi kita menguraikan matriks
kepada matriks
и
dan melakukan satu siri transformasi (algoritma penguraian QR itu sendiri tidak akan dipertimbangkan di sini, hanya penggunaannya berkaitan dengan tugas yang sedang dijalankan):

matriks
adalah ortogonal. Ini membolehkan kita menyingkirkan kerja
:

Dan jika anda menggantikan
pada
, maka ia akan berjaya
. Mempertimbangkan itu
ialah matriks segi tiga atas, ia kelihatan seperti ini:

Ini boleh diselesaikan menggunakan kaedah penggantian. unsur
terletak sebagai
, elemen sebelumnya
terletak sebagai
dan sebagainya.
Perlu diperhatikan di sini bahawa kerumitan algoritma yang terhasil disebabkan oleh penggunaan penguraian QR adalah sama dengan
. Selain itu, walaupun pada hakikatnya operasi pendaraban matriks adalah selari dengan baik, ia tidak mungkin untuk menulis versi teragih yang berkesan bagi algoritma ini.
Keturunan Kecerunan
Apabila bercakap tentang meminimumkan fungsi, ia sentiasa bernilai mengingati kaedah keturunan kecerunan (stokastik). Ini ialah kaedah pengecilan yang mudah dan berkesan berdasarkan pengiraan secara berulang kecerunan fungsi pada satu titik dan kemudian mengalihkannya ke arah yang bertentangan dengan kecerunan. Setiap langkah sedemikian membawa penyelesaian lebih dekat kepada minimum. Kecerunan masih kelihatan sama:

Kaedah ini juga selari dengan baik dan diedarkan kerana sifat linear pengendali kecerunan. Ambil perhatian bahawa dalam formula di atas, di bawah tanda jumlah terdapat istilah bebas. Dalam erti kata lain, kita boleh mengira kecerunan secara bebas untuk semua indeks
dari pertama hingga
, selari dengan ini, hitung kecerunan untuk indeks dengan
kepada
. Kemudian tambahkan kecerunan yang terhasil. Hasil penambahan akan sama seperti jika kita segera mengira kecerunan untuk indeks dari yang pertama hingga
. Oleh itu, jika data diedarkan di antara beberapa keping data, kecerunan boleh dikira secara bebas pada setiap bahagian, dan kemudian hasil pengiraan ini boleh dijumlahkan untuk mendapatkan hasil akhir:

Dari sudut pelaksanaan, ini sesuai dengan paradigma . Pada setiap langkah keturunan kecerunan, tugasan dihantar ke setiap nod data untuk mengira kecerunan, kemudian kecerunan yang dikira dikumpulkan bersama, dan hasil jumlahnya digunakan untuk menambah baik hasilnya.
Walaupun kemudahan pelaksanaan dan keupayaan untuk melaksanakan dalam paradigma MapReduce, keturunan kecerunan juga mempunyai kelemahannya. Khususnya, bilangan langkah yang diperlukan untuk mencapai penumpuan adalah jauh lebih tinggi berbanding kaedah lain yang lebih khusus.
LSQR
adalah kaedah lain untuk menyelesaikan masalah, yang sesuai untuk memulihkan regresi linear dan untuk menyelesaikan sistem persamaan linear. Ciri utamanya ialah ia menggabungkan kelebihan kaedah matriks dan pendekatan berulang. Pelaksanaan kaedah ini boleh didapati di kedua-dua perpustakaan , dan dalam . Penerangan mengenai kaedah ini tidak akan diberikan di sini (ia boleh didapati dalam artikel ). Sebaliknya, pendekatan akan ditunjukkan untuk menyesuaikan LSQR kepada pelaksanaan dalam persekitaran yang diedarkan.
Kaedah LSQR adalah berdasarkan . Ini adalah prosedur berulang, setiap lelaran terdiri daripada langkah-langkah berikut:

Tetapi jika kita menganggap bahawa matriks
dipisahkan secara mendatar, maka setiap lelaran boleh diwakili sebagai dua langkah MapReduce. Dengan cara ini, adalah mungkin untuk meminimumkan pemindahan data semasa setiap lelaran (hanya vektor dengan panjang yang sama dengan bilangan yang tidak diketahui):

Pendekatan inilah yang digunakan apabila melaksanakan regresi linear dalam .
Kesimpulan
Terdapat banyak algoritma pemulihan regresi linear, tetapi tidak semuanya boleh digunakan dalam semua keadaan. Jadi penguraian QR sangat baik untuk penyelesaian tepat pada set data kecil. Penurunan kecerunan adalah mudah untuk dilaksanakan dan membolehkan anda mencari penyelesaian anggaran dengan cepat. Dan LSQR menggabungkan sifat terbaik dari dua algoritma sebelumnya, kerana ia boleh diedarkan, menumpu lebih cepat berbanding dengan keturunan kecerunan, dan juga membenarkan penghentian awal algoritma, tidak seperti penguraian QR, untuk mencari penyelesaian anggaran.
Sumber: www.habr.com
