Goal of Program
MNIST dataset에 K-mean Algorithm을 적용하여 3가지 task 수행하기
MNIST dataset은 handwritten digit dataset이고 60000 training example과 10000 test example로 구성
1. K-means를 MapReduce에 사용하여 training set에 실행시키기 이때, K = 10으로 하며 각 cluster 10개의 centroid vector와 해당 숫자 이미지 구하기
2. Initial centroid 를 4가지로 랜덤하게 구해보고 어떤 initial centroid가 가장 적합한지 찾아보기
3. (2)에서 구한 best centroid를 사용하여 test set에 적용하여 얼마나 정확한지 비교해보기
Used Language
Python, Google Cloud Console(Environment)
My Review
이번 과제는 K-means Clustering을 MapReduce를 사용하여 프로그램을 짜보는 것이다. K-means 알고리즘 자체는 생각보다 단순하여 이해하는 과정에서는 무리가 없었지만 이 알고리즘 자체를 MapReduce에 적용하는 것이 굉장히 까다로웠다. 먼저, 이번 MapReduce프로그램은 하나의 Mapper와 하나의 Reducer만으로 구성할 수 있었고 대신 해당 MapReduce 프로그램을 10번(K=10) iteration하여 가장 최적화된 centroid를 찾는 것이 핵심이였다. 어떤 식으로 적용했는지에 대해는 K-means algorithm이 뭔지에 대해 설명한 글에 좀더 구체적으로 적어보았다. 그리고 이번 과제에서도 역시나 memory문제가 있었는데 저번 과제때보다 더 심했었다. 역시나 이번에도 output의 양이 많아서인데 이번에는 특히 60000개의 dataset을 이용하고 해당 데이터가 784 vector로 구성되어있어서 출력양을 압축하는 것이 문제였다. 처음에는 각각의 point의 distance를 소수점까지 표현하여 데이터양이 너무많아 문제였어서 이것을 소수점을 줄여서 표현하니 간단하게 해결될 수 있었다... (한번 돌리는데 엄청 오래걸리는 프로그램이라 문제해결하는데 시간이 많이 걸릴 수밖에 없는 구조 ㅠㅠ)
처음에는 내가 짠 알고리즘 자체가 문제인줄 알고 다양하게 바꿔봤지만 정작 문제가 소수점 표현때문이여서 허탈했다..
Project Code
https://github.com/guswns00123/K-means-Clustering.git
Interested Concept
What is K-mean clustering?
https://guswns00123.tistory.com/37
[Algorithm] What is K-means Clustering?
1. K-means Clustering 이란 ? K-means clustering 에서 K는 데이터 집단에서 만들어지는 총 cluster수 이고 means는 각 데이터가 속한 클러스터의 중심까지의 평균 거리를 말한다. 이때 K-means clustering의 목표는
guswns00123.tistory.com
'과제' 카테고리의 다른 글
| [Kafka] GCP Dataproc을 활용한 멀티 노드 Kafka 클러스터 구축 (2) | 2024.12.02 |
|---|---|
| [Spark] RDD 를 이용한 Page Rank 구현 (2) | 2024.07.01 |
| [Project] Finding frequent item sets (1) | 2023.07.31 |
| [Project] Make Community Detection in Online Social Networks (0) | 2023.07.24 |
| [Group Project] CU advanced Course Selection System (1) | 2023.07.11 |