Kısa cevap:
Evet, doğrusal regresyonun paralel olarak yürütülmesi yapılmıştır. Örneğin, Xiangrui Meng ve ark. (2016) Apache Spark'da Makine Öğrenimi için. Çalışma şekli stokastik degrade iniş (SGD) kullanmaktır. Bölüm 3, temel özellikler, yazar şunları söyledi:
Genelleştirilmiş doğrusal modeller, işçi hesaplamaları için hızlı C ++ tabanlı doğrusal cebir kitaplıkları kullanılarak gradyan hesaplamasını paralelleştiren optimizasyon algoritmaları aracılığıyla öğrenilir.
SGD'nin nasıl çalıştığına dair bir örnek burada cevabımda bulunabilir: Stokastik degrade iniş, standart degrade inişe kıyasla zamandan nasıl tasarruf edebilir?
Uzun cevap:
Not, gösterim sağladığım bağlantı ile tutarlı değil, bu soruda matris gösteriminin daha iyi olduğunu hissediyorum.
Doğrusal bir regresyon yapmak için yapmaya çalışıyoruz
simge durumuna küçült ∥ X β- y∥2
Türev
2 XT( Xβ- y)
Küçük veri ayarlarında, türevi ayarlayabilir ve doğrudan çözebiliriz. (örneğin, R'deki QR ayrışması) Büyük veri ayarlarında, X veri matrisi bellekte depolanmak için çok büyüktür ve doğrudan çözülmesi zor olabilir. (Büyük matrisler için QR ayrıştırması veya Cholesky ayrışması nasıl yapılacağını bilmiyorum).0X
Xsys2 XTs( Xsβ- ys)β
R,2R,2
Nasıl çalıştığına dair sezgi (mapreduce paradigması):
Ben bir altkümeyi kullanarak yaklaşık söylemeye devam ediyorum; bunun neden işe yaradığı sezgisi aşağıdaki örnekte açıklanabilir: 100 milyar veri noktasına sahip olduğumu ve tüm veri noktalarının ortalamasını hesaplamak istediğimizi varsayalım. Böyle bir işlemin gerçekleştirilmesinin çok uzun zaman aldığını ve ayrıca tüm verilerin hafızada saklanamayacağını varsayalım.
Yapabileceğimiz sadece bir alt küme almak, 1 milyar öğe söylemek ve bunların ortalamasını hesaplamak. Bu şekilde üretilen yaklaşım gerçek olmaktan uzak olmamalıdır (yani tüm verileri kullanarak).
Paralel hale getirmek için, her biri 1 milyar veri noktasının farklı bir alt kümesini alıp bunların ortalamasını hesaplayan 100 bilgisayar kullanabiliriz. (Genellikle MAP adımı olarak adlandırılır). Son olarak, bu 100 sayı üzerinde başka bir ortalama çalıştırın (REDUCE adımı).
ortalama ( < x , y> ) = ortalama ( x ) + ortalama (y)xy
Referanslar:
Xiangrui Meng ve diğ. (2016) . MLlib: Apache Spark'da Makine Öğrenmesi