Spark MLlib - ไลบรารีการเรียนรู้ของเครื่องของ Apache Spark



บล็อก Spark MLlib นี้จะแนะนำให้คุณรู้จักกับไลบรารี Machine Learning ของ Apache Spark รวมถึงโปรเจ็กต์ Movie Recommendation System โดยใช้ Spark MLlib

สปาร์ค MLlib คือส่วนประกอบ Machine Learning ของ Apache Sparkสิ่งที่น่าสนใจอย่างหนึ่งของ Spark คือความสามารถในการปรับขนาดการคำนวณจำนวนมากและนั่นคือสิ่งที่คุณต้องการสำหรับอัลกอริทึมการเรียนรู้ของเครื่อง แต่ข้อ จำกัด คืออัลกอริทึมการเรียนรู้ของเครื่องทั้งหมดไม่สามารถขนานกันได้อย่างมีประสิทธิภาพ แต่ละอัลกอริทึมมีความท้าทายของตัวเองสำหรับการขนานไม่ว่าจะเป็นงานขนานหรือความขนานของข้อมูล

ต้องบอกว่า Spark กลายเป็นแพลตฟอร์มสำหรับการสร้างอัลกอริทึมและแอปพลิเคชันแมชชีนเลิร์นนิงคุณสามารถตรวจสอบไฟล์ ดูแลโดยผู้เชี่ยวชาญในอุตสาหกรรมก่อนที่จะดำเนินการต่อในบล็อกนักพัฒนาที่ทำงานกับ Spark MLlib กำลังใช้อัลกอริธึมของเครื่องมากขึ้นเรื่อย ๆ ในลักษณะที่ปรับขนาดได้และรัดกุมใน Spark framework ในบล็อกนี้เราจะได้เรียนรู้แนวคิดของ Machine Learning, Spark MLlib, ยูทิลิตี้, อัลกอริทึมและกรณีการใช้งานที่สมบูรณ์ของ Movie Recommendation System





หัวข้อต่อไปนี้จะกล่าวถึงในบล็อกนี้:

  1. Machine Learning คืออะไร?
  2. ภาพรวม Spark MLlib
  3. เครื่องมือ Spark MLlib
  4. อัลกอริทึม MLlib
  5. Use Case - ระบบแนะนำภาพยนตร์

Machine Learning คืออะไร?

วิวัฒนาการมาจากการศึกษาเกี่ยวกับการจดจำรูปแบบและทฤษฎีการเรียนรู้เชิงคำนวณในปัญญาประดิษฐ์แมชชีนเลิร์นนิงจะสำรวจการศึกษาและการสร้างอัลกอริทึมที่สามารถเรียนรู้และคาดเดาข้อมูลได้อัลกอริทึมดังกล่าวเอาชนะคำสั่งของโปรแกรมแบบคงที่อย่างเคร่งครัดโดยการคาดการณ์หรือตัดสินใจที่ขับเคลื่อนด้วยข้อมูล ผ่านการสร้างแบบจำลองจากปัจจัยการผลิตตัวอย่าง



การเรียนรู้ของเครื่อง - Spark MLlib - Edureka รูป: เครื่องมือ Machine Learning

แมชชีนเลิร์นนิงมีความเกี่ยวข้องอย่างใกล้ชิดกับสถิติการคำนวณซึ่งมุ่งเน้นไปที่การทำนายผ่านการใช้คอมพิวเตอร์ มีความสัมพันธ์อย่างมากกับการเพิ่มประสิทธิภาพทางคณิตศาสตร์ซึ่งส่งมอบวิธีการทฤษฎีและโดเมนแอปพลิเคชันไปยังฟิลด์ ภายในสาขาการวิเคราะห์ข้อมูลการเรียนรู้ของเครื่องเป็นวิธีการที่ใช้ในการประดิษฐ์แบบจำลองและอัลกอริทึมที่ซับซ้อนซึ่งช่วยให้สามารถคาดการณ์ได้ซึ่งในเชิงพาณิชย์เรียกว่าการวิเคราะห์เชิงคาดการณ์

งานแมชชีนเลิร์นนิงมีสามประเภท:



  1. การเรียนรู้ภายใต้การดูแล : การเรียนรู้ภายใต้การดูแลคือการที่คุณมีตัวแปรอินพุต (x) และตัวแปรเอาต์พุต (Y) และคุณใช้อัลกอริทึมเพื่อเรียนรู้ฟังก์ชันการทำแผนที่จากอินพุตไปยังเอาต์พุต
  2. การเรียนรู้ที่ไม่มีการดูแล : การเรียนรู้ที่ไม่มีผู้ดูแลคืออัลกอริทึมการเรียนรู้ของเครื่องประเภทหนึ่งที่ใช้ในการวาดการอนุมานจากชุดข้อมูลซึ่งประกอบด้วยข้อมูลอินพุตที่ไม่มีการตอบสนอง
  3. การเรียนรู้เสริมแรง : โปรแกรมคอมพิวเตอร์โต้ตอบกับสภาพแวดล้อมแบบไดนามิกซึ่งจะต้องทำเป้าหมายบางอย่าง (เช่นขับรถหรือเล่นเกมกับคู่ต่อสู้) โปรแกรมจะให้ข้อเสนอแนะในแง่ของรางวัลและการลงโทษในขณะที่สำรวจพื้นที่ปัญหาแนวคิดนี้เรียกว่าการเรียนรู้แบบเสริมแรง

ภาพรวม Spark MLlib

Spark MLlib ใช้เพื่อทำการเรียนรู้ของเครื่องใน Apache Spark MLlib ประกอบด้วยอัลกอริทึมและยูทิลิตี้ยอดนิยม

ภาพรวม MLlib:

  • spark.mllib มี API ดั้งเดิมที่สร้างขึ้นบน RDD ขณะนี้อยู่ในโหมดการบำรุงรักษา
  • spark.ml ให้ API ระดับที่สูงขึ้นที่สร้างขึ้นบน DataFrames สำหรับการสร้างท่อ ML spark.ml เป็น Machine Learning API หลักสำหรับ Spark ในขณะนี้

เครื่องมือ Spark MLlib

Spark MLlib มีเครื่องมือดังต่อไปนี้:

  • อัลกอริทึม ML: ML Algorithms เป็นแกนหลักของ MLlib ซึ่งรวมถึงอัลกอริธึมการเรียนรู้ทั่วไปเช่นการจัดหมวดหมู่การถดถอยการจัดกลุ่มและการกรองการทำงานร่วมกัน
  • Featurization: Featurization รวมถึงการแยกคุณลักษณะการเปลี่ยนแปลงการลดขนาดและการเลือก
  • ท่อส่ง: ท่อส่งเครื่องมือสำหรับสร้างประเมินและปรับแต่ง ML Pipelines
  • วิริยะ: ความคงทนช่วยในการบันทึกและโหลดอัลกอริธึมโมเดลและไปป์ไลน์
  • ยูทิลิตี้: ยูทิลิตี้สำหรับพีชคณิตเชิงเส้นสถิติและการจัดการข้อมูล

อัลกอริทึม MLlib

อัลกอริทึมและยูทิลิตี้ยอดนิยมใน Spark MLlib ได้แก่ :

  1. สถิติพื้นฐาน
  2. การถดถอย
  3. การจัดหมวดหมู่
  4. ระบบคำแนะนำ
  5. การทำคลัสเตอร์
  6. การลดขนาด
  7. คุณสมบัติการสกัด
  8. การเพิ่มประสิทธิภาพ

ให้เราดูรายละเอียดบางส่วนเหล่านี้

สถิติพื้นฐาน

สถิติพื้นฐาน รวมถึงเทคนิคพื้นฐานที่สุดของการเรียนรู้ของเครื่อง ซึ่งรวมถึง:

  1. สรุปสถิติ : ตัวอย่าง ได้แก่ ค่าเฉลี่ยความแปรปรวนจำนวนสูงสุดค่าต่ำสุดและจำนวนนับเลขศูนย์
  2. สหสัมพันธ์ : Spearman และ Pearson เป็นวิธีค้นหาความสัมพันธ์
  3. การสุ่มตัวอย่างแบบแบ่งชั้น : ซึ่งรวมถึง sampleBykey และ sampleByKeyExact
  4. การทดสอบสมมติฐาน : การทดสอบไคสแควร์ของ Pearson เป็นตัวอย่างของการทดสอบสมมติฐาน
  5. การสร้างข้อมูลแบบสุ่ม : RandomRDDs, Normal และ Poisson ใช้ในการสร้างข้อมูลแบบสุ่ม

การถดถอย

การถดถอย การวิเคราะห์เป็นกระบวนการทางสถิติสำหรับการประมาณความสัมพันธ์ระหว่างตัวแปร ประกอบด้วยเทคนิคมากมายสำหรับการสร้างแบบจำลองและการวิเคราะห์ตัวแปรหลายตัวเมื่อโฟกัสอยู่ที่ความสัมพันธ์ระหว่างตัวแปรตามและตัวแปรอิสระอย่างน้อยหนึ่งตัว โดยเฉพาะอย่างยิ่งการวิเคราะห์การถดถอยช่วยให้เราเข้าใจว่าค่าทั่วไปของตัวแปรตามเปลี่ยนแปลงอย่างไรเมื่อตัวแปรอิสระตัวใดตัวหนึ่งมีความแตกต่างกันในขณะที่ตัวแปรอิสระอื่น ๆ จะคงที่

การวิเคราะห์การถดถอยใช้กันอย่างแพร่หลายสำหรับการทำนายและการคาดการณ์โดยที่การใช้งานมีความทับซ้อนอย่างมากกับสาขาการเรียนรู้ของเครื่อง การวิเคราะห์การถดถอยยังใช้เพื่อทำความเข้าใจว่าตัวแปรอิสระใดที่เกี่ยวข้องกับตัวแปรตามและเพื่อสำรวจรูปแบบของความสัมพันธ์เหล่านี้ ในสถานการณ์ที่ จำกัด การวิเคราะห์การถดถอยสามารถใช้เพื่อสรุปความสัมพันธ์เชิงสาเหตุระหว่างตัวแปรอิสระและตัวแปรตาม

การจัดหมวดหมู่

การจัดหมวดหมู่ เป็นปัญหาในการระบุว่าชุดของหมวดหมู่ใด (ประชากรย่อย) ที่เป็นของการสังเกตใหม่บนพื้นฐานของชุดข้อมูลการฝึกอบรมที่มีข้อสังเกต (หรืออินสแตนซ์) ซึ่งทราบความเป็นสมาชิกหมวดหมู่ เป็นตัวอย่างของการจดจำรูปแบบ

ในที่นี้จะเป็นตัวอย่างการกำหนดอีเมลที่ระบุในชั้นเรียน 'สแปม' หรือ 'ไม่ใช่สแปม' หรือกำหนดการวินิจฉัยให้กับผู้ป่วยรายหนึ่งตามที่อธิบายโดยลักษณะที่สังเกตได้ของผู้ป่วย (เพศความดันโลหิตการมีหรือไม่มีอาการบางอย่าง ฯลฯ ).

ระบบคำแนะนำ

ถึง ระบบคำแนะนำ เป็นคลาสย่อยของระบบการกรองข้อมูลที่พยายามคาดคะเน“ การให้คะแนน” หรือ“ ความชอบ” ที่ผู้ใช้จะมอบให้กับสินค้า ระบบผู้แนะนำได้รับความนิยมมากขึ้นในช่วงไม่กี่ปีที่ผ่านมาและมีการใช้งานในด้านต่างๆเช่นภาพยนตร์เพลงข่าวหนังสือบทความวิจัยข้อความค้นหาแท็กโซเชียลและผลิตภัณฑ์โดยทั่วไป

โดยทั่วไประบบผู้แนะนำจะจัดทำรายการคำแนะนำด้วยวิธีใดวิธีหนึ่งจากการทำงานร่วมกันและการกรองตามเนื้อหาหรือแนวทางตามบุคลิกภาพ

  1. การกรองร่วมกัน แนวทางการสร้างแบบจำลองจากพฤติกรรมในอดีตของผู้ใช้ (รายการที่ซื้อก่อนหน้านี้หรือที่เลือกไว้และ / หรือการให้คะแนนเป็นตัวเลขที่มอบให้กับสินค้าเหล่านั้น) รวมถึงการตัดสินใจที่คล้ายกันของผู้ใช้รายอื่น จากนั้นโมเดลนี้จะใช้ในการทำนายรายการ (หรือการให้คะแนนสำหรับสินค้า) ที่ผู้ใช้อาจมีความสนใจ
  2. การกรองตามเนื้อหา วิธีการใช้ชุดลักษณะที่ไม่ต่อเนื่องของรายการเพื่อแนะนำรายการเพิ่มเติมที่มีคุณสมบัติคล้ายคลึงกัน

นอกจากนี้แนวทางเหล่านี้มักจะรวมกันเป็นระบบผู้แนะนำแบบไฮบริด

การทำคลัสเตอร์

การทำคลัสเตอร์ เป็นงานในการจัดกลุ่มชุดของวัตถุในลักษณะที่วัตถุในกลุ่มเดียวกัน (เรียกว่าคลัสเตอร์) มีความคล้ายคลึงกัน (ในบางแง่หรืออย่างอื่น) ซึ่งกันและกันมากกว่ากลุ่มอื่น ๆ (คลัสเตอร์) ดังนั้นจึงเป็นงานหลักของการขุดข้อมูลเชิงสำรวจและเป็นเทคนิคทั่วไปสำหรับการวิเคราะห์ข้อมูลทางสถิติซึ่งใช้ในหลายสาขารวมถึงการเรียนรู้ของเครื่องการจดจำรูปแบบการวิเคราะห์ภาพการดึงข้อมูลชีวสารสนเทศการบีบอัดข้อมูลและคอมพิวเตอร์กราฟิก

การลดขนาด

การลดขนาด เป็นกระบวนการลดจำนวนตัวแปรสุ่มที่อยู่ระหว่างการพิจารณาโดยการรับชุดของตัวแปรหลัก สามารถแบ่งออกเป็นการเลือกคุณลักษณะและการแยกคุณลักษณะ

  1. การเลือกคุณสมบัติ: การเลือกคุณลักษณะจะค้นหาตัวแปรดั้งเดิมบางส่วน (เรียกอีกอย่างว่าคุณลักษณะหรือแอตทริบิวต์)
  2. การสกัดคุณสมบัติ: สิ่งนี้จะแปลงข้อมูลในพื้นที่มิติสูงไปเป็นช่องว่างที่มีมิติน้อยลง การแปลงข้อมูลอาจเป็นแบบเชิงเส้นเช่นเดียวกับใน Principal Component Analysis (PCA) แต่ก็มีเทคนิคการลดขนาดที่ไม่ใช่เชิงเส้นอีกมากมาย

คุณสมบัติการสกัด

คุณสมบัติการสกัด เริ่มต้นจากชุดข้อมูลที่วัดได้เริ่มต้นและสร้างค่าที่ได้รับ (คุณลักษณะ) ที่มีวัตถุประสงค์เพื่อให้ข้อมูลและไม่ซ้ำซ้อนช่วยอำนวยความสะดวกในขั้นตอนการเรียนรู้และการวางนัยทั่วไปในภายหลังและในบางกรณีนำไปสู่การตีความของมนุษย์ที่ดีขึ้น สิ่งนี้เกี่ยวข้องกับการลดขนาด

การเพิ่มประสิทธิภาพ

การเพิ่มประสิทธิภาพ คือการเลือกสิ่งที่ดีที่สุดองค์ประกอบ (เกี่ยวกับเกณฑ์บางประการ) จากชุดทางเลือกที่มีอยู่

ในกรณีที่ง่ายที่สุดปัญหาการเพิ่มประสิทธิภาพประกอบด้วยการเพิ่มหรือลดฟังก์ชันจริงโดยการเลือกค่าอินพุตอย่างเป็นระบบจากภายในชุดที่อนุญาตและคำนวณค่าของฟังก์ชัน ลักษณะทั่วไปของทฤษฎีการเพิ่มประสิทธิภาพและเทคนิคสำหรับสูตรอื่น ๆ ประกอบด้วยคณิตศาสตร์ประยุกต์จำนวนมาก โดยทั่วไปแล้วการเพิ่มประสิทธิภาพจะรวมถึงการค้นหาค่า“ ดีที่สุดที่มี” ของฟังก์ชันวัตถุประสงค์บางอย่างที่กำหนดโดเมน (หรืออินพุต)รวมถึงฟังก์ชันวัตถุประสงค์ประเภทต่างๆและโดเมนประเภทต่างๆ

Use Case - ระบบแนะนำภาพยนตร์

คำชี้แจงปัญหา: ในการสร้างระบบแนะนำภาพยนตร์ซึ่งแนะนำภาพยนตร์ตามความต้องการของผู้ใช้โดยใช้ Apache Spark

ข้อกำหนดของเรา:

ดังนั้นให้เราประเมินข้อกำหนดในการสร้างระบบแนะนำภาพยนตร์ของเรา:

  1. ประมวลผลข้อมูลจำนวนมาก
  2. อินพุตจากหลายแหล่ง
  3. ง่ายต่อการใช้
  4. การประมวลผลที่รวดเร็ว

อย่างที่เราประเมินได้ความต้องการของเราเราต้องการเครื่องมือ Big Data ที่ดีที่สุดเพื่อประมวลผลข้อมูลขนาดใหญ่ในเวลาอันสั้น ดังนั้น Apache Spark เป็นเครื่องมือที่สมบูรณ์แบบในการติดตั้งระบบแนะนำภาพยนตร์ของเรา

python __init__ ตัวเอง

ตอนนี้ให้เราดู Flow Diagram สำหรับระบบของเรา

ดังที่เราเห็นสิ่งต่อไปนี้ใช้การสตรีมจาก Spark Streaming เราสามารถสตรีมแบบเรียลไทม์หรืออ่านข้อมูลจาก Hadoop HDFS

กำลังรับชุดข้อมูล:

สำหรับระบบแนะนำภาพยนตร์ของเราเราสามารถรับการให้คะแนนผู้ใช้จากเว็บไซต์ยอดนิยมมากมายเช่น IMDB, Rotten Tomatoes และ Times Movie Ratings ชุดข้อมูลนี้มีให้เลือกหลายรูปแบบเช่นไฟล์ CSV ไฟล์ข้อความกฐานข้อมูล nd เราสามารถสตรีมข้อมูลสดจากเว็บไซต์หรือดาวน์โหลดและเก็บไว้ในระบบไฟล์ในเครื่องหรือ HDFS ของเรา

ชุดข้อมูล:

รูปด้านล่างแสดงให้เห็นว่าเราสามารถรวบรวมชุดข้อมูลจากเว็บไซต์ยอดนิยมได้อย่างไร

เมื่อเราสตรีมข้อมูลไปยัง Spark แล้วจะมีลักษณะเช่นนี้

การเรียนรู้ของเครื่อง:

ระบบคำแนะนำทั้งหมดขึ้นอยู่กับอัลกอริทึม Machine Learning กำลังสองน้อยที่สุดสลับกัน . ในที่นี้ ALS คือการวิเคราะห์การถดถอยประเภทหนึ่งที่ใช้การถดถอยเพื่อลากเส้นท่ามกลางจุดข้อมูลในลักษณะนี้เพื่อลดผลรวมของกำลังสองของระยะห่างจากจุดข้อมูลแต่ละจุด ดังนั้นบรรทัดนี้จึงถูกใช้เพื่อทำนายค่าของฟังก์ชันที่ตรงตามค่าของตัวแปรอิสระ

เส้นสีน้ำเงินในแผนภาพคือเส้นการถดถอยที่เหมาะสมที่สุด สำหรับบรรทัดนี้ค่าของมิติ D เป็นค่าต่ำสุด เส้นสีแดงอื่น ๆ ทั้งหมดจะอยู่ห่างจากชุดข้อมูลโดยรวมเสมอ

การใช้งาน Spark MLlib:

  1. เราจะใช้การกรองการทำงานร่วมกัน (CF) เพื่อคาดคะเนเรตติ้งสำหรับผู้ใช้สำหรับภาพยนตร์เรื่องใดเรื่องหนึ่งโดยพิจารณาจากการให้คะแนนของภาพยนตร์เรื่องอื่น ๆ
  2. จากนั้นเราจะทำงานร่วมกันกับการให้คะแนนของผู้ใช้รายอื่นสำหรับภาพยนตร์เรื่องนั้น ๆ
  3. เพื่อให้ได้ผลลัพธ์ต่อไปนี้จาก Machine Learning ของเราเราจำเป็นต้องใช้ DataFrame, Dataset และ SQL Service ของ Spark SQL

นี่คือรหัสหลอกสำหรับโปรแกรมของเรา:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // อิมพอร์ตแพ็กเกจที่จำเป็นอื่น ๆ อ็อบเจ็กต์ Movie {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* อ่านข้อมูลจากไฟล์ Movie CSV * ') //rawData.first () val rawRatings = rawData.map (* แยก rawData บนตัวคั่นแท็บ *) การให้คะแนนค่า = rawRatings.map {* แม็พกรณีอาร์เรย์ของผู้ใช้ภาพยนตร์และการจัดอันดับ *} // การฝึกอบรมโมเดลค่าข้อมูล = ALS.train (เรตติ้ง, 50, 5, 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val PredictRating = * Predict for User 789 for movie 123 * val userId = * User 789 * val K = 10 val topKRecs = model.recommendProducts (* แนะนำสำหรับผู้ใช้สำหรับค่าเฉพาะของ K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Read Movie List Data *') val titles = movies.map (line => line.split ('|') ใช้เวลา ( 2)). map (array => (array (0) .toInt, array (1))). collectAsMap () val titlesRDD = movies.map (line => line.split ('|'). take (2) ) .map (array => (array (0) .toInt, array (1))). cache () titles (123) val moviesForUser = rating. * Search for User 789 * val sqlContext = * Create SQL Context * val moviesRecommended = sqlContext. * สร้าง DataFrame ของภาพยนตร์ที่แนะนำ * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Select count (*) จาก moviesRecommendedTable') foreach (println) moviesForUser * เรียงลำดับการให้คะแนนสำหรับผู้ใช้ 789 * .map (* จับคู่เรตติ้งกับชื่อภาพยนตร์ *) * พิมพ์การจัดอันดับ * val results = moviesForUser.sortBy (-_. rating) .take (30) .map (rating => (titles (rating.product), rating.rating))}}

เมื่อเราสร้างการคาดการณ์เราสามารถใช้ Spark SQL เพื่อจัดเก็บผลลัพธ์ลงในระบบ RDBMS นอกจากนี้ยังสามารถแสดงบนเว็บแอปพลิเคชัน

ผล:

รูป: ภาพยนตร์แนะนำสำหรับผู้ใช้ 77

เย่! ดังนั้นเราจึงสร้างระบบแนะนำภาพยนตร์โดยใช้ Apache Spark ได้สำเร็จ ด้วยเหตุนี้เราจึงได้กล่าวถึงอัลกอริทึมยอดนิยมที่ Spark MLlib มีให้ เราจะเรียนรู้เพิ่มเติมเกี่ยวกับ Machine Learning ในบล็อกถัดไปเกี่ยวกับ Data Science Algorithms

ก้าวไปข้างหน้าคุณสามารถเรียนรู้ Apache Spark ต่อไปได้ด้วย Spark Tutorial, Spark Streaming Tutorialและคำถามสัมภาษณ์จุดประกายEdureka ทุ่มเทเพื่อมอบประสบการณ์การเรียนรู้ทางออนไลน์ที่ดีที่สุด

ตรวจสอบ ผม หากคุณต้องการเรียนรู้ Spark และสร้างอาชีพในโดเมนของ Spark และสร้างความเชี่ยวชาญในการประมวลผลข้อมูลขนาดใหญ่โดยใช้ RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​และ Scala พร้อมกรณีการใช้งานในชีวิตจริง