Source:
Сызыктуу регрессия маалыматтарды талдоо менен байланышкан көптөгөн аймактар үчүн негизги алгоритмдердин бири болуп саналат. Мунун себеби айдан ачык. Бул абдан жөнөкөй жана түшүнүктүү алгоритм, анын көптөгөн ондогон, болбосо жүздөгөн жылдар бою кеңири колдонулушуна салым кошкон. Идея бир өзгөрмөнүн башка өзгөрмөлөрдүн жыйындысына сызыктуу көз карандылыгын кабыл алып, андан кийин бул көз карандылыкты калыбына келтирүүгө аракет кылууда.
Бирок бул макала практикалык маселелерди чечүү үчүн сызыктуу регрессияны колдонуу жөнүндө эмес. Бул жерде биз аны калыбына келтирүү үчүн бөлүштүрүлгөн алгоритмдерди ишке ашыруунун кызыктуу өзгөчөлүктөрүн карап чыгабыз, алар машинаны үйрөнүү модулун жазууда кездешкен.
Биз эмне жөнүндө сүйлөшүп жатабыз?
Биздин алдыбызда сызыктуу көз карандылыкты калыбына келтирүү милдети турат. Киргизилген маалыматтар катары ар бири көз каранды өзгөрмөнүн белгилүү бир мааниси менен байланышкан болжолдуу көз карандысыз өзгөрмөлөрдүн векторлорунун жыйындысы берилет. Бул маалыматтар эки матрица түрүндө берилиши мүмкүн:
Эми, көз карандылык кабыл алынгандыктан, жана, андан тышкары, сызыктуу, биз өз божомолубузду матрицалардын көбөйтүндүсү түрүндө жазабыз (жазууну жөнөкөйлөтүү үчүн, бул жерде жана ылдыйда теңдеменин эркин мүчөсү артында катылган деп болжолдонууда) , жана матрицанын акыркы тилкеси бирдиктерди камтыйт):
Сызыктуу теңдемелер системасына абдан окшош, туурабы? Кыязы, бирок, сыягы, мындай теңдемелер системасынын чечимдери жок болот. Мунун себеби ызы-чуу болуп саналат, ал дээрлик бардык реалдуу маалыматтарда бар. Дагы бир себеп сызыктуу көз карандылыктын жоктугу болушу мүмкүн, аны менен сызыктуу эмес көз каранды болгон кошумча өзгөрмөлөрдү киргизүү аркылуу күрөшүүгө болот. Төмөнкү мисалды карап көрөлү:
Source:
Бул бир өзгөрмөнүн байланышын көрсөткөн сызыктуу регрессиянын жөнөкөй мисалы (ок боюнча ) башка өзгөрмөдөн (октун боюнда ). Бул мисалга туура келген сызыктуу теңдемелер системасы чечимге ээ болушу үчүн бардык чекиттер так бир түз сызыкта жатышы керек. Бирок бул андай эмес. Бирок алар бир түз сызыкта так ызы-чуунун (же сызыктуу байланышты болжолдоо жаңылыш болгондугу үчүн) так эмес. Ошентип, реалдуу маалыматтардан сызыктуу байланышты калыбына келтирүү үчүн, адатта, дагы бир божомолду киргизүү керек: киргизилген маалыматтарда ызы-чуу бар жана бул ызы-чуу бар
Максималдуу ыктымалдык ыкмасы
Ошентип, биз кокустук, нормалдуу бөлүштүрүлгөн ызы-чуунун болушун болжолдодук. Мындай кырдаалда эмне кылуу керек? Бул үчүн математикада бар жана кеңири колдонулат
Биз кадимки ызы-чуу менен маалыматтардан сызыктуу байланышты калыбына келтирүүгө кайтып келебиз. Болжолдонгон сызыктуу байланыш математикалык күтүү экенин эске алыңыз учурдагы нормалдуу бөлүштүрүү. Ошол эле учурда, ыктымалдыгы байкала турган нерселердин болушуна жараша тигил же бул мааниге ээ болот , төмөнкүдөй:
Эми анын ордуна алмаштыралы и Бизге керек болгон өзгөрмөлөр:
Болгону векторду табуу гана калды , бул ыктымалдык максималдуу болуп саналат. Мындай функцияны максималдаштыруу үчүн адегенде анын логарифмасын алуу ыңгайлуу (функциянын логарифминин максимумуна функциянын өзү менен бирдей чекитте жетет):
Бул, өз кезегинде, төмөнкү функцияны минималдаштырууга алып келет:
Айтмакчы, бул ыкма деп аталат
QR ажыратуу
Жогорудагы функциянын минимумун бул функциянын градиенти нөлгө барабар болгон чекитти табуу менен табууга болот. Жана градиент төмөнкүчө жазылат:
Ошентип, биз матрицаны ажыратабыз матрицаларга и жана бир катар трансформацияларды аткарыңыз (бул жерде QR декомпозиция алгоритминин өзү каралбайт, анын тапшырмага карата колдонулушу гана):
Булакта ортогоналдык болуп саналат. Бул бизге иштен кутулууга мумкундук берет :
Жана алмаштырсаңыз боюнча , анда ал иштейт . Ошону эске алып жогорку үч бурчтук матрица болуп саналат, ал төмөнкүдөй көрүнөт:
Бул алмаштыруу ыкмасын колдонуу менен чечсе болот. Элемент катары жайгашкан , мурунку элемент катары жайгашкан жана башкалар.
Бул жерде белгилей кетүү керек, QR декомпозициясын колдонуудан улам пайда болгон алгоритмдин татаалдыгы . Анын үстүнө, матрицаны көбөйтүү операциясы жакшы параллелдүү болгонуна карабастан, бул алгоритмдин эффективдүү бөлүштүрүлгөн версиясын жазуу мүмкүн эмес.
Градиенттин түшүүсү
Функцияны минималдаштыруу жөнүндө сөз кылганда, градиенттин (стохастикалык) түшүү ыкмасын эстен чыгарбоо керек. Бул бир чекиттеги функциянын градиентин итеративдик эсептөөгө жана андан кийин аны градиентке карама-каршы багытта жылдырууга негизделген жөнөкөй жана эффективдүү минимизациялоо ыкмасы. Ар бир мындай кадам чечимди минимумга жакындатат. Градиент мурдагыдай эле көрүнөт:
Бул ыкма да градиент операторунун сызыктуу касиеттеринен улам жакшы параллелдештирилген жана бөлүштүрүлгөн. Жогорудагы формулада сумма белгисинин астында өз алдынча терминдер бар экенине көңүл буруңуз. Башкача айтканда, биз бардык индекстер үчүн градиентти өз алдынча эсептей алабыз биринчиден , муну менен катар индекстер үчүн градиентти эсептеңиз үчүн . Андан кийин пайда болгон градиенттерди кошуңуз. Кошуунун натыйжасы биз дароо эле биринчиден баштап индекстер үчүн градиентти эсептегендей болот . Ошентип, эгерде маалыматтар бир нече маалыматтардын арасында бөлүштүрүлсө, анда градиент ар бир бөлүк боюнча өз алдынча эсептелип, андан кийин бул эсептөөлөрдүн натыйжалары жыйынтыкталган жыйынтыкты алуу үчүн жыйынтыкталышы мүмкүн:
Ишке ашыруу көз карашынан алганда, бул парадигмага туура келет
Ишке ашыруунун жөнөкөйлүгүнө жана MapReduce парадигмасында аткаруу мүмкүнчүлүгүнө карабастан, градиенттин түшүүсүнүн да кемчиликтери бар. Атап айтканда, конвергенцияга жетишүү үчүн зарыл болгон кадамдардын саны башка адистештирилген методдорго салыштырмалуу кыйла жогору.
LSQR
LSQR ыкмасы негизделген
Бирок матрица деп ойлосок горизонталдуу түрдө бөлүнгөн болсо, анда ар бир итерация эки MapReduce кадамы катары көрсөтүлүшү мүмкүн. Мына ушундай жол менен ар бир итерация учурунда берилиштерди өткөрүп берүүнү минималдаштырууга болот (узундугу белгисиздердин санына барабар болгон векторлор гана):
Дал ушул ыкма сызыктуу регрессияны ишке ашырууда колдонулат
жыйынтыктоо
Көптөгөн сызыктуу регрессияны калыбына келтирүү алгоритмдери бар, бирок алардын бардыгын бардык шарттарда колдонууга болбойт. Ошентип, QR декомпозициясы кичинекей маалымат топтомдорун так чечүү үчүн эң сонун. Градиенттин түшүүсүн ишке ашыруу оңой жана болжолдуу чечимди тез табууга мүмкүндүк берет. Ал эми LSQR мурунку эки алгоритмдин эң жакшы касиеттерин айкалыштырат, анткени ал бөлүштүрүлүшү мүмкүн, градиенттин түшүүсүнө салыштырмалуу тезирээк биригет, ошондой эле QR декомпозициясынан айырмаланып, болжолдуу чечимди табуу үчүн алгоритмди эрте токтотууга мүмкүндүк берет.
Source: www.habr.com