데이터분석 study/ML_ 심화

TIL_24.08.29_비지도학습

justdata 2024. 8. 29. 17:50

▶ 지도학습과 비지도학습

     1) 지도학습 : 문제(X)와 정답(Y)가 주어지고 문제(X)가 주어졌을 때

                          정답(Y)을 맞추는 학습

 

     2) 비지도학습 : 답(Y)을 알려주지 않고, 데이터 간 유사성을 이용해서 

                             답(Y)을 맞추는 학습

 

          ● 비지도 학습은 데이터를 기반으로 레이블링을 하는 작업

          ● 정답이 없는 문제이기 때문에 지도 학습보다 조금 어렵고

              주관적인 판단이 개입하게 된다.

 

            비지도학습 예시

              ○ 고객 특성에 따른 그룹화

                  ex) 헤비유저, 일반유저

 

              ○ 구매 내역별로 데이터 그룹화

                  ex) 생필품 구매

 

 

      ● K-means clustering 

        ○ K-means clustering 알고리즘의 단계

           1.k개 군집 수 설정

           2. 임의의 중심을 선정

           3. 해당 중심점과 거리가 가까운 데이터를 그룹화

           4. 데이터의 그룹의 무게 중심으로 중심점을 이동

           5. 중심점을 이동했기 때문에 다시 거리가 가까운 데이터를 그룹화

               (3 ~ 5번 반복)

              * 임의로 분석가가 선장한 k군집 수를 기준으로 데이터 군집화

                 프로세스를 진행

 

        ○ 거리 측정 방법

           - k-means 알고리즘은 주로 유클리드 거리(Euclidean Distance)를 사용하여

            데이터 포인트와 군집 중심 간의 거리를 계산

 

        ○ 엘보우 방법

           - 최적의 k를 선택하는 데 사용

           - k를 증가시키면서 각 k에 대한 군집의 응집도(wcss)를 계산하고, 

             이를 그래프로 나타내어 그래프에서 응집도가 급격히 감소하는 지점

              찾는다.

 

        ● K-Means 장점

            - 일반적이고 적용하기 쉬움

  

        K-Means 단점

           - 거리 기반으로 가까움을 측정하기 때문에 차원이 많을수록 정확도가 떨어짐

           - 반복 횟수가 많을수록 시간이 느려짐

           - 몇 개의 군집(k)을 선정할지 주관적임

           - 평균을 이용하기 때문에(중심점) 이상치에 취약함

 

        ● Python 라이브러리

          ○ sklearn.cluster.KMeans

              ○ 함수 입력 값

                  - n_cluster : 군집화 갯수

                  - max_iter : 최대 반복 횟수

 

              ○ 메소드

                 - labels_ : 각 데이터 포인트가 속한 군집 중심점 레이블

                 - cluster_centers : 각 군집 중심점의 좌표

 

 

      ● 다양한 군집화 평가 지표

       * 비지도 학습 특성 상 답이 없기 때문에 평가를 하기 쉽지 않다.

       * 군집화가 잘 되어 있다는 거은 다른 군집간의 거리는 떨어져 있고

          동일한 군집끼리는 가까이 있다는 거을 의미

 

        1) 내부 평가 지표(Internal Metrics)

            ● 실루엣 점수 (Silhouette Score) :

               - 각 데이터 포인트가 자신의 군집과 얼마나 잘 어울리는지 다른 군집과

                 얼마나 분리되는지를 평가.

               - 점수는 -1에서 1사이의 값을 가지며, 1에 가까울수록 더 나은 군집화를 의미

              ○ Python 라이브러리

                 - sklearn.metrics.silhouette_score : 전체 데이터의 실루엣 계수 평균 값 반환

                  ○ 함수 입력 값

                      - x : 데이터 세트

                      - labels : 레이블

                      - metrics : 측정 기준 기본은 euclidean

 

 

 

            ● 군집 내 E(Sum of Squared Errors)

               - 각 군집의 중심으로부터 데이터 포인트들 간의 거리의 제곱합

               - 낮을수록 군집이 잘 형성되었음을 의미

 

         2) 외부 평가 지표(External Metrics)

             : 사전에 정의된 레이블이 있을 때 사용하는 지표

 

              ● 정확도(Accuacy) : 예측된 군집과 실제 레이블이 일치하는 비율

              ● ARI(Adjusted Rand Index) :

                 - 랜덤으로 형성된 군집과 비교하여 실제 군집화가 얼마나 우수한지를

                    평가하는 지표

                 -  -1에서 1까지의 값을 가지며, 1에 가까울수록 더 나은 군집화를 의미

              

 

        ● DBSCAN 

           - 밀도 기반 군집화 알고리즘으로, 밀도가 높은 영역을 군집으로 정의

           - 노이즈 포인트를 제외할 수 있다는 점에서 K-Means와 차별화됨

from sklearn.cluster import DBSCAN

dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan.fit(X)

                

  * 그 외에도 다양한 비지도 학습 알고리즘들이 있으니

    적용하고 싶은 알고리즘이 있다면 찾아보기!!!