Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
DatabricksÃÏÏéÈð£ºALS ÔÚ Spark MLlib ÖеÄʵÏÖ
 
×÷Õß ÃÏÏéÈð À´Ô´£º¡¶³ÌÐòÔ±¡·µç×Ó¿¯ »ðÁú¹ûÈí¼þ  ·¢²¼ÓÚ 2015-5-11
  3010  次浏览      28
 

ÕªÒª£ºMLlibÔÚ1.3ÖÐÌí¼ÓÁ˲»ÉÙ»úÆ÷ѧϰ¼°Êý¾ÝÍÚ¾òËã·¨£ºÑо¿Ö÷Ìâ·Ö²¼µÄLDA¡¢¹À¼Æµã¼¯·Ö²¼µÄGMM¡¢ÌáȡƵ·±ÏµÄ FP-growthµÈµÈ¡£±¾ÎÄÖ÷Òª¾Û½¹ALSµÄʵÏÖ¼°ÆäÔÚ1.3ÖеÄÌáÉý¡£

ÉîÊÜÓû§Ï²°®µÄ´óÊý¾Ý´¦ÀíÆ½Ì¨ Apache Spark 1.3 ÓÚǰ²»¾Ã·¢²¼£¬MLlib ×÷Ϊ Spark ¸ºÔð»úÆ÷ѧϰ £¨ML£© µÄºËÐÄ×é¼þÔÚ 1.3 ÖÐÌí¼ÓÁ˲»ÉÙ»úÆ÷ѧϰ¼°Êý¾ÝÍÚ¾òµÄËã·¨£ºÑо¿Ö÷Ìâ·Ö²¼µÄ latent Dirichlet allocation £¨LDA£©¡¢¹À¼Æµã¼¯·Ö²¼µÄ¸ß˹»ìºÏÄ£ÐÍ £¨GMM£©¡¢ÌáȡƵ·±ÏµÄ FP-growth¡¢Éú³Éͼ¾ÛÀàµÄ power iteration clustering £¨PIC£©µÈµÈ¡£ßÀ£¬ÕâЩÎÒÃÇÔÝ·ÅÒ»±ß²»Ì¸¡£MLlib »¹Ìí¼ÓÁË Python µÄ ML Á÷Ë®Ïß½Ó¿Ú¡¢Ä£ÐÍ»ùÓÚ Parquet µÄ´æ´¢¡¢ÒÔ¼°·Ö²¼Ê½·Ö¿é¾ØÕóÄ£ÐÍ¡£ßÀ£¬ÕâЩÎÒÃÇÔÝ·ÅÁíÒ»±ß£¬Ò²²»Ì¸¡­¡­

ÄÇÎÒÃÇ̸Щʲô£¿ÎÒÏë½èÕâ¸ö»ú»áÁÄÁÄ ALS Ëã·¨ºÍÆäÔÚ MLlib ÖеÄʵÏÖ£¬ÌرðÊÇÔÚ Spark 1.3 ÖеĸĽø¡£Ï£Íû¿ÉÒÔÆðµ½Å×שÒýÓñµÄ×÷Óã¬Èøü¶àµÄÈ˹Ø×¢ÔÚ Spark ÉÏʵÏÖ»úÆ÷ѧϰËã·¨»áÓöµ½µÄËã·¨ÖØ¹¹ºÍÔËÐÐЧÂÊÎÊÌâ¡£

ALS ÊÇʲô£¿

ALS Êǽ»Ìæ×îС¶þ³Ë £¨alternating least squares£©µÄ¼ò³Æ¡£ÔÚ»úÆ÷ѧϰµÄÉÏÏÂÎÄÖУ¬ALS ÌØÖ¸Ê¹Óý»Ìæ×îС¶þ³ËÇó½âµÄÒ»¸öÐ­Í¬ÍÆ¼öËã·¨¡£Ëüͨ¹ý¹Û²ìµ½µÄËùÓÐÓû§¸ø²úÆ·µÄ´ò·Ö£¬À´ÍƶÏÿ¸öÓû§µÄϲºÃ²¢ÏòÓû§ÍƼöÊʺϵIJúÆ·¡£¾Ù¸öÀý×Ó£¬ÎÒÃÇ¿¼ÂÇÏÂÃæÕâ¸ö°üº¬Óû§´ò·ÖµÄ´ò·Ö¾ØÕó£º

Õâ¸ö¾ØÕóµÄÿһÐдú±íÒ»¸öÓû§ (u1,u2,...,u9)¡¢Ã¿Ò»Áдú±íÒ»¸ö²úÆ· (v1,v2,¡­,v9)¡£Óû§µÄ´ò·ÖÔÚ 1-9 Ö®¼ä¡£ÎÒÃÇÖ»ÏÔʾ¹Û²ìµ½µÄ´ò·Ö¡£ÄÇôÎÊÌâÀ´ÁË£ºÓû§ u5 ¸ø²úÆ· v4 µÄ´ò·Ö´ó¸Å»áÊǶàÉÙ£¿´ÖÂԵع۲ìһϡ­¡­Õâ²»ÊÇÊý¶Àô£¿Êǵ쬶øÇÒÈç¹û°´ÕÕÊý¶ÀÀ´×öµÄ»°£¨±È½ÏºÄʱ¡¢²»ÍƼö£©£¬Óû§ u5 Ò»¶¨»á¸ø²úÆ· v4 ´ò 9 ·Ö¡£ÎªÊ²Ã´¿´ÉÏȥѡÔñºÜ¶à£¬´ð°¸È´ÊÇΨһµÄ£¿ÒòΪÊý¶ÀµÄ¹æÔòºÜÇ¿£¬Ã¿Ìí¼ÓÒ»Ìõ¹æÔò£¬¾ÍÈÃÕû¸öϵͳµÄ×ÔÓɶÈϽµÒ»¸öÁ¿¼¶¡£µ±ÎÒÃÇÒªÂú×ãËùÓеĹæÔòʱ£¬Õû¸öϵͳµÄ×ÔÓɶÈÒÑÈ»½µÎªÒ»ÁË¡£ÏÖÔÚÇëŬÁ¦µØ°ÑÉÏÃæµÄÊý¶ÀÌâÏë³ÉÒ»¸ö´ò·Ö¾ØÕó¡£Èç¹ûÎÒÃDz»Ìí¼ÓÈκÎÌõ¼þµÄ»°£¬´ò·ÖÖ®¼äÊÇÏ໥¶ÀÁ¢µÄ£¬ÎÒÃÇûÓÐÈκÎÒÀ¾ÝÀ´ÍÆ¶Ï u5 ¸ø v4 µÄ´ò·Ö¡£ËùÒÔÔÚÕâ¸ö´ò·Ö¾ØÕóµÄ»ù´¡ÉÏ£¬ÎÒÃÇÐèÒªÌá³öÒ»¸öÏÞÖÆÆä×ÔÓɶȵĺÏÀí¼ÙÉ裬ʹµÃÎÒÃÇ¿ÉÒÔͨ¹ý¹Û²ìÒÑÓдò·Ö²Â²âδ֪´ò·Ö¡£

ALS µÄºËÐľÍÊÇÏÂÃæÕâ¸ö¼ÙÉ裺´ò·Ö¾ØÕóÊǽüËÆµÍÖȵġ£»»¾ä»°Ëµ£¬Ò»¸ö µÄ´ò·Ö¾ØÕó A ¿ÉÒÔÓÃÁ½¸öС¾ØÕóºÍµÄ³Ë»ýÀ´½üËÆ£º¡£ÕâÑùÎÒÃǾͰÑÕû¸öϵͳµÄ×ÔÓɶȴÓһϽµµ½ÁË¡£µ±È»£¬ÎÒÃÇÒ²¿ÉÒÔËæ±ãÌáÒ»¸ö¼ÙÉè°Ñ×ÔÓɶÈÖ±½Ó½µµ½Ò»¡£ÎÒÃǽÓÏÂÀ´¾ÍÁÄÁÄΪʲô ALS µÄµÍÖȼÙÉèÊǺÏÀíµÄ¡£ÊÀÉÏÍòǧÊÂÎÈËÃǵÄϲºÃ¸÷²»Ïàͬ¡£µ«ÃèÊöÒ»¸öÈ˵ÄϲºÃ¾­³£ÊÇÔÚÒ»¸ö³éÏóµÄµÍά¿Õ¼äÉϽøÐе쬲¢²»ÐèÒª°ÑÆäϲ»¶µÄÊÂÎïÒ»Ò»Áгö¡£¾Ù¸öÀý×Ó£¬ÎÒϲ»¶¿´ÂÔ´øºÚÉ«ÓÄĬµÄ¾¯·ËµçÓ°£¬ÄÇô´ó¼Ò¸ù¾ÝÕâ¸öÃèÊö¾ÍÖªµÀÎÒ´ó¸Å»áϲ»¶À¥Í¡µÄ¡¶µÍË×С˵¡·¡¢¡¶ÂäË®¹·¡·ºÍΤ¼Ò»ÔµÄ¡¶Ò»¸ö×ÖÍ·µÄµ®Éú¡·¡£ÕâЩµçÓ°¶¼·ûºÏÎÒ¶Ô×Ô¼ºÏ²ºÃµÄÃèÊö£¬Ò²¾ÍÊÇ˵ËûÃÇÔÚÕâ¸ö³éÏóµÄµÍά¿Õ¼äµÄͶӰºÍÎÒµÄϲºÃÏàËÆ¡£ÔÙ³éÏóһЩ£¬°ÑÈËÃǵÄϲºÃºÍµçÓ°µÄÌØÕ÷¶¼Í¶µ½Õâ¸öµÍά¿Õ¼ä£¬Ò»¸öÈ˵ÄϲºÃÓ³Éäµ½ÁËÒ»¸öµÍάÏòÁ¿£¬Ò»¸öµçÓ°µÄÌØÕ÷±ä³ÉÁËγ¶ÈÏàͬµÄÏòÁ¿£¬ÄÇôÕâ¸öÈ˺ÍÕâ¸öµçÓ°µÄÏàËÆ¶È¾Í¿ÉÒÔ±íÊö³ÉÕâÁ½¸öÏòÁ¿Ö®¼äµÄÄÚ»ý¡£ ÎÒÃǰѴò·ÖÀí½â³ÉÏàËÆ¶È£¬ÄÇô´ò·Ö¾ØÕóA¾Í¿ÉÒÔÓÉÓû§Ï²ºÃ¾ØÕóºÍ²úÆ·ÌØÕ÷¾ØÕóµÄ³Ë»ýÀ´½üËÆÁË¡£

ÎÒÃÇ´óÖ½âÊÍÁË ALS µÍÖȼÙÉèµÄºÏÀíÐÔ£¬½ÓÏÂÀ´µÄÎÊÌâÊÇÔõôѡÕâ¸ö³éÏóµÄµÍά¿Õ¼ä¡£Õâ¸öµÍά¿Õ¼äÒªÄܹ»ÓÐЧµÄÇø·ÖÊÂÎÈç¹ûÎÒ˵ÎÒϲ»¶¿´ 16:9 ¿íÆÁµÄ²ÊÉ«Á¢ÌåÉùµçÓ°£¬ÄÇÒ»¶¨ÊÇÎÒÕæÐIJ»Ïë͸¶ÎÒµÄϲºÃ¡£µ« ALS ÊǺÜÄÑ´ÓʵÖÊÉÏÀí½â¡°ºÚÉ«ÓÄĬ¡±ºÍ¡°²ÊÉ«¡±µÄÇø±ðÊÇʲôµÄ£¬ËüÐèÒªÒ»¸ö¸üÃ÷È·µÄ¿ÉÒÔÁ¿»¯µÄÄ¿±ê£¬Õâ¾ÍÊÇÖØ¹¹Îó²î¡£¼ÈÈ»ÎÒÃǵļÙÉèÊÇ´ò·Ö¾ØÕóA¿ÉÒÔͨ¹ýÀ´½üËÆ£¬ÄÇôһ¸ö×îÖ±½ÓµÄ¿ÉÒÔÁ¿»¯µÄÄ¿±ê¾ÍÊÇͨ¹ýU,VÖØ¹¹AËù²úÉúµÄÎó²î¡£ÔÚ ALS ÀÎÒÃÇʹÓà Frobenius·¶Êý£¬£¬À´Á¿»¯Öع¹Îó²î£¬¾ÍÊÇÿ¸öÔªËØµÄÖØ¹¹Îó²îµÄƽ·½ºÍ¡£ÕâÀï´æÔÚÒ»¸öÎÊÌ⣬ÎÒÃÇÖ»¹Û²ìµ½²¿·Ö´ò·Ö£¬A ÖеĴóÁ¿Î´ÖªÔªÕýÊÇÎÒÃÇÏëÍÆ¶ÏµÄ£¬ËùÒÔÕâ¸öÖØ¹¹Îó²îÊǰüº¬Î´ÖªÊýµÄ¡£½â¾ö·½°¸ºÜ¼òµ¥ºÜ±©Á¦£º¾ÍÖ»¿´¶ÔÒÑÖª´ò·ÖµÄÖØ¹¹Îó²î°É¡£ËùÒÔ ALS µÄÓÅ»¯Ä¿±êÊÇ£º¡£ÕâÀï R Ö¸¹Û²ìµ½µÄ £¨Óû§£¬²úÆ·£©¼¯¡£

ÎÒÃǰÑÒ»¸öÐ­Í¬ÍÆ¼öµÄÎÊÌâͨ¹ýµÍÖȼÙÉè³É¹¦×ª±ä³ÉÁËÒ»¸öÓÅ»¯ÎÊÌâ¡£ÏÂÃæÒªÌÖÂÛµÄÄÚÈݺÜÏÔÈ»£ºÕâ¸öÓÅ»¯ÎÊÌâÔõô½â£¿Æäʵ´ð°¸ÒѾ­ÔÚ ALS µÄÃû×ÖÀï¸ø³ö¡ª¡ª½»Ìæ×îС¶þ³Ë¡£ALS µÄÄ¿±êº¯Êý²»ÊÇ͹µÄ£¬¶øÇÒ±äÁ¿»¥ÏàñîºÏÔÚÒ»Æð£¬ËùÒÔËü²¢²»ËãºÃ½â¡£µ«Èç¹ûÎÒÃǰÑÓû§ÌØÕ÷¾ØÕóUºÍ²úÆ·ÌØÕ÷¾ØÕóV¹Ì¶¨ÆäÒ»£¬Õâ¸öÎÊÌâÁ¢¿Ì±ä³ÉÁËÒ»¸ö͹µÄ¶øÇҿɲð·ÖµÄÎÊÌâ¡£±ÈÈçÎÒÃǹ̶¨U£¬ÄÇôĿ±êº¯Êý¾Í¿ÉÒÔд³É¡£ÆäÖйØÓÚÿ¸ö²úÆ·ÌØÕ÷µÄ²¿·ÖÊǶÀÁ¢µÄ£¬Ò²¾ÍÊÇ˵¹Ì¶¨UÇóÎÒÃÇÖ»ÐèÒª×îС»¯¾ÍºÃÁË£¬Õâ¸öÎÊÌâ¾ÍÊǾ­µäµÄ×îС¶þ³ËÎÊÌâ¡£Ëùν¡°½»Ì桱£¬¾ÍÊÇÖ¸ÎÒÃÇÏÈËæ»úÉú³ÉÈ»ºó¹Ì¶¨ËüÇó½â£¬Ôٹ̶¨Çó½â£¬ÕâÑù½»Ìæ½øÐÐÏÂÈ¥¡£ÒòΪÿ²½µü´ú¶¼»á½µµÍÖØ¹¹Îó²î£¬²¢ÇÒÎó²îÊÇÓÐϽçµÄ£¬ËùÒÔ ALS Ò»¶¨»áÊÕÁ²¡£µ«ÓÉÓÚÎÊÌâÊÇ·Ç͹µÄ£¬ALS ²¢²»±£Ö¤»áÊÕÁ²µ½È«¾Ö×îÓŽ⡣µ«ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ALS ¶Ô³õʼµã²»ÊǺÜÃô¸Ð£¬ÊDz»ÊÇÈ«¾Ö×îÓŽâÔì³ÉµÄÓ°Ïì²¢²»´ó¡£

ALS ÔÚ MLlib ÖеÄʵÏÖ

ALS µÄËã·¨½éÉÜÍêÁË£¬µ«ÎÒÃǾàÀëÒ»¸öºÃµÄ·Ö²¼Ê½ÊµÏÖ»¹ÓÐÒ»¶Î¾àÀë¡£ÒòΪ ALS ÿ²½µü´úÖÐÓÅ»¯ÎÊÌâµÄÄ¿±êº¯Êý¿ÉÒÔ²ð·Ö³É»¥Ïà¶ÀÁ¢µÄ×îС¶þ³Ë×ÓÎÊÌ⣬ËùÒÔ´Ó¼ÆËãµÄ½Ç¶ÈÀ´¿´ ALS ÊÇÊʺϷֲ¼Ê½Çó½âµÄ¡£µ«Í¨¹ý¹Û²ìÒ»¸ö×ÓÎÊÌ⣬ÎÒÃǻᷢÏÖÇó½â vjÊÇÐèÒªÖªµÀÉÏÒ»²½µÃµ½µÄÿ¸öÒÑÖª´ò·Ö¶ÔÓ¦µÄµÄÖµ¡£Èç¹û·Ö²¼Ê½Çó½â£¬ÎÒÃÇ¿ÉÄÜ»áÐèÒª´ÓÆäËü½Úµã»ñÈ¡ÕâЩÊý¾Ý£¬´Ó¶ø²úÉúͨÐÅ·ÑÓ᣺ͺܶà»úÆ÷ѧϰËã·¨µÄ·Ö²¼ÊµÏÖÀàËÆ£¬ALS µÄ·Ö²¼Ê½ÊµÏÖÖ÷Òª¹ØÐĵÄÊǼÆË㸴ÔӶȺÍͨП´ÔÓ¶È¡£

¼ÆË㸴ÔӶȱȽÏÈÝÒ×¹ÀË㣬ËùÒÔÎÒÃÇÏȽ²¡£Çó½âÒ»¸öµÄ×îС¶þ³ËÎÊÌâµÄ¸´ÔÓ¶ÈÊÇ¡£µ±¹Ì¶¨UÇóVʱ£¬ÎÒÃÇÒ»¹²ÓÐn¸ö×îС¶þ³Ë×ÓÎÊÌ⣬ËùÒÔ×ܵĸ´ÔÓ¶ÈÊÇ£¬ÆäÖÐ nnz Ö¸¹Û²ìµ½µÄ´ò·ÖÊýÁ¿¡£ÔÙ¼ÓÉϹ̶¨VÇóUµÄ¸´ÔÓ¶È£¬Ò»²½ÍêÕûµÄµü´úÐèÒªµÄ¼ÆËãÁ¿¾ÍÊÇ¡£MLlib ÖÐµÄ ALS ʵÏÖͨ¹ý·¨·½³Ì (normal equation) Çó½â×îС¶þ³Ë×ÓÎÊÌ⣬ÐèÒªµÄ¿Õ¼ä¸´ÔÓ¶ÈÊÇ¡£×îС¶þ³ËÓкܶàÖÖÇó½â·½·¨£¬ÕâÀïΪʲôѡ·¨·½³ÌÒÔ¼°ÆäÇó½â¾«¶ÈÎÒÃǾÍÂÔÈ¥²»Ì¸ÁË¡£

ͨП´ÔÓ¶ÈÊÇ·Ö²¼Ê½ÊµÏÖÒ»¸öË㷨ʱһ¶¨ÒªÖص㿼ÂǵÄÎÊÌ⣬ÉÔÓв»É÷¾Í»áµ¼ÖÂÊ®±¶ÉõÖÁ°Ù±¶µÄЧÂÊËðʧ¡£ÎÒÃÇÏÈ¿´Ò»ÏÂ×µÄÇé¿ö£º¼ÙÉèÇó½âʱËùÐèÒªµÄÓû§ÌØÕ÷¶¼ÐèÒª´ÓÆäËü½Úµã»ñÈ¡£¬²¢ÇÒ×ÓÎÊÌâÖ®¼äÍêÈ«¶ÀÁ¢¡£ÀýÈçͼ1Ëùʾ£¬Çó½â v1 ÐèÒª»ñÈ¡ u1 ºÍ u2£¬Çó½â v2 ÐèÒª»ñÈ¡ u1¡¢u2 ºÍ u3µÈµÈ¡£ÕâÖÖ¼ÙÉèÏÂÿ²½µü´úÐèÒª½»»»µÄÊý¾ÝÁ¿ÊÇ£¬±ÈÊäÈëÊý¾ÝÒª¸ßÒ»¸öÁ¿¼¶¡£ËäÈ»»¹ÊDZÈÿ²½µü´úÐèÒªµÄ¼ÆËãÁ¿µÍÒ»¸öÁ¿¼¶£¬µ«ÓÉÓÚkÒ»°ã²»´ó£¬¶øÇÒ×öÒ»¸ö¸¡µãÔËËã±Èͨ¹ýÍøÂç´«ÊäÒ»¸ö×Ö½ÚÒª¿ìºÜ¶à£¬ËùÒÔÔÚÕâÖÖÇé¿öÏÂͨÐÅʱ¼ä»áÔ¶Ô¶³¬³ö¼ÆËãʱ¼ä¡£


ͼ1£ºÍ¨ÐŸ´ÔÓ¶ÈʾÀýͼ

ΪÁËÔÚ Spark ÉÏÌṩһ¸ö¸ßЧµÄ ALS ʵÏÖ£¬ÎÒÃÇÐèÒªºÏÀíµÄÉè¼ÆÊý¾Ý·ÖÇøºÍ RDD »º´æÀ´¼õÉÙÊý¾Ý½»»»¡£´ÓÉÏÃæµÄͼÎÒÃÇ»á¹Û²ìµ½£¬Èç¹û¼ÆËã v1 ºÍ v2 ÊÇÔÚͬһ¸ö·ÖÇøÉÏÍê³ÉµÄ£¬ÎÒÃÇÖ»ÐèÒª°Ñ u1 ºÍ u2 Ò»´Î·¢¸øÕâ¸ö·ÖÇø£¬È»ºóÔÚ¼ÆËã v1 ºÍ v2 µÄʱʱºòÔÚ±¾»úÄÚ´æÖ±½Ó¶ÁÈ¡ u1 ºÍ u2 ¼´¿É¡£ ÕâÑù¾ÍÊ¡µôÁ˲»±ØÒªµÄÊý¾Ý´«Ê䡣ͼ2ÃèÊöÁËÈçºÎÔÚ·ÖÇøµÄÇé¿öÏÂͨ¹ý UÀ´Çó½âV£¬×¢Òâ½ÚµãÖ®¼äµÄÊý¾Ý½»»»Á¿¼õÉÙÁË¡£Ê¹ÓÃÕâÖÖ·ÖÇø½á¹¹£¬ÎÒÃÇÐèÒªÔÚԭʼ´ò·ÖÊý¾ÝµÄ»ù´¡É϶îÍâ±£´æÒ»Ð©ÐÅÏ¢¡£ÔÚ P1£¬ÎÒÃÇÒªÖªµÀ°Ñ u1 ·¢¸ø Q1 ºÍ Q2£¬°Ñ u2 ·¢¸ø Q1¡£ÎÒÃÇ¿ÉÒԲ鿴ºÍ u1 Ïà¹ØÁªµÄËùÓвúÆ·À´È·¶¨ÐèÒª°Ñ u1 ·¢¸øË­£¬µ«Ã¿´Îµü´ú¶¼É¨Ò»±éÊý¾ÝÊǺܲ»»®ËãµÄ¡£ËùÒÔÔÚ MLlib µÄʵÏÖÖÐÎÒÃÇÖ»¼ÆËãÒ»´ÎÕâ¸öÐÅÏ¢£¬È»ºó°Ñ½á¹ûͨ¹ý RDD »º´æÆðÀ´Öظ´Ê¹Óá£Õⲿ·ÖÊý¾ÝÎÒÃÇÔÚ´úÂëÀï³Æ×÷ OutBlock¡£ÔÚ Q1£¬ÎÒÃÇÐèÒªÖªµÀ v1 ºÍÄÄЩÓû§ÏòÁ¿ÓйØÁª¼°Æä¶ÔÓ¦µÄ´ò·Ö£¬´Ó¶ø¹¹½¨×îС¶þ³ËÎÊÌâ²¢Çó½â¡£Õⲿ·ÖÊý¾Ý²»½ö°üº¬Ô­Ê¼´ò·ÖÊý¾Ý£¬»¹°üº¬´Óÿ¸öÓû§·ÖÇøÊÕµ½µÄÏòÁ¿ÅÅÐòÐÅÏ¢£¬ÎÒÃÇÔÚ´úÂëÀï³Æ×÷ InBlock¡£ËùÒÔ´Ó U Çó½â V£¬ÎÒÃÇÐèҪͨ¹ýÓû§µÄ OutBlock ÐÅÏ¢°ÑÓû§ÏòÁ¿·¢¸ø²úÆ··ÖÇø£¬È»ºóͨ¹ý²úÆ·µÄ InBlock ÐÅÏ¢¹¹½¨×îС¶þ³ËÎÊÌâ²¢Çó½â¡£´Ó V Çó½â U£¬ÎÒÃÇÐèÒª²úÆ·µÄ OutBlock ÐÅÏ¢ºÍÓû§µÄ InBlock ÐÅÏ¢¡£ËùÓÐµÄ InBlock ºÍ OutBlock ÐÅÏ¢ÔÚµü´ú¹ý³ÌÖж¼Í¨¹ý RDD »º´æ¡£´ó¼Ò»á·¢ÏÖԭʼµÄ´ò·ÖÊý¾ÝÆäʵÔÚÓû§µÄ InBlock ºÍ²úÆ·µÄ InBlock ¸÷´æÁËÒ»·Ý£¬µ«·ÖÇø·½Ê½²»Í¬£¬Õâô×ö¿ÉÒÔ±ÜÃâÔÚµü´ú¹ý³ÌÖжÔԭʼÊý¾ÝµÄ½»»»¡£


ͼ2£ºÊý¾Ý·ÖÇøÉè¼ÆºóµÄͨП´ÔÓ¶È

½ÓÏÂÀ´ÎÒÃÇÌÖÂÛһϠInBlock µÄÊý¾Ý½á¹¹¡£ÒÔ Q1 ΪÀý£¬ÎÒÃÇÒªÖªµÀËùÓйØÓÚ v1 ºÍ v2 µÄËùÓдò·Ö£º(v1, u1, a11)£¬(v2, u1, a12)£¬ (v1, u2, a21)£¬ (v2, u2, a22)£¬ (v2, u3, a32)¡£µ«ÊǰÑÕâЩ´ò·ÖÖ±½Ó°´ÕÕ Tuple ´æµÄ»°»áÓм¸¸öÎÊÌâ¡£Ê×ÏÈÊǿռäµÄ¶îÍ⿪Ïú£¬Ã¿¸ö Tuple ʵÀý¶¼ÐèÒªÒ»¸öÖ¸Õ룬¶øÃ¿¸ö Tuple Ëù´æµÄÊý¾Ý²»¹ýÊÇÁ½¸ö ID ºÍÒ»¸ö´ò·Ö£¬·Ç³£²»»®Ëã¡£¶øÇÒ´æ´¢´óÁ¿µÄ Tuple ʵÀý»á½µµÍ Java À¬»ø»ØÊÕЧÂÊ¡£ËùÒÔÎÒÃÇʹÓÃÈý¸öԭʼÊý×éÀ´´æ InBlock ÐÅÏ¢£º([v1, v2, v1, v2, v2], [u1, u1, u2, u2, u3], [a11, a12, a21, a22, a32])¡£ÕâÑù²»½ö´ó·ù¼õÉÙÁËʵÀýÊýÁ¿£¬»¹ÓÐЧµØÀûÓÃÁËÁ¬ÐøÄÚ´æ¡£µ«»¹´æÔÚÒ»¸öÎÊÌ⣬µ±ÎÒÃÇÇó½â v1 ʱ£¬ÎÒÃÇҪͨ¹ýËùÓÐºÍ v1 ¹ØÁªµÄÓû§ÏòÁ¿ (u1, u2) À´¹¹½¨×îС¶þ³ËÎÊÌâ¡£ÕâÀïÓÐÁ½¸öÑ¡Ôñ£ºa) ɨһ±é InBlock ÐÅÏ¢£¬Í¬Ê±¶ÔËùÓеIJúÆ·¹¹½¨¶ÔÓ¦µÄ×îС¶þ³ËÎÊÌ⣻b) ¶ÔÓÚÿһ¸ö²úÆ·£¬É¨Ãè InBlock ÐÅÏ¢£¬¹¹½¨²¢Çó½âÆä¶ÔÓ¦µÄ×îС¶þ³ËÎÊÌ⡣֮ǰÌáµ½¹ýͨ¹ý·¨·½³ÌÇó½âÒ»¸ö×îС¶þ³ËÎÊÌâµÄ¿Õ¼ä¸´ÔÓ¶ÈÊÇ£¬ËùÒÔ·½·¨ a ËùÐèÒªµÄ¿Õ¼äÊÇ£¬±È´æ´¢²úÆ·ÏòÁ¿ËùÐè¿Õ¼ä¸ß³öÒ»¸öÁ¿¼¶¡£¶ø·½·¨ b Ò²²»ËãÀíÏ룬ÒòΪҪ¶Ô InBlock ÐÅÏ¢¶à´ÎɨÃè¡£ÔÚSpark 1.3 ÀÎÒÃÇÊ×ÏȽ« InBlock ÐÅÏ¢°´ÕÕ²úÆ· ID ÅÅÐò£º ([v1, v1, v2, v2, v2],[u1, u2, u1, u2, u3], [a11, a21, a12, a22, a32])¡£ÕâÑùÎÒÃÇÖ»ÐèҪ˳ÐòɨÃèÒ»±éÊý¾Ý£¬¾Í¿ÉÒÔÖð¸ö´´½¨×îС¶þ³ËÎÊÌâ²¢Çó½â£¬ÕâÑùËùÐèµÄ¿Õ¼ä½µµ½ÁË¡£ÔÚ Java ÀォÈý¸öºÜ´óµÄԭʼÊý×é¸ù¾Ýijһ¸öÅÅÐò²¢²»ÊǼþºÜÈÝÒ×µÄÊÂÇé¡£ÎÒÃÇʹÓà Spark ÖÐµÄ TimSort ʵÏÖÀ´ÅÅÐò£¬ÕâÒ²ÊÇÔÚ Petabyte Sort ±ÈÈüÖÐ Databricks С×éËùʹÓõÄÅÅÐòËã·¨¡£ÅÅÐòºóµÄÁíÍâÒ»¸öºÃ´¦ÊÇÎÒÃÇ¿ÉÒÔ°ÑÊý¾Ý½øÒ»²½Ñ¹Ëõ¡£¶ÔÓÚÿһ¸ö²úÆ·£¬ÎÒÃÇÖ»Ðè¼Í¼ËüËù¶ÔÓ¦µÄ´ò·Ö¿ªÊ¼ºÍ½áÊøµÄλÖü´¿É¡£InBlock ¾Í±ä³ÉÁËÕâÑù£º([v1, v2], [0, 2, 5], [u1, u2, u1, u2, u3], [a11, a21, a12, a22, a32])¡£ÆäÖÐ [0, 2] Ö¸ v1 ¶ÔÓ¦µÄ´ò·ÖµÄÇø¼äÊÇ [0, 2)£¬[2, 5] Ö¸ v2 ¶ÔÓ¦µÄ´ò·ÖµÄÇø¼äÊÇ [2, 5)¡£Í¨¹ýһϵÁеĵ÷Õû£¬ÎÒÃÇÔÚÄÚ´æÊ¹Óá¢Ê±¼äºÍ¿Õ¼ä¸´ÔÓ¶ÈÉ϶¼´ïµ½Á˽ϺõÄЧ¹û¡£

ÔÚ Spark 1.3 ÖУ¬ÎÒÃÇ»¹¶Ô ALS ×öÁËһЩÆäËüµÄ¸Ä½ø¡£ÎªÁ˱ÜÃâ²»±ØÒªµÄ map ²éѯºÍÖ§³Ö¶àÖÖ ID ÀàÐÍ£¬ÎÒÃÇÔÚʵÏÖÖв¢Ã»ÓÐÖ±½ÓÔÚ InBlock Öд洢Óû§µÄԭʼ ID£¬¶øÖ»¼Ç¼ÁËÐèÒªµÄÓû§ÏòÁ¿Ó¦¸ÃÊÇÄĸö·ÖÇø·¢¹ýÀ´µÄµÚ¼¸¸ö¡£±ÈÈçÔÚ Q1 ·ÖÇø £¬u2 ¾ÍÊÇ´Ó P1 ·¢¹ýÀ´µÄµÚ¶þ¸ö£¬¶ø u2 ԭʼµÄ ID ÊǶàÉÙ²¢²»Ó°ÏìÎÊÌâµÄÇó½â¡£ÎÒÃǰѷÖÇøºÍË÷ÒýÐÅÏ¢±àÂëµ½Ò»¸öÕûÐÍÀÔÚ¸ßλ´æ·ÖÇø ID£¬ÔÚµÍλ´æ¶ÔÓ¦·ÖÇøµÄË÷Òý£¬ÔÚ¿Õ¼äÉÏÒ²¾¡Á¿×öµ½²»ÀË·Ñ¡£´ËÍ⣬ÒòΪ ALS ¶ÔÇó½âµÄ¾«¶ÈÒªÇ󲻸ߣ¬ÎªÁ˼õÉÙÊý¾Ý½»»»Á¿£¬ÎÒÃǰÑSpark 1.2 ÖÐʹÓÃµÄ Double ¸Ä³ÉÁË Float À´´æ´¢Óû§ºÍ²úÆ·ÏòÁ¿¡£»¹ÓÐһЩÓÅ»¯ÎÒÃǾͲ»Ò»Ò»Ìá¼°ÁË£¬ÓÐÐËȤµÄ¶ÁÕß¿ÉÒԲο´ ALS Ô´ÂëÒÔ¼°Ïà¹ØµÄ JIRA¡£

ͨ¹ý¶ÔʵÏֵĸĽø£¬Ð°æµÄ ALS ÔÚËÙ¶È¡¢×ÊÔ´ºÍÎȶ¨ÐÔÉ϶¼Óдó·ù¶ÈÌáÉý¡£ÏÂͼÊÇÎÒÃÇÔÚ Amazon Reviews Êý¾Ý¼¯ÉÏ×öµÄһЩ±È½Ï¡£²âÊÔʹÓà 16 ¸ö m3.2xlarge ½ÚµãµÄ Amazon EC2 ¼¯Èº¡£¿ÉÒÔ¿´µ½£¬ALS ÔÚËÙ¶ÈÉÏ¶Ô±È Spark 1.2 ÓÐ 2-4x µÄÌáÉý£¬¶øÇÒ±íÏÖ³öÁ˸üºÃµÄÉìËõÐÔ¡£ÎÒÃÇ»¹ÔÚ¸ü´óµÄ¼¯ÈºÉϲâÊÔÁËÒ»¸ö´ó¸ÅÓÐ 500 ÒÚ´ò·ÖµÄÊý¾Ý¼¯£¬ALS ±íʾÎÞѹÁ¦¡£

С½á

±¾Îļòµ¥½éÉÜÁË ALS Ëã·¨ºÍÆäÔÚ MLlib ÖеÄʵÏÖ¡£Ï£Íûͨ¹ý·ÖÎö ALS ¿ÉÒÔÈôó¼ÒÖ±¹ÛµÄ¿´µ½£¬Í¬ÑùµÄËã·¨£¬ÔÚ·Ö²¼Ê½ÏµÍ³ÉÏʵÏÖʱ£¬²»Í¬µÄÑ¡Ôñ»á´øÀ´ÐÔÄÜÉϾ޴óµÄ²îÒì¡£´ó¼ÒÔÚ Spark ÉÏʵÏÖ»úÆ÷ѧϰË㷨ʱ£¬²»·ÁÏÈ·ÖÎöһϿռ䡢ʱ¼ä¡¢ºÍͨП´ÔÓ¶È£¬È»ºóºÏÀíµÄÀûÓà Spark µÄ·ÖÇøºÍ»º´æ»úÖÆ×öµ½¸ßЧµÄʵÏÖ¡£Ï£ÍûÔÚ 2015 Äê¿´µ½¸ü¶àµÄÈ˼ÓÈë MLlib µÄ¿ª·¢ºÍά»¤£¬Èà MLlib µÄËã·¨¸üºÃ¸ü¿ì¸üÒ×Óã¡

ÃÏÏéÈð£¬Databricks Èí¼þ¹¤³Ìʦ¡¢Apache Spark PMC³ÉÔ± £¬Apache Spark Committer¡£

   
3010 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ