Apache Spark를 공부하고 분산 처리할 수 있어요! 라고 말할 수 있게 된다 그 2

2842 단어 스파크

지난번은 여기



소개



오늘은 spark 의 표준 라이브러리인 MLlib 를 이용해 보겠습니다.spark에는 MLlib를 포함하여 네 가지 표준 라이브러리가 있습니다.



다른 라이브러리에 대해서는 여기 를 참조해 주세요.

MLlib란?



spark에 구현된 기계 학습 라이브러리입니다.
기계 학습의 구현은 매우 무즈카시이지만, MLlib는 비교적 간단하게 시험할 수 있어 서포트하고 있는 알고리즘도 풍부하기 때문에 뭉치기 쉬운 생각이 듭니다(사견입니다).

우선, 협력 필터링을 시도해 보겠습니다.
협조 필터링에 대해서는 이 블로그 가 대단히 참고가 되었습니다.

구현 절차



1. 필요한 라이브러리 가져오기


from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating

2. 데이터를 읽어 RDD 생성



테스트 데이터는 이거 을 이용합니다.

검토 한 사람의 ID, 리뷰 된 사람의 ID, 리뷰 결과 등의 느낌입니까?
data = sc.textFile("data/mllib/als/test.data")

3. 적절하게 변수를 설정합니다



rank: 특징량수, numIterations: 반복수 등의 변수를 설정합니다.
랭크는 늘리면 늘릴수록 성능이 개선되는 것 같습니다. 10정도에서 변하지 않게 되는 것 같기 때문에 우선 10으로 할 때입니다.
numIterations도 늘리면 늘리는 만큼 학습 사이클이 늘어나므로 정밀도가 올라갈 것입니다.
이것도 우선 10회로 할 때입니다.
rank = 10
numIterations = 10

4. 모델을 작성하여 data 를 학습시킵니다.


  • 에서 읽은 라이브러리의 train 메서드를 두드리는 것뿐입니다.
  • model = ALS.train(ratings, rank, numIterations)
    

    5. 적당히 값을 긁어 예측을 받습니다.


    >>> model.predict(2,4)
    1.0015225077674874
    
    (2,4) 에 대한 정답은 1이므로 뭐 괜찮을까?

    6. 모델을 저장하거나 로드합니다.



    절각 학습시킨 데이터이므로, 보존해 임의의 타이밍으로 이용할 수 있도록(듯이) 하고 싶네요.saveMatrixFactorizationModel.load 를 이용하면 그것도 쉽게 할 수 있다고 합니다.
    model.save(sc, "own/model/path")
    sameModel = MatrixFactorizationModel.load(sc, "own/model/path")
    

    끝에


    ALS 를 이용하는 곳은 꽤 바삭바삭하게 되었습니다.
    어느 쪽인가 하면 , 알고리즘의 선정이나 이해 쪽이 귀찮을 것 같습니다.

    그만큼 API는 훌륭하기 때문에 뭔가 기계 학습을 시도하고 싶은 분은spark 부터 시작해도 좋다고 생각했습니다.

    여기 에 시도할 수 있는 알고리즘이 소개되고 있으므로 참조해 주세요.

    다음 번에는 "mySQL"과 연결되는 가상 서버를 사용하여 분산 처리를 시도합니다.
    중 하나를 쓰려고합니다.

    좋은 웹페이지 즐겨찾기