Шугаман регресс ба түүнийг сэргээх аргууд

Шугаман регресс ба түүнийг сэргээх аргууд
Эх сурвалж: xkcd

Шугаман регресс нь өгөгдлийн шинжилгээтэй холбоотой олон талбарт зориулсан үндсэн алгоритмуудын нэг юм. Үүний шалтгаан нь ойлгомжтой. Энэ бол маш энгийн бөгөөд ойлгомжтой алгоритм бөгөөд үүнийг олон арван, магадгүй олон зуун жилийн турш өргөнөөр ашиглахад хувь нэмэр оруулсан. Гол санаа нь бид нэг хувьсагчийн шугаман хамаарлыг бусад хувьсагчийн багцаас авч үзээд энэ хамаарлыг сэргээхийг оролддог.

Гэхдээ энэ нийтлэл нь практик асуудлыг шийдвэрлэхийн тулд шугаман регрессийг ашиглах тухай биш юм. Энд бид машин сургалтын модулийг бичихдээ тулгарч байсан түүнийг сэргээх тархсан алгоритмуудыг хэрэгжүүлэх сонирхолтой онцлогуудыг авч үзэх болно. Apache Ignite. Бага зэрэг үндсэн математик, машин сургалт, тархсан тооцоолол нь таны өгөгдөл мянга мянган зангилаанд тархсан байсан ч шугаман регрессийг хэрхэн хийх талаар олж мэдэхэд тусална.

Бид юу ярьж байна вэ?

Шугаман хамаарлыг сэргээх ажил бидний өмнө тулгараад байна. Оролтын өгөгдлийн хувьд бие даасан хувьсагчийн векторуудын багцыг өгсөн бөгөөд тэдгээр нь тус бүр нь хамааралтай хувьсагчийн тодорхой утгатай холбоотой байдаг. Энэ өгөгдлийг хоёр матриц хэлбэрээр илэрхийлж болно.

Шугаман регресс ба түүнийг сэргээх аргууд

Одоо хамаарал, мөн шугаман гэж тооцогддог тул бид таамаглаа матрицын үржвэр хэлбэрээр бичих болно (бичлэгийг хялбарчлахын тулд энд болон доор тэгшитгэлийн чөлөөт гишүүний ард нуугдаж байна гэж үзнэ. Шугаман регресс ба түүнийг сэргээх аргууд, мөн матрицын сүүлчийн багана Шугаман регресс ба түүнийг сэргээх аргууд нэгж агуулсан):

Шугаман регресс ба түүнийг сэргээх аргууд

Шугаман тэгшитгэлийн системтэй адилхан сонсогдож байна, тийм үү? Энэ нь харагдаж байна, гэхдээ ийм тэгшитгэлийн системд шийдэл байхгүй байх магадлалтай. Үүний шалтгаан нь бараг бүх бодит өгөгдөлд байдаг дуу чимээ юм. Өөр нэг шалтгаан нь шугаман хамаарал байхгүй байж болох бөгөөд энэ нь анхныхаас шугаман бус хамааралтай нэмэлт хувьсагчдыг нэвтрүүлэх замаар тэмцэж болно. Дараах жишээг авч үзье.
Шугаман регресс ба түүнийг сэргээх аргууд
Эх сурвалж: Википедиа

Энэ бол нэг хувьсагчийн (тэнхлэгийн дагуу) хамаарлыг харуулсан шугаман регрессийн энгийн жишээ юм Шугаман регресс ба түүнийг сэргээх аргууд) өөр хувьсагчаас (тэнхлэгийн дагуу Шугаман регресс ба түүнийг сэргээх аргууд). Энэ жишээнд тохирох шугаман тэгшитгэлийн систем шийдэлтэй байхын тулд бүх цэгүүд яг ижил шулуун дээр байрлах ёстой. Гэхдээ энэ нь үнэн биш юм. Гэхдээ тэд чимээ шуугианаас болж (эсвэл шугаман харилцааны таамаглал буруу байсан тул) яг ижил шулуун шугам дээр хэвтдэггүй. Тиймээс, бодит өгөгдлөөс шугаман харилцааг сэргээхийн тулд ихэвчлэн өөр нэг таамаглалыг оруулах шаардлагатай байдаг: оролтын өгөгдөл нь дуу чимээг агуулдаг бөгөөд энэ чимээ нь шуугиантай байдаг. хэвийн тархалт. Та бусад төрлийн дуу чимээний тархалтын талаар таамаглаж болно, гэхдээ ихэнх тохиолдолд энэ нь хэвийн тархалтыг авч үздэг бөгөөд үүнийг цаашид авч үзэх болно.

Хамгийн их магадлалын арга

Тиймээс бид санамсаргүй хэвийн тархсан дуу чимээ байгаа гэж таамагласан. Ийм нөхцөлд юу хийх вэ? Энэ тохиолдолд математикт байдаг бөгөөд өргөн хэрэглэгддэг хамгийн их магадлалын арга. Товчхондоо, түүний мөн чанар нь сонголтод оршдог магадлалын функцууд ба түүний дараагийн дээд хэмжээ.

Бид ердийн чимээ шуугиантай өгөгдлөөс шугаман харилцааг сэргээхэд буцаж ирдэг. Таамагласан шугаман хамаарал нь математикийн хүлээлт гэдгийг анхаарна уу Шугаман регресс ба түүнийг сэргээх аргууд одоо байгаа хэвийн тархалт. Үүний зэрэгцээ, магадлал Шугаман регресс ба түүнийг сэргээх аргууд ажиглаж болохуйц байгаа нөхцөлд нэг буюу өөр утгыг авдаг Шугаман регресс ба түүнийг сэргээх аргууд, дараах байдлаар харагдаж байна.

Шугаман регресс ба түүнийг сэргээх аргууд

Одоо оронд нь орлъё Шугаман регресс ба түүнийг сэргээх аргууд и Шугаман регресс ба түүнийг сэргээх аргууд Бидэнд хэрэгтэй хувьсагчууд нь:

Шугаман регресс ба түүнийг сэргээх аргууд

Зөвхөн векторыг олох л үлдлээ Шугаман регресс ба түүнийг сэргээх аргууд, энэ үед энэ магадлал хамгийн их байна. Ийм функцийг нэмэгдүүлэхийн тулд эхлээд түүний логарифмыг авах нь тохиромжтой (функцийн логарифм нь функцтэй ижил цэг дээр хамгийн ихдээ хүрэх болно):

Шугаман регресс ба түүнийг сэргээх аргууд

Энэ нь эргээд дараахь функцийг багасгахад хүргэдэг.

Шугаман регресс ба түүнийг сэргээх аргууд

Дашрамд хэлэхэд үүнийг арга гэж нэрлэдэг хамгийн бага квадратууд. Ихэнхдээ дээрх бүх зүйлийг орхигдуулдаг бөгөөд энэ аргыг зүгээр л ашигладаг.

QR задрал

Дээрх функцийн хамгийн бага утгыг энэ функцийн градиент тэг байх цэгийг олох замаар олж болно. Мөн градиентийг дараах байдлаар бичнэ.

Шугаман регресс ба түүнийг сэргээх аргууд

QR задрал нь хамгийн бага квадратын аргад ашигладаг багасгах асуудлыг шийдвэрлэх матрицын арга юм. Үүнтэй холбогдуулан бид тэгшитгэлийг матриц хэлбэрээр дахин бичнэ.

Шугаман регресс ба түүнийг сэргээх аргууд

Тиймээс бид матрицыг задалдаг Шугаман регресс ба түүнийг сэргээх аргууд матрицууд руу Шугаман регресс ба түүнийг сэргээх аргууд и Шугаман регресс ба түүнийг сэргээх аргууд мөн хэд хэдэн хувиргалтыг хийнэ (QR задралын алгоритмыг энд авч үзэхгүй, зөвхөн даалгавартай холбоотой ашиглах):

Шугаман регресс ба түүнийг сэргээх аргууд

Матриц Шугаман регресс ба түүнийг сэргээх аргууд ортогональ байна. Энэ нь биднийг ажлаас ангижруулах боломжийг олгодог Шугаман регресс ба түүнийг сэргээх аргууд:

Шугаман регресс ба түүнийг сэргээх аргууд

Хэрэв та солих юм бол Шугаман регресс ба түүнийг сэргээх аргууд тухай Шугаман регресс ба түүнийг сэргээх аргууд, тэгвэл бүтнэ Шугаман регресс ба түүнийг сэргээх аргууд. Үүнийг харгалзан үзвэл Шугаман регресс ба түүнийг сэргээх аргууд дээд гурвалжин матриц нь дараах байдалтай байна.

Шугаман регресс ба түүнийг сэргээх аргууд

Үүнийг орлуулах аргыг ашиглан шийдэж болно. Бүрэлдэхүүн Шугаман регресс ба түүнийг сэргээх аргууд байдлаар байрладаг Шугаман регресс ба түүнийг сэргээх аргууд, өмнөх элемент Шугаман регресс ба түүнийг сэргээх аргууд байдлаар байрладаг Шугаман регресс ба түүнийг сэргээх аргууд гэх мэт.

QR задралыг ашигласны улмаас үүссэн алгоритмын нарийн төвөгтэй байдал нь дараах байдалтай тэнцүү байгааг энд тэмдэглэх нь зүйтэй. Шугаман регресс ба түүнийг сэргээх аргууд. Түүнээс гадна матрицыг үржүүлэх үйлдлийг сайн зэрэгцүүлсэн боловч энэ алгоритмын үр дүнтэй тархсан хувилбарыг бичих боломжгүй юм.

Градиент уналт

Функцийг багасгах талаар ярихдаа (стохастик) градиент буурах аргыг үргэлж санах нь зүйтэй. Энэ нь функцийн градиентийг цэг дээр давталттайгаар тооцож, дараа нь градиентийн эсрэг чиглэлд шилжүүлэхэд үндэслэсэн энгийн бөгөөд үр дүнтэй багасгах арга юм. Ийм алхам бүр нь шийдлийг хамгийн багадаа ойртуулдаг. Градиент ижил хэвээр байна:

Шугаман регресс ба түүнийг сэргээх аргууд

Энэ арга нь мөн градиент операторын шугаман шинж чанараас шалтгаалан сайн параллелж, тархсан байдаг. Дээрх томъёонд нийлбэрийн тэмдгийн доор бие даасан нэр томъёо байгааг анхаарна уу. Өөрөөр хэлбэл, бид бүх индексийн хувьд градиентийг бие даан тооцоолж болно Шугаман регресс ба түүнийг сэргээх аргууд эхнээс нь хүртэл Шугаман регресс ба түүнийг сэргээх аргууд, үүнтэй зэрэгцэн индексүүдийн градиентийг тооцоол Шугаман регресс ба түүнийг сэргээх аргууд нь Шугаман регресс ба түүнийг сэргээх аргууд. Дараа нь үүссэн градиентийг нэмнэ. Нэмэлтийн үр дүн нь бид эхнийхээс индексүүдийн градиентийг нэн даруй тооцоолсонтой ижил байх болно Шугаман регресс ба түүнийг сэргээх аргууд. Тиймээс, хэрэв өгөгдлийг хэд хэдэн өгөгдлийн хооронд хуваарилсан бол градиентийг хэсэг бүр дээр бие даан тооцоолж, дараа нь эцсийн үр дүнг гаргахын тулд эдгээр тооцооллын үр дүнг нэгтгэж болно.

Шугаман регресс ба түүнийг сэргээх аргууд

Хэрэгжилтийн үүднээс авч үзвэл энэ нь парадигмд нийцэж байна MapReduce. Градиент буурах алхам бүрт өгөгдлийн зангилаа бүрд градиентийг тооцоолох даалгавар илгээгдэж, дараа нь тооцоолсон градиентуудыг цуглуулж, үр дүнг сайжруулахын тулд тэдгээрийн нийлбэрийн үр дүнг ашиглана.

Хэрэгжүүлэхэд хялбар, MapReduce парадигмд хэрэгжүүлэх чадвартай хэдий ч градиент уналт нь бас сул талуудтай. Ялангуяа нэгдмэл байдалд хүрэхийн тулд шаардлагатай алхмуудын тоо бусад нарийн мэргэжлийн аргуудтай харьцуулахад хамаагүй өндөр байдаг.

LSQR

LSQR нь шугаман регрессийг сэргээх болон шугаман тэгшитгэлийн системийг шийдвэрлэхэд тохиромжтой асуудлыг шийдэх өөр нэг арга юм. Үүний гол онцлог нь матрицын аргууд болон давталтын аргын давуу талуудыг хослуулсан явдал юм. Энэ аргын хэрэгжилтийг хоёр номын сангаас олж болно SciPy, ба in Матлаб. Энэ аргын тайлбарыг энд өгөхгүй (үүнийг нийтлэлээс олж болно LSQR: Сийрэг шугаман тэгшитгэл ба сийрэг хамгийн бага квадратуудын алгоритм). Үүний оронд LSQR-ийг тархсан орчинд гүйцэтгэхэд дасан зохицох аргыг харуулах болно.

LSQR арга нь дээр суурилдаг bidiagonalization журам. Энэ нь давтагдах процедур бөгөөд давталт бүр нь дараах алхмуудаас бүрдэнэ.
Шугаман регресс ба түүнийг сэргээх аргууд

Гэхдээ бид матриц гэж үзвэл Шугаман регресс ба түүнийг сэргээх аргууд нь хэвтээ байдлаар хуваагдсан бол давталт бүрийг MapReduce-ийн хоёр алхам хэлбэрээр илэрхийлж болно. Ийм байдлаар давталт бүрийн үед өгөгдөл дамжуулахыг багасгах боломжтой (зөвхөн үл мэдэгдэх тоотой тэнцүү урттай векторууд):

Шугаман регресс ба түүнийг сэргээх аргууд

Шугаман регрессийг хэрэгжүүлэхэд энэ аргыг ашигладаг Apache Ignite ML.

дүгнэлт

Шугаман регрессийг сэргээх олон алгоритмууд байдаг ч бүгдийг нь бүх нөхцөлд ашиглах боломжгүй. Тиймээс QR задрал нь жижиг өгөгдлийн багц дээр үнэн зөв шийдэл гаргахад маш сайн байдаг. Gradient descent нь хэрэгжүүлэхэд хялбар бөгөөд ойролцоогоор шийдлийг хурдан олох боломжийг танд олгоно. Мөн LSQR нь өмнөх хоёр алгоритмын хамгийн сайн шинж чанаруудыг нэгтгэдэг, учир нь энэ нь тархах боломжтой, градиент уналттай харьцуулахад илүү хурдан нийлдэг, мөн QR задралаас ялгаатай нь алгоритмыг эрт зогсоох, ойролцоо шийдэл олох боломжийг олгодог.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх