Spark MLlib – Apache Spark의 기계 학습 라이브러리



이 Spark MLlib 블로그는 Apache Spark의 기계 학습 라이브러리를 소개합니다. Spark MLlib를 사용하는 영화 추천 시스템 프로젝트가 포함되어 있습니다.

Spark MLlib Apache Spark의 머신 러닝 구성 요소입니다.Spark의 주요 매력 중 하나는 계산을 대규모로 확장 할 수 있다는 것입니다. 이것이 바로 기계 학습 알고리즘에 필요한 것입니다. 그러나 한계는 모든 기계 학습 알고리즘이 효과적으로 병렬화 될 수 없다는 것입니다. 각 알고리즘에는 작업 병렬 처리 든 데이터 병렬 처리 든 병렬화에 대한 고유 한 문제가 있습니다.

그럼에도 불구하고 Spark는 기계 학습 알고리즘 및 애플리케이션을 구축하기위한 사실상의 플랫폼이되고 있습니다.글쎄, 당신은 확인할 수 있습니다 블로그를 진행하기 전에 업계 전문가가 선별했습니다.Spark MLlib에서 작업하는 개발자는 Spark 프레임 워크에서 확장 가능하고 간결한 방식으로 점점 더 많은 머신 알고리즘을 구현하고 있습니다. 이 블로그를 통해 기계 학습, Spark MLlib, 유틸리티, 알고리즘 및 영화 추천 시스템의 전체 사용 사례의 개념을 배웁니다.





이 블로그에서 다루는 주제는 다음과 같습니다.

  1. 머신 러닝이란?
  2. Spark MLlib 개요
  3. Spark MLlib 도구
  4. MLlib 알고리즘
  5. 사용 사례 – 영화 추천 시스템

머신 러닝이란?

인공 지능의 패턴 인식 및 컴퓨터 학습 이론 연구에서 진화 한 기계 학습은 데이터에서 학습하고 예측할 수있는 알고리즘의 연구 및 구성을 탐구합니다. 이러한 알고리즘은 데이터 기반 예측 또는 결정을 통해 엄격하게 정적 인 프로그램 명령을 따라 극복합니다. , 샘플 입력에서 모델 구축을 통해.



기계 학습-Spark MLlib-Edureka 그림: 기계 학습 도구

기계 학습은 컴퓨터 사용을 통한 예측에 초점을 맞춘 계산 통계와 밀접한 관련이 있습니다. 방법, 이론 및 응용 분야를 현장에 제공하는 수학적 최적화와 밀접한 관련이 있습니다. 데이터 분석 분야에서 기계 학습은 상업적 사용에서 예측 분석으로 알려진 예측에 적합한 복잡한 모델과 알고리즘을 고안하는 데 사용되는 방법입니다.

기계 학습 작업에는 세 가지 범주가 있습니다.



  1. 지도 학습 :지도 학습은 입력 변수 (x)와 출력 변수 (Y)가 있고 알고리즘을 사용하여 입력에서 출력으로의 매핑 함수를 학습하는 곳입니다.
  2. 비지도 학습 : 비지도 학습은 레이블이 지정된 응답이없는 입력 데이터로 구성된 데이터 세트에서 추론을 도출하는 데 사용되는 기계 학습 알고리즘의 한 유형입니다.
  3. 강화 학습 : 컴퓨터 프로그램은 특정 목표를 수행해야하는 동적 환경과 상호 작용합니다 (예 : 차량 운전 또는 상대방과의 게임). 이 프로그램은 문제 공간을 탐색 할 때 보상 및 처벌 측면에서 피드백을 제공합니다.이 개념을 강화 학습이라고합니다.

Spark MLlib 개요

Spark MLlib는 Apache Spark에서 기계 학습을 수행하는 데 사용됩니다. MLlib는 널리 사용되는 알고리즘과 유틸리티로 구성됩니다.

MLlib 개요 :

  • spark.mllib RDD 위에 빌드 된 원본 API가 포함되어 있습니다. 현재 유지 관리 모드입니다.
  • spark.ml DataFrames 위에 구축 된 더 높은 수준의 API를 제공합니다.ML 파이프 라인 구성. spark.ml 현재 Spark 용 기본 Machine Learning API입니다.

Spark MLlib 도구

Spark MLlib는 다음 도구를 제공합니다.

  • ML 알고리즘 : ML 알고리즘은 MLlib의 핵심을 형성합니다. 여기에는 분류, 회귀, 클러스터링 및 협업 필터링과 같은 일반적인 학습 알고리즘이 포함됩니다.
  • 특징 : 기능화에는 기능 추출, 변환, 차원 축소 및 선택이 포함됩니다.
  • 파이프 라인 : 파이프 라인은 ML 파이프 라인을 구성, 평가 및 조정하기위한 도구를 제공합니다.
  • 고집: 지속성은 알고리즘, 모델 및 파이프 라인을 저장하고로드하는 데 도움이됩니다.
  • 유용: 유용선형 대수, 통계 및 데이터 처리를 위해.

MLlib 알고리즘

Spark MLlib에서 널리 사용되는 알고리즘 및 유틸리티는 다음과 같습니다.

  1. 기본 통계
  2. 회귀
  3. 분류
  4. 추천 시스템
  5. 클러스터링
  6. 차원 감소
  7. 특징 추출
  8. 최적화

이들 중 일부를 자세히 살펴 보겠습니다.

기본 통계

기본 통계 가장 기본적인 기계 학습 기술을 포함합니다. 여기에는 다음이 포함됩니다.

  1. 요약 통계 : 예로는 평균, 분산, 개수, 최대, 최소 및 numNonZeros가 있습니다.
  2. 상관 관계 : Spearman과 Pearson은 상관 관계를 찾는 몇 가지 방법입니다.
  3. 계층화 된 샘플링 : 여기에는 sampleBykey 및 sampleByKeyExact가 포함됩니다.
  4. 가설 검증 : Pearson의 카이 제곱 검정은 가설 검정의 한 예입니다.
  5. 랜덤 데이터 생성 : RandomRDD, Normal 및 Poisson을 사용하여 임의 데이터를 생성합니다.

회귀

회귀 분석은 변수 간의 관계를 추정하기위한 통계적 프로세스입니다. 여기에는 종속 변수와 하나 이상의 독립 변수 간의 관계에 초점이 맞춰져있을 때 여러 변수를 모델링하고 분석하는 많은 기술이 포함됩니다. 더 구체적으로, 회귀 분석은 독립 변수 중 하나가 변경되고 다른 독립 변수가 고정되어있을 때 종속 변수의 일반적인 값이 어떻게 변하는 지 이해하는 데 도움이됩니다.

회귀 분석은 예측 및 예측에 널리 사용되며, 그 사용은 기계 학습 분야와 상당히 겹칩니다. 회귀 분석은 또한 종속 변수와 관련된 독립 변수를 이해하고 이러한 관계의 형태를 탐색하는 데 사용됩니다. 제한된 상황에서 회귀 분석을 사용하여 독립 변수와 종속 변수 간의 인과 관계를 추론 할 수 있습니다.

분류

분류 카테고리 멤버십이 알려진 관찰 (또는 인스턴스)을 포함하는 데이터의 훈련 세트를 기반으로 새로운 관찰이 속하는 카테고리 (하위 모집단) 세트 중 어느 것에 속하는지 식별하는 문제입니다. 패턴 인식의 예입니다.

여기에서 예는 주어진 이메일을 '스팸'또는 '스팸이 아닌'클래스에 할당하거나 환자의 관찰 된 특성 (성별, 혈압, 특정 증상의 유무, 기타.).

추천 시스템

추천 시스템 사용자가 항목에 부여 할 '평점'또는 '선호도'를 예측하는 정보 필터링 시스템의 하위 클래스입니다. Recommender 시스템은 최근 몇 년 동안 점점 인기를 얻고 있으며 영화, 음악, 뉴스, 책, 연구 기사, 검색어, 소셜 태그 및 제품 전반을 포함한 다양한 영역에서 활용되고 있습니다.

Recommender 시스템은 일반적으로 협업 및 콘텐츠 기반 필터링 또는 성격 기반 접근 방식을 통해 두 가지 방법 중 하나로 권장 사항 목록을 생성합니다.

  1. 협업 필터링 사용자의 과거 행동 (이전에 구매했거나 선택한 항목 및 / 또는 해당 항목에 부여 된 수치 등급)과 다른 사용자가 내린 유사한 결정을 바탕으로 모델을 구축하는 접근 방식입니다. 이 모델은 사용자가 관심을 가질 수있는 항목 (또는 항목에 대한 등급)을 예측하는 데 사용됩니다.
  2. 콘텐츠 기반 필터링 접근 방식은 유사한 속성을 가진 추가 항목을 추천하기 위해 항목의 일련의 개별 특성을 활용합니다.

또한 이러한 접근 방식은 종종 Hybrid Recommender Systems로 결합됩니다.

클러스터링

클러스터링 동일한 그룹 (클러스터라고 함)에있는 객체가 다른 그룹 (클러스터)에있는 객체보다 서로 더 유사하게 (어떤 의미에서는 또는 다른) 객체 세트를 그룹화하는 작업입니다. 따라서 탐색 데이터 마이닝의 주요 작업이며 기계 학습, 패턴 인식, 이미지 분석, 정보 검색, 생물 정보학, 데이터 압축 및 컴퓨터 그래픽을 포함한 많은 분야에서 사용되는 통계 데이터 분석을위한 일반적인 기술입니다.

차원 감소

차원 감소 주변 수 집합을 구하여 고려중인 랜덤 변수의 수를 줄이는 과정입니다. 기능 선택과 기능 추출로 나눌 수 있습니다.

  1. 기능 선택 : 기능 선택은 원래 변수 (기능 또는 속성이라고도 함)의 하위 집합을 찾습니다.
  2. 특징 추출: 이렇게하면 고차원 공간의 데이터가 더 적은 차원의 공간으로 변환됩니다. 데이터 변환은 PCA (Principal Component Analysis)에서와 같이 선형 일 수 있지만 많은 비선형 차원 감소 기술도 존재합니다.

특징 추출

특징 추출 측정 된 데이터의 초기 세트에서 시작하여 유익하고 중복되지 않도록 의도 된 파생 값 (특징)을 구축하여 후속 학습 및 일반화 단계를 촉진하고 경우에 따라 더 나은 인간 해석으로 이어집니다. 이것은 차원 감소와 관련이 있습니다.

최적화

최적화 최고의 선택입니다몇 가지 사용 가능한 대안 집합에서 요소 (일부 기준과 관련하여).

가장 간단한 경우 최적화 문제는 허용 된 집합 내에서 입력 값을 체계적으로 선택하고 함수 값을 계산하여 실제 함수를 최대화하거나 최소화하는 것으로 구성됩니다. 최적화 이론과 기술을 다른 공식으로 일반화하는 것은 응용 수학의 넓은 영역을 구성합니다. 보다 일반적으로 최적화에는 정의 된 도메인 (또는 입력)이 주어진 경우 일부 목적 함수의 '가장 적합한'값을 찾는 것이 포함됩니다.다양한 유형의 목적 함수와 다양한 유형의 도메인을 포함합니다.

데몬 스레드는 무엇입니까

사용 사례 – 영화 추천 시스템

문제 설명: Apache Spark를 사용하여 사용자의 선호도에 따라 영화를 추천하는 영화 추천 시스템을 구축합니다.

우리의 요구 사항 :

이제 영화 추천 시스템을 구축하기위한 요구 사항을 평가 해 보겠습니다.

  1. 방대한 양의 데이터 처리
  2. 여러 소스에서 입력
  3. 사용하기 쉬운
  4. 빠른 처리

우리가 평가할 수 있듯이단시간에 대용량 데이터를 처리 할 수있는 최고의 빅 데이터 도구가 필요합니다. 따라서 Apache Spark 영화 추천 시스템을 구현하기위한 완벽한 도구입니다.

이제 시스템의 흐름도를 살펴 보겠습니다.

보시다시피 다음은 Spark Streaming의 Streaming을 사용합니다. 실시간으로 스트리밍하거나 Hadoop HDFS에서 데이터를 읽을 수 있습니다.

데이터 세트 가져 오기 :

영화 추천 시스템의 경우 IMDB, Rotten Tomatoes 및 Times Movie Ratings와 같은 많은 인기 웹 사이트에서 사용자 등급을 얻을 수 있습니다. 이 데이터 세트는 CSV 파일, 텍스트 파일 및nd 데이터베이스. 웹 사이트에서 실시간으로 데이터를 스트리밍하거나 다운로드하여 저장할 수 있습니다.로컬 파일 시스템 또는 HDFS.

데이터 세트 :

아래 그림은 인기 웹 사이트에서 데이터 세트를 수집하는 방법을 보여줍니다.

데이터를 Spark로 스트리밍하면 다음과 같습니다.

기계 학습 :

전체 추천 시스템은 기계 학습 알고리즘을 기반으로합니다. 최소 제곱 교대 . 여기서 ALS는 회귀 분석을 사용하여 각 데이터 포인트로부터 거리의 제곱의 합을 최소화하는 방식으로 데이터 포인트 사이에 선을 그리는 회귀 분석의 한 유형입니다. 따라서이 선은 독립 변수의 값을 충족하는 함수의 값을 예측하는 데 사용됩니다.

다이어그램의 파란색 선은 최적 회귀선입니다. 이 선의 경우 치수 D 값은 최소입니다. 다른 모든 빨간색 선은 항상 전체적으로 데이터 세트에서 멀어집니다.

Spark MLlib 구현 :

  1. Collaborative Filtering (CF)을 사용하여 다른 영화에 대한 등급을 기반으로 특정 영화에 대한 사용자 등급을 예측합니다.
  2. 그런 다음 특정 영화에 대한 다른 사용자의 평가와이를 공동 작업합니다.
  3. 머신 러닝에서 다음과 같은 결과를 얻으려면 Spark SQL의 DataFrame, Dataset 및 SQL Service를 사용해야합니다.

다음은 프로그램의 의사 코드입니다.

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // 다른 필요한 패키지 가져 오기 object Movie {def main (args : Array [String] ) {val conf = new SparkConf (). setAppName ( 'Movie'). setMaster ( 'local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ( '* 영화 CSV 파일에서 데이터 읽기 * ') //rawData.first () val rawRatings = rawData.map (* Split rawData on tab delimiter *) val ratings = rawRatings.map {* Map case array of User, Movie and Rating *} // 데이터 val 모델 훈련 = ALS.train (ratings, 50, 5, 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * 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 ( '* 영화 목록 데이터 읽기 *') val titles = movies.map (라인 => line.split ( '|'). take ( 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 = ratings. * 사용자 검색 789 * val sqlContext = * SQL 컨텍스트 생성 * val moviesRecommended = sqlContext. * 추천 영화의 DataFrame 만들기 * moviesRecommended.registerTempTable ( 'moviesRecommendedTable') sqlContext.sql ( 'moviesRecommendedTable에서 count (*) 선택') .foreach (println) moviesForUser. * User 789에 대한 등급을 정렬합니다 * .map (* 등급을 영화 제목에 매핑 *). * 평점 인쇄 * val results = moviesForUser.sortBy (-_. rating) .take (30) .map (rating => (titles (rating.product), rating.rating))}}

예측을 생성하면 Spark SQL을 사용하여 결과를 RDBMS 시스템에 저장할 수 있습니다. 또한 이것은 웹 애플리케이션에 표시 될 수 있습니다.

결과 :

그림: 사용자 77에게 추천하는 영화

만세! 따라서 Apache Spark를 사용하여 영화 추천 시스템을 성공적으로 만들었습니다. 이를 통해 Spark MLlib가 제공해야하는 많은 인기있는 알고리즘 중 하나만 다루었습니다. 데이터 과학 알고리즘에 대한 향후 블로그에서 머신 러닝에 대해 자세히 알아볼 것입니다.

앞으로 Spark Tutorial, Spark Streaming Tutorial을 통해 Apache Spark를 계속 학습 할 수 있습니다.및 Spark 인터뷰 질문.Edureka는 온라인에서 가능한 최고의 학습 경험을 제공하기 위해 최선을 다하고 있습니다.

우리를 확인하십시오 나는 f Spark를 배우고 Spark 도메인에서 경력을 쌓고 실제 사용 사례와 함께 RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​및 Scala를 사용하여 대규모 데이터 처리를 수행하기위한 전문 지식을 구축하고자합니다.