클러스터링 소개

PySpark로 배우는 빅데이터 기초

Upendra Devisetty

Science Analyst, CyVerse

클러스터링이란?

  • 클러스터링은 데이터를 그룹으로 조직하는 비지도 학습 과제입니다

  • 현재 PySpark MLlib은 다음 클러스터링 모델을 지원합니다

    • K-평균
    • 가우시안 혼합
    • 전력 반복 클러스터링(PIC)
    • 이분 K-평균
    • 스트리밍 K-평균
PySpark로 배우는 빅데이터 기초

K-평균 클러스터링

  • K-평균은 가장 널리 쓰이는 클러스터링 기법입니다

PySpark로 배우는 빅데이터 기초

Spark MLLib으로 K-평균

RDD = sc.textFile("WineData.csv"). \
       map(lambda x: x.split(",")).\
       map(lambda x: [float(x[0]), float(x[1])])
RDD.take(5)
[[14.23, 2.43], [13.2, 2.14], [13.16, 2.67], [14.37, 2.5], [13.24, 2.87]]
PySpark로 배우는 빅데이터 기초

K-평균 모델 학습

  • K-평균 모델 학습은 KMeans.train() 메서드를 사용합니다
from pyspark.mllib.clustering import KMeans
model = KMeans.train(RDD, k = 2, maxIterations = 10)
model.clusterCenters
[array([12.25573171,  2.28939024]), array([13.636875  ,  2.43239583])]
PySpark로 배우는 빅데이터 기초

K-평균 모델 평가

from math import sqrt
def error(point):
    center = model.centers[model.predict(point)]
    return sqrt(sum([x**2 for x in (point - center)]))
WSSSE = RDD.map(lambda point: error(point)).reduce(lambda x, y: x + y)
print("Within Set Sum of Squared Error = " + str(WSSSE))
Within Set Sum of Squared Error = 77.96236420499056
PySpark로 배우는 빅데이터 기초

K-평균 클러스터 시각화

PySpark로 배우는 빅데이터 기초

클러스터 시각화

wine_data_df = spark.createDataFrame(RDD, schema=["col1", "col2"])
wine_data_df_pandas = wine_data_df.toPandas()
cluster_centers_pandas = pd.DataFrame(model.clusterCenters, columns=["col1", "col2"])
cluster_centers_pandas.head()
plt.scatter(wine_data_df_pandas["col1"], wine_data_df_pandas["col2"]);
plt.scatter(cluster_centers_pandas["col1"], cluster_centers_pandas["col2"], color="red", marker="x");
PySpark로 배우는 빅데이터 기초

클러스터링 실습

PySpark로 배우는 빅데이터 기초

Preparing Video For Download...