Spark MLlib - Thư viện học máy của Apache Spark



Blog Spark MLlib này sẽ giới thiệu cho bạn thư viện Máy học của Apache Spark. Nó bao gồm một dự án Hệ thống đề xuất phim sử dụng Spark MLlib.

Spark MLlib là thành phần Học máy của Apache Spark.Một trong những điểm thu hút chính của Spark là khả năng mở rộng quy mô tính toán hàng loạt và đó chính xác là những gì bạn cần cho các thuật toán học máy. Nhưng hạn chế là tất cả các thuật toán học máy không thể song song một cách hiệu quả. Mỗi thuật toán có những thách thức riêng đối với song song hóa, cho dù đó là song song nhiệm vụ hay song song dữ liệu.

Phải nói rằng, Spark đang trở thành nền tảng thực tế để xây dựng các ứng dụng và thuật toán máy học.Vâng, bạn có thể kiểm tra được tuyển chọn bởi các Chuyên gia trong ngành trước khi tiếp tục với blog.Các nhà phát triển làm việc trên Spark MLlib đang triển khai ngày càng nhiều thuật toán máy theo cách có thể mở rộng và ngắn gọn trong khung Spark. Thông qua blog này, chúng ta sẽ tìm hiểu các khái niệm về Học máy, Spark MLlib, các tiện ích, thuật toán của nó và trường hợp sử dụng hoàn chỉnh của Hệ thống khuyến nghị phim.





Các chủ đề sau sẽ được đề cập trong blog này:

  1. Học máy là gì?
  2. Tổng quan về Spark MLlib
  3. Công cụ Spark MLlib
  4. Thuật toán MLlib
  5. Trường hợp sử dụng - Hệ thống đề xuất phim

Học máy là gì?

Được phát triển từ nghiên cứu nhận dạng mẫu và lý thuyết học tập tính toán trong trí tuệ nhân tạo, học máy khám phá việc nghiên cứu và xây dựng các thuật toán có thể học hỏi và đưa ra dự đoán về dữ liệu - các thuật toán như vậy khắc phục được việc tuân theo các hướng dẫn chương trình tĩnh nghiêm ngặt bằng cách đưa ra các dự đoán hoặc quyết định theo hướng dữ liệu , thông qua việc xây dựng mô hình từ các đầu vào mẫu.



Học máy - Spark MLlib - Edureka Nhân vật: Công cụ học máy

Học máy có liên quan chặt chẽ đến thống kê tính toán, cũng tập trung vào việc đưa ra dự đoán thông qua việc sử dụng máy tính. Nó có mối quan hệ chặt chẽ với tối ưu hóa toán học, cung cấp các phương pháp, lý thuyết và lĩnh vực ứng dụng cho lĩnh vực này. Trong lĩnh vực phân tích dữ liệu, học máy là một phương pháp được sử dụng để tạo ra các mô hình và thuật toán phức tạp cho phép dự đoán mà trong thương mại được gọi là phân tích dự đoán.

Có ba loại nhiệm vụ Học máy:



  1. Học tập có giám sát : Học có giám sát là nơi bạn có các biến đầu vào (x) và một biến đầu ra (Y) và bạn sử dụng một thuật toán để học hàm ánh xạ từ đầu vào đến đầu ra.
  2. Học tập không giám sát : Học không giám sát là một loại thuật toán học máy được sử dụng để rút ra các suy luận từ tập dữ liệu bao gồm dữ liệu đầu vào mà không có phản hồi được gắn nhãn.
  3. Học tăng cường : Một chương trình máy tính tương tác với một môi trường năng động, trong đó nó phải thực hiện một mục tiêu nhất định (chẳng hạn như lái xe hoặc chơi trò chơi với đối thủ). Chương trình được cung cấp phản hồi về phần thưởng và hình phạt khi nó điều hướng không gian vấn đề của nó.Khái niệm này được gọi là học tăng cường.

Tổng quan về Spark MLlib

Spark MLlib được sử dụng để thực hiện học máy trong Apache Spark. MLlib bao gồm các thuật toán và tiện ích phổ biến.

Tổng quan về MLlib:

  • spark.mllib chứa API gốc được xây dựng trên các RDD. Nó hiện đang ở chế độ bảo trì.
  • spark.ml cung cấp API cấp cao hơn được xây dựng trên DataFrames choxây dựng đường ống ML. spark.ml là API học máy chính cho Spark vào lúc này.

Công cụ Spark MLlib

Spark MLlib cung cấp các công cụ sau:

  • Thuật toán ML: Các thuật toán ML tạo thành cốt lõi của MLlib. Chúng bao gồm các thuật toán học tập phổ biến như phân loại, hồi quy, phân cụm và lọc cộng tác.
  • Lông vũ: Quá trình tạo lông bao gồm khai thác tính năng, biến đổi, giảm kích thước và lựa chọn.
  • Đường ống: Đường ống cung cấp các công cụ để xây dựng, đánh giá và điều chỉnh Đường ống ML.
  • Sự bền bỉ: Tính bền bỉ giúp lưu và tải các thuật toán, mô hình và Đường ống.
  • Tiện ích: Tiện íchcho đại số tuyến tính, thống kê và xử lý dữ liệu.

Thuật toán MLlib

Các thuật toán và tiện ích phổ biến trong Spark MLlib là:

  1. Thống kê cơ bản
  2. hồi quy
  3. Phân loại
  4. Hệ thống khuyến nghị
  5. Phân cụm
  6. Giảm kích thước
  7. Khai thác tính năng
  8. Tối ưu hóa

Hãy để chúng tôi xem xét một số trong số này chi tiết.

Thống kê cơ bản

Thống kê cơ bản bao gồm những điều cơ bản nhất của kỹ thuật học máy. Bao gồm các:

  1. Tóm tắt thống kê : Ví dụ bao gồm giá trị trung bình, phương sai, số lượng, tối đa, tối thiểu và numNonZeros.
  2. Tương quan : Spearman và Pearson là một số cách để tìm ra mối tương quan.
  3. Lấy mẫu phân tầng : Chúng bao gồm sampleBykey và sampleByKeyExact.
  4. Kiểm tra giả thuyết : Kiểm định chi bình phương của Pearson là một ví dụ về kiểm định giả thuyết.
  5. Tạo dữ liệu ngẫu nhiên : RandomRDDs, Normal và Poisson được sử dụng để tạo dữ liệu ngẫu nhiên.

hồi quy

hồi quy phân tích là một quá trình thống kê để ước tính mối quan hệ giữa các biến. Nó bao gồm nhiều kỹ thuật để mô hình hóa và phân tích một số biến khi trọng tâm là mối quan hệ giữa một biến phụ thuộc và một hoặc nhiều biến độc lập. Cụ thể hơn, phân tích hồi quy giúp người ta hiểu giá trị điển hình của biến phụ thuộc thay đổi như thế nào khi bất kỳ một trong các biến độc lập thay đổi, trong khi các biến độc lập khác được giữ cố định.

Phân tích hồi quy được sử dụng rộng rãi để dự đoán và dự báo, trong đó việc sử dụng nó có sự trùng lặp đáng kể với lĩnh vực máy học. Phân tích hồi quy cũng được sử dụng để hiểu biến nào trong số các biến độc lập có liên quan đến biến phụ thuộc và khám phá các dạng của các mối quan hệ này. Trong những trường hợp hạn chế, phân tích hồi quy có thể được sử dụng để suy ra mối quan hệ nhân quả giữa các biến độc lập và phụ thuộc.

Phân loại

Phân loại là vấn đề xác định một quan sát mới thuộc về nhóm danh mục (quần thể con) nào, trên cơ sở tập dữ liệu huấn luyện chứa các quan sát (hoặc cá thể) có thành viên danh mục đã biết. Nó là một ví dụ về nhận dạng mẫu.

Ở đây, một ví dụ sẽ là gán một email nhất định vào các lớp “spam” hoặc “không phải spam” hoặc chỉ định chẩn đoán cho một bệnh nhân cụ thể như được mô tả bằng các đặc điểm quan sát được của bệnh nhân (giới tính, huyết áp, có hoặc không có các triệu chứng nhất định, Vân vân.).

Hệ thống khuyến nghị

ĐẾN hệ thống khuyến nghị là một lớp con của hệ thống lọc thông tin tìm cách dự đoán 'xếp hạng' hoặc 'sở thích' mà người dùng sẽ đưa ra cho một mặt hàng. Hệ thống đề xuất ngày càng trở nên phổ biến trong những năm gần đây và được sử dụng trong nhiều lĩnh vực bao gồm phim, nhạc, tin tức, sách, bài báo nghiên cứu, truy vấn tìm kiếm, thẻ xã hội và các sản phẩm nói chung.

Hệ thống đề xuất thường tạo ra danh sách các đề xuất theo một trong hai cách - thông qua lọc cộng tác và dựa trên nội dung hoặc phương pháp tiếp cận dựa trên tính cách.

  1. Lọc cộng tác tiếp cận xây dựng mô hình từ hành vi trước đây của người dùng (các mặt hàng đã mua hoặc đã chọn trước đó và / hoặc xếp hạng bằng số cho các mặt hàng đó) cũng như các quyết định tương tự do những người dùng khác đưa ra. Mô hình này sau đó được sử dụng để dự đoán các mặt hàng (hoặc xếp hạng cho các mặt hàng) mà người dùng có thể quan tâm.
  2. Lọc dựa trên nội dung phương pháp tiếp cận sử dụng một loạt các đặc điểm riêng biệt của một mặt hàng để đề xuất các mặt hàng bổ sung có các đặc tính tương tự.

Hơn nữa, những cách tiếp cận này thường được kết hợp thành Hệ thống khuyến nghị kết hợp.

Phân cụm

Phân cụm là nhiệm vụ nhóm một tập hợp các đối tượng sao cho các đối tượng trong cùng một nhóm (được gọi là một cụm) giống nhau hơn (theo nghĩa nào đó) với nhau hơn là các đối tượng trong các nhóm (cụm) khác. Vì vậy, nhiệm vụ chính của khai thác dữ liệu khám phá và một kỹ thuật phổ biến để phân tích dữ liệu thống kê, được sử dụng trong nhiều lĩnh vực, bao gồm học máy, nhận dạng mẫu, phân tích hình ảnh, truy xuất thông tin, tin sinh học, nén dữ liệu và đồ họa máy tính.

Giảm kích thước

Giảm kích thước là quá trình giảm số lượng các biến ngẫu nhiên đang được xem xét, thông qua việc thu được một tập hợp các biến chính. Nó có thể được chia thành lựa chọn tính năng và trích xuất tính năng.

  1. Lựa chọn tính năng: Lựa chọn đối tượng tìm một tập hợp con của các biến ban đầu (còn được gọi là đối tượng hoặc thuộc tính).
  2. Khai thác tính năng: Điều này chuyển đổi dữ liệu trong không gian nhiều chiều thành không gian ít kích thước hơn. Việc chuyển đổi dữ liệu có thể là tuyến tính, như trong Phân tích Thành phần Chính (PCA), nhưng nhiều kỹ thuật giảm kích thước phi tuyến tính cũng tồn tại.

Khai thác tính năng

Khai thác tính năng bắt đầu từ một tập hợp dữ liệu đo lường ban đầu và xây dựng các giá trị (tính năng) bắt nguồn nhằm cung cấp thông tin và không dư thừa, tạo điều kiện thuận lợi cho các bước học tập và tổng quát hóa tiếp theo và trong một số trường hợp dẫn đến việc con người diễn giải tốt hơn. Điều này liên quan đến giảm kích thước.

Tối ưu hóa

Tối ưu hóa là lựa chọn tốt nhấtyếu tố (liên quan đến một số tiêu chí) từ một số lựa chọn thay thế có sẵn.

Trong trường hợp đơn giản nhất, một bài toán tối ưu hóa bao gồm việc tối đa hóa hoặc tối thiểu hóa một hàm thực bằng cách chọn một cách có hệ thống các giá trị đầu vào từ bên trong một tập được phép và tính toán giá trị của hàm. Sự tổng quát của lý thuyết và kỹ thuật tối ưu hóa cho các công thức khác bao gồm một lĩnh vực lớn của toán học ứng dụng. Nói một cách tổng quát hơn, tối ưu hóa bao gồm việc tìm kiếm các giá trị “tốt nhất có sẵn” của một số hàm mục tiêu cho một miền xác định (hoặc đầu vào)bao gồm nhiều loại hàm mục tiêu khác nhau và các loại miền khác nhau.

Trường hợp sử dụng - Hệ thống đề xuất phim

Báo cáo vấn đề: Để xây dựng Hệ thống đề xuất phim đề xuất phim dựa trên sở thích của người dùng bằng Apache Spark.

Yêu cầu của chúng tôi:

Vì vậy, hãy để chúng tôi đánh giá các yêu cầu để xây dựng hệ thống đề xuất phim của chúng tôi:

  1. Xử lý lượng dữ liệu khổng lồ
  2. Đầu vào từ nhiều nguồn
  3. Dễ sử dụng
  4. Xử lý nhanh

Như chúng ta có thể đánh giáyêu cầu của chúng tôi, chúng tôi cần công cụ Dữ liệu lớn tốt nhất để xử lý dữ liệu lớn trong thời gian ngắn. Do đó, Apache Spark là công cụ hoàn hảo để triển khai Hệ thống Đề xuất Phim của chúng tôi.

chứng chỉ sau đại học là gì

Bây giờ chúng ta hãy xem Sơ đồ luồng cho hệ thống của mình.

Như chúng ta có thể thấy, phần sau sử dụng Phát trực tuyến từ Spark Streaming. Chúng tôi có thể phát trực tuyến trong thời gian thực hoặc đọc dữ liệu từ Hadoop HDFS.

Lấy tập dữ liệu:

Đối với Hệ thống Đề xuất Phim của chúng tôi, chúng tôi có thể nhận được xếp hạng của người dùng từ nhiều trang web phổ biến như IMDB, Rotten Tomatoes và Times Movie Ratings. Tập dữ liệu này có sẵn ở nhiều định dạng như tệp CSV, tệp văn bản acơ sở dữ liệu thứ n. Chúng tôi có thể phát trực tiếp dữ liệu từ các trang web hoặc tải xuống và lưu trữ chúng tronghệ thống tệp cục bộ của chúng tôi hoặc HDFS.

Tập dữ liệu:

Hình dưới đây cho thấy cách chúng tôi có thể thu thập tập dữ liệu từ các trang web phổ biến.

Khi chúng tôi truyền dữ liệu vào Spark, nó sẽ giống như thế này.

Học máy:

Toàn bộ hệ thống đề xuất dựa trên thuật toán Học máy Hình vuông nhỏ nhất xen kẽ . Ở đây, ALS là một loại phân tích hồi quy trong đó hồi quy được sử dụng để vẽ một đường thẳng giữa các điểm dữ liệu theo cách sao cho tổng các bình phương của khoảng cách từ mỗi điểm dữ liệu được giảm thiểu. Do đó, dòng này sau đó được sử dụng để dự đoán các giá trị của hàm mà nó đáp ứng giá trị của biến độc lập.

Đường màu xanh lam trong biểu đồ là đường hồi quy phù hợp nhất. Đối với dòng này, giá trị của kích thước D là nhỏ nhất. Tất cả các đường màu đỏ khác sẽ luôn ở xa tập dữ liệu nói chung.

Thực hiện Spark MLlib:

  1. Chúng tôi sẽ sử dụng Lọc cộng tác (CF) để dự đoán xếp hạng của người dùng cho các bộ phim cụ thể dựa trên xếp hạng của họ cho các bộ phim khác.
  2. Sau đó, chúng tôi cộng tác điều này với xếp hạng của người dùng khác cho bộ phim cụ thể đó.
  3. Để nhận được các kết quả sau từ Học máy của chúng tôi, chúng tôi cần sử dụng DataFrame, Dataset và SQL Service của Spark SQL.

Đây là mã giả cho chương trình của chúng tôi:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Nhập các gói cần thiết khác đối tượng Movie {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Đọc dữ liệu từ tệp Movie CSV * ') //rawData.first () val rawRatings = rawData.map (* Chia dữ liệu rawData trên dấu phân cách tab *) val xếp hạng = rawRatings.map {* Mảng trường hợp bản đồ của Người dùng, Phim và Xếp hạng *} // Đào tạo mô hình val dữ liệu = ALS.train (xếp hạng, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val dự đoánRating = * Dự đoán cho Người dùng 789 cho phim 123 * val userId = * Người dùng 789 * val K = 10 val topKRecs = model.recommendProducts (* Đề xuất cho Người dùng về giá trị cụ thể của K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Đọc Dữ liệu Danh sách Phim *') val title = movies.map (line => line.split ('|'). take ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titleRDD = movies.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). cache () title (123) val moviesForUser = xếp hạng. * Tìm kiếm Người dùng 789 * val sqlContext = * Tạo Ngữ cảnh SQL * val phimRecommended = sqlContext. * Tạo DataFrame của các phim được đề xuất * phimRecommended.registerTempTable ('phimRecommendedTable') sqlContext.sql ('Chọn số lượng (*) từ phimRecommendedTable'). foreach (println) phimForUser. * Sắp xếp xếp hạng cho Người dùng 789 * .map (* Ánh xạ xếp hạng với tiêu đề phim *). * In xếp hạng * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (title (rating.product), rating.rating))}}

Khi chúng tôi tạo ra các dự đoán, chúng tôi có thể sử dụng Spark SQL để lưu trữ kết quả vào một hệ thống RDBMS. Hơn nữa, điều này có thể được hiển thị trên một ứng dụng web.

Các kết quả:

Nhân vật: Phim được đề xuất cho Người dùng 77

Tiếng hoan hô! Do đó, chúng tôi đã tạo thành công Hệ thống đề xuất phim bằng Apache Spark. Với điều này, chúng tôi đã đề cập đến một trong nhiều thuật toán phổ biến mà Spark MLlib cung cấp. Chúng ta sẽ tìm hiểu thêm về Học máy trong các blog sắp tới về Thuật toán Khoa học Dữ liệu.

Sau này, bạn có thể tiếp tục học Apache Spark với Spark Tutorial, Spark Streaming Tutorial, và Câu hỏi phỏng vấn Spark.Edureka luôn tận tâm hướng tới việc cung cấp trải nghiệm học tập trực tuyến tốt nhất có thể.

Kiểm tra của chúng tôi Tôi nếu bạn muốn tìm hiểu Spark và xây dựng sự nghiệp trong miền Spark và xây dựng chuyên môn để thực hiện Xử lý dữ liệu quy mô lớn bằng cách sử dụng RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​và Scala với các trường hợp sử dụng thực tế.