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 를 학습시킵니다.
오늘은
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 를 학습시킵니다.
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. 모델을 저장하거나 로드합니다.
절각 학습시킨 데이터이므로, 보존해 임의의 타이밍으로 이용할 수 있도록(듯이) 하고 싶네요.
save
와 MatrixFactorizationModel.load
를 이용하면 그것도 쉽게 할 수 있다고 합니다.model.save(sc, "own/model/path")
sameModel = MatrixFactorizationModel.load(sc, "own/model/path")
끝에
ALS
를 이용하는 곳은 꽤 바삭바삭하게 되었습니다.
어느 쪽인가 하면 , 알고리즘의 선정이나 이해 쪽이 귀찮을 것 같습니다.
그만큼 API는 훌륭하기 때문에 뭔가 기계 학습을 시도하고 싶은 분은spark
부터 시작해도 좋다고 생각했습니다.
여기 에 시도할 수 있는 알고리즘이 소개되고 있으므로 참조해 주세요.
다음 번에는 "mySQL"과 연결되는 가상 서버를 사용하여 분산 처리를 시도합니다.
중 하나를 쓰려고합니다.
끝
Reference
이 문제에 관하여(Apache Spark를 공부하고 분산 처리할 수 있어요! 라고 말할 수 있게 된다 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rtoya/items/ebafc8fbe5cdbdee6413
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Apache Spark를 공부하고 분산 처리할 수 있어요! 라고 말할 수 있게 된다 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rtoya/items/ebafc8fbe5cdbdee6413텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)