
Burimi:
Линейная регрессия является одним из базовых алгоритмов для многих областей, связанных с анализом данных. Причина этому очевидна. Это очень простой и понятный алгоритм, что способствует его широкому применению уже многие десятки, если не сотни, лет. Идея заключается в том, что мы предполагаем линейную зависимость одной переменной от набора других переменных, а потом пытаемся эту зависимость восстановить.
Но в этой статье речь пойдет не про применение линейной регрессии для решения практических задач. Здесь будут рассмотрены интересные особенности реализации распределенных алгоритмов её восстановления, с которыми мы столкнулись при написании модуля машинного обучения в . Немного базовой математики, основ машинного обучения и распределенных вычислений помогут разобраться, как восстанавливать линейную регрессию, даже если данные распределены между тысячами узлов.
Për çfarë bëhet fjalë?
Перед нами стоит задача восстановления линейной зависимости. В качестве входных данных дается множество векторов предположительно независимых переменных, каждому из которых ставится в соответствие некоторое значение зависимой переменной. Эти данные можно представить в виде двух матриц:

Теперь, раз уж предполагается зависимость, да к тому же еще и линейная, запишем наше предположение в виде произведения матриц (для упрощения записи здесь и далее предполагается, что свободный член уравнения скрывается за
, а последний столбец матрицы
содержит единицы):

Очень похоже на систему линейных уравнений, не так ли? Похоже, но решений у такой системы уравнений скорее всего не будет. Причиной тому является шум, который присутствует практически в любых реальных данных. Так же причиной может быть отсутствие линейной зависимости как таковой, с которой можно пытаться бороться введением дополнительных переменных, нелинейно зависящих от исходных. Рассмотрим следующий пример:

Burimi:
Это простой пример линейной регрессии, который демонстрирует зависимость одной переменной (по оси
) от другой переменной (по оси
). Чтобы соответствующая данному примеру система линейных уравнений имела решение, все точки должны лежать точно на одной прямой. Но это не так. А не лежат они на одной прямой именно из-за шума (или из-за того что предположение о наличии линейной зависимости было ошибочным). Таким образом, чтобы восстановить линейную зависимость по реальным данным обычно требуется ввести еще одно предположение: входные данные содержат шум и этот шум имеет . Можно делать предположения и о других типах распределения шума, но в подавляющем большинстве случаев рассматривают именно нормальное распределение, о котором далее и пойдет речь.
Metoda e maksimalit të mundësisë
Итак, мы предположили наличие случайного нормально распределенного шума. Как же быть в такой ситуации? На этот случай в математике существует и широко используется . Если кратко, его суть заключается в выборе и последующей её максимизации.
Возвращаемся к восстановлению линейной зависимости по данным с нормальным шумом. Заметим, что предполагаемая линейная зависимость является математическим ожиданием
имеющегося нормального распределения. В то же время, вероятность того, что
принимает то или иное значение, при условии наличия наблюдаемых
, выглядит следующим образом:

Подставим теперь вместо
dhe
нужные нам переменные:

Осталось только найти вектор
, при котором эта вероятность максимальна. Чтобы максимизировать такую функцию удобно сначала её прологарифмировать (логарифм функции будет достигать максимума в той же точке, что и сама функция):

Что, в свою очередь, сводится к минимизации следующей функции:

Кстати, это называется методом . Зачастую все приведенные выше рассуждения опускаются и просто используется этот метод.
QR разложение
Минимум приведенной выше функции можно найти, если найти точку в которой градиент этой функции равен нулю. А градиент будет записан следующим образом:

является матричным методом решения задачи минимизации используемом в методе наименьших квадратов. В связи с этим перепишем уравнение в матричной форме:

Итак, мы раскладываем матрицу
на матрицы
dhe
и выполняем ряд преобразований (сам алгоритм QR разложения здесь рассматриваться не будет, только его использование применительно к поставленной задаче):

Матрица
është ortogonale. Kjo na lejon të heqim dorë nga produkti
:

Dhe nëse zëvendësojmë
në
, atëherë do të dalë
. Duke marrë parasysh se
është një matricë e sipërme trekëndore, duket kështu:

Kjo mund të zgjidhet me metodën e zëvendësimit. Elementi
gjehet si
, elementi paraprak
gjehet si
etj.
Këtu duhet të theksohet se kompleksiteti i algoritmit të rezultuar për shkak të përdorimit të ndarjes QR është i barabartë me
. Megjithatë, pavarësisht se operacioni i shumzimit të matricave është mirë i ndarë në mënyrë paralele, të shkruash një version efektiv të shpërndarë të këtij algoritmi nuk duket se është e mundur.
Rënia gradiente
Duke folur për minimizimin e një funksioni të caktuar, gjithmonë duhet të kujtojmë metodën e (stohastik) shpimit të gradienteve. Kjo është një metodë e thjeshtë dhe efektive për minimizimin, e cila bazohet në llogaritjen iteruese të gradienteve të funksionit në një pikë dhe më pas zhvendosjen e saj në drejtim të kundërt me gradientin. Çdo hap i tillë afron zgjidhjen me minimumin. Gradienti këtu duket gjithashtu kështu:

Gjithashtu, kjo metodë është mirë e ndarë dhe shpërndarë për shkak të pronarive lineare të operatorit të gradienteve. Vërejmë se në formulën e mësipërme nën shenjën e shumës janë terma të pavarur. Në fjalë të tjera, ne mund të llogaritim gradientin pavarësisht për të gjitha indekset
nga i pari deri në
, paralelisht me këtë llogaritim gradientin për indekset nga
deri te
. Pastaj do të mbledhim gradientet e marra. Rezultati i mbledhjes do të jetë i njëjtë si nëse do të llogaritnim menjëherë gradientin për indekset nga i pari deri në
. Pra, nëse të dhënat janë të shpërndara midis disa pjesëve të të dhënave, gradienti mund të llogaritet pavarësisht në secilën pjesë, dhe më pas rezultatet e këtyre llogaritjeve mund të mblidhen për të marrë rezultatin përfundimtar:

Nga pikëpamja e realizimit, kjo përputhet me paradigmat . Në çdo hap të shpimit të gradienteve, në çdo nyje të dhënave dërgohet një detyrë për llogaritjen e gradienteve, pastaj gradientet e llogaritura mblidhen bashkë dhe rezultati i shumimit të tyre përdoret për të përmirësuar rezultatin.
Megjithëse është e thjeshtë për t'u realizuar dhe mund të ekzekutohet në paradigmën MapReduce, shpimi i gradienteve ka gjithashtu disavantazhet e tij. Në veçanti, numri i hapave të nevojshëm për të arritur konvergjencën është dukshëm më i lartë në krahasim me metoda të tjera më të specializuara.
LSQR
— është një metodë tjetër për zgjidhjen e problemit të caktuar, e cila është e përshtatshme si për rikthimin e regresionit linear, ashtu edhe për zgjidhjen e sistemeve të ekuacioneve lineare. Karakteristika e saj kryesore është se ajo kombinon avantazhet e metodave matriciale dhe qasjes iteruese. Realizimet e kësaj metode mund të gjenden si në bibliotekat , si dhe në . Përshkrimi i kësaj metode nuk do të paraqitet këtu (mund të gjendet në artikullin ). Në vend të kësaj, do të demonstrohet një qasje që lejon adaptimin e LSQR për ekzekutim në një mjedis të shpërndarë.
Në thelb të metodës LSQR qëndron . Kjo është një procedurë iteruese, e cila përbëhet nga hapat e mëposhtëm:

Por nëse e marrim parasysh se matrica
është e ndarë horizontalisht, atëherë çdo iteracion mund të paraqitet në formën e dy hapave MapReduce. Kështu arrijmë të minimizojmë dërgimin e të dhënave gjatë çdo iteracioni (vetëm vektorë me një gjatësi të barabartë me numrin e të panjohurave):

Ky është pikërisht qasja që përdoret në realizimin e regresionit linear në .
Përfundimi
Ekzistojnë shumë algoritmo për rikthimin e regresionit linear, por jo të gjitha prej tyre mund të aplikohen në çdo kushte. Kështu, ndarja QR është e përshtatshme për zgjidhje të saktë në grupe të vogla të të dhënave. Spimi i gradienteve është lehtësisht i realizueshëm dhe lejon gjetjen e një zgjidhjeje të përafërt me shpejtësi. Ndërsa LSQR kombinon karakteristikat më të mira të dy algoritmave të mëparshëm, pasi ai mund të shpërndahet, konvergon më shpejt krahasuar me shpimin e gradienteve dhe gjithashtu lejon ndaljen e hershme të algoritmit në kundërshtim me ndarjen QR për gjetjen e një zgjidhjeje të përafërt.
Burimi: habr.com
