2022. 6. 10. 17:29ㆍMajor`/인공지능
Unsupervised Learning
Supervised Learning은 인간이 "학습데이터 (Input Data - Output Lable)"를 부여하고 Agent는 받은 학습 데이터들의 output을 모두 만족시키기 위한 가설함수를 Learning을 통해서 알아낸다
Unsupervised Learning도 인간이 학습 데이터를 부여하기는 하지만 그 학습 데이터에는 "Output Label"이 존재하지 않는다.
그러면 Agent는 Unsupervised상에서 어떻게 Learning을 하라는 것일까??
>> Input Data끼리 "그룹화"를 시키는 Clustering을 학습의 결과로 도출해낸다
- Input Data안에 "숨겨진 패턴"을 학습하는 것
- 패턴이 비슷한 Data끼리 묶어준 "Cluster"를 학습하는 것
>> 총 3개의 Cluster가 학습을 통해서 도출되었다
Unsupervised Learning에는 2가지 알고리즘으로 나눌 수 있다
<Partitioning Algorithms>
처음에는 Random Partitioning이지만, 이 과정을 계속 반복함으로써(Refine) 결국 비슷한 Data끼리 모이는 Cluster가 탄생한다
- Canopy Clustering
- K-means Clustering
- EM Clustering
<Hierarchical Algorithms>
Cluster끼리의 관계를 Tree형태로 표현한 알고리즘이다 >> Cluster가 확장되면 BottomUp이고, Cluster가 세분화되면 TopDown이다
- TopDown : Divisive Clustering
- BottomUp : Agglomerative Clustering
K-Means Clustering
이름그대로 "K개의 평균(중심점)"을 기준으로 Clustering하는 것이다
1. K개의 "Random"한 점을 선정한다
- 이 점을 Cluster의 Center로 활용한다
2. K개의 점 각각에 대해서 본인 근처에 있는 Data끼리 Cluster를 만든다
3. 2)에서 만들어진 K개의 Cluster의 "중심"을 구한다
(2) & (3) 과정을 계속 반복하면서 마침내 변동되지 않는 K개의 Cluster(수렴 상태)가 만들어지면 무감독 학습이 종료된 것이다
Example)
1. 3-Means Clustering :: 3개의 Random한 점을 선정
2. 3개의 Center각각에 대해서 "가까운 Data들을 본인꺼라고 표시한다"
3. (2)에서 사용했던 Center를 "각 Cluster의 중심점"으로 새로 update
4. (2)과정 반복
5. (3)과정 반복
6. (2)과정 반복
7. (3)과정 반복
>> 이런식으로 계속 진행하다보면 결국 모든 Cluster가 수렴이 될 것이다.
- 아마 (7) Step으로 무감독 학습이 종료될 것이다
K-Means Clustering의 문제점
1. 군집 개수(K) 결정 문제
K-Means를 활용하려면 "학습 데이터"만 주는게 아니라 "몇개의 Cluster로 나눌지 : K"도 부여해야 한다
근데 데이터의 내용을 정확히 모르는 상태에서 인간이 미리 "K개로 묶어서 결과 도출해내라"라고 하는게 굉장히 어려운 문제이다
- 모든걸 파악할 수 있는 입장에서는 학습 데이터가 몇개의 Cluster로 나뉘는게 가장 최적인지 알겠지만, 데이터의 정확한 내용을 분석하지 않는 입장에서는 몇개의 Cluster가 최적인지 모르는게 당연하다
2. 초기 군집 Center 결정 문제 (Seed Choice)
K개를 우여곡절끝에 구했다고해도 전체 Set상에서 "K개의 Center"를 결정하는 문제도 굉장히 어려운 문제이다
K개의 Center를 굉장히 잘 선택했다면 수렴이 꽤 빠르게 되겠지만 만약 K개의 Center가 한곳에 집중적으로 모여있게 된다면 엄청난 시간이 소요되어서 수렴이 될 것이다
>> 결정적으로 초기 K개의 Center가 최종적인 Cluster가 어떻게 형성되느냐에 막대한 영향을 끼친다
3. 이상치 문제 (Outliers)
각 Data끼리 "거리"에 의해서 Cluster가 형성이 되는데 만약 Data들중에서 "이상한? 오류? 데이터(Outlier)"가 껴있을 경우 "Cluster의 품질"에 굉장한 영향을 미치게 된다
>> 물론 Outlier가 굉장히 많지는 않지만, 이러한 소수의 Outlier들만 존재해도 최종적인 Cluster의 품질이 크게 떨어진다
Hierarchical Algorithm
Top-Down : Divisive Clustering
1. 일단 모든 데이터들을 "하나의 그룹"으로 간주한다
2. 여기서 절반으로 데이터 그룹을 나눈다
>> Cluster가 수렴이 될때까지 (2) 과정을 반복 (Recursive)
Bottom-Up : Agglomerative Clustering
1. 각각의 개별 데이터들을 "하나의 Cluster"로 간주한다
2. Cluster끼리 쌍을 이루어서 새로운 Cluster를 생성해낸다