Icednut's Note

스파크 강의 노트 Day 4

2017-05-30

Machine Learing With Spark

K-Means

  • 주어진 데이터를 K개의 클러스터로 묶는 알고리즘 (Clustering, unsupervised learning)
    • Center 값을 기준으로 분포를 구분함
    • PIC, K-means 참조
  • ML 코딩 (RDD-based API)
    1. Setting SparkContext
    2. Load Data (ex: RDD[String] -> RDD[Vector], CSV 파일을 읽어서 한 줄씩 Vector로 변환)
    3. Train Model
      • ex)
        1
        2
        val model: KMeansModel = KMeans.train(parsedData, 2, 20)
        model.clusterCenters.foreach(println)
    4. Show Results
    5. Evaluate (평가)
      • ex)
        1
        val cost: Double = model.computeCost(parsedData)
      • cost 값이 0에 수렴할수록 좋은 모델
    6. Predict
      • ex)
        1
        val predictions1: Int = model.predict(Vectors.dense(0.5, 0.5, 0.5))
  • ML 코딩 순서 (DataFrame-based APIs)
    1. Setting SparkContext
      • ex)
        1
        2
        3
        val conf: SparkConf = ...
        val sc: SparkContext = new SparkContext(conf)
        val sqlContext: SQLContext = new SQLContext(sc) // RDD 프로그래밍과 차이점
    2. Load Data
      • ex)
        1
        2
        3
        4
        5
        6
        val dataSet: DataFrame = sqlContext.createDataFrame(Seq(
        (1, Vectors.dense(0.0, 0.0, 0.0)),
        (2, Vectors.dense(0.1, 0.1, 0.1))
        ).toDF("id", "features")
        // CSV 파일을 읽어서 String을 Vector로 변환해도 된다.
    3. Train Model
      • ex)
        1
        2
        3
        4
        5
        6
        7
        val model: KMeans = new KMeans()
        .setK(2)
        .setFeaturesCol("features")
        .setPredictionCol("prediction")
        val model: KMeansModel = kmeans.fit(dataSet)
        model.clusterCenters.foreach(println)
    4. Show Results
    5. Evaluate (평가)
      • ex)
        1
        val cost: Double = model.computeCost(dataSet)
      • cost 값이 0에 수렴할수록 좋은 모델
    6. Predict
      • ex)
        1
        val predictions1: Int = model.predict(Vectors.dense(0.5, 0.5, 0.5))

Logistic Regression

  • 독립변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는 분석 기법
    1. Term Frequency: 단어 분포 파악
    2. Classification Model: 모델 생성
    3. Predict
  • 모델을 PMML 파일로 디스크에 저장할 수 도 있다.

Exercise

SparkR, Sparklyr

  • Sparklyr는 R코드를 분산해서 실행시킬 수 없다.
  • DataFrame에서 DataSet으로 변환하는 방법: case class
Tags: Spark