광주인공지능사관학교 pre-course_정리6

손예진·2022년 7월 18일
0

ai 이론에 대해서 마저 작성하겠다.

  1. 군집
    :군집은 비지도 학습에 속함
    :비지도 학습은 지도학습과는 달리 학습이라는 것을 시켜줄 클래스 레이블이 없는 상태에서 학습을 진행
    :군집은 정답을 모르는 데이터 안에서 숨겨진 구조를 찾는 것
  2. K-평균 (k-means)
    :k 평균 알고리즘은 구현이 무척이나 쉽고, 다른 군집 알고리즘에 비해 계산 효율성이 무척 높기에 인기가 많다.
    :보통 학계나 산업현장에서 사용되는 기법은 다르기 마련인데, 이 기법은 모두 널리 사용되고 있다.
    :또 이 알고리즘은 프로토타입 기반 군집에 속하는데, 이 프로토 타입 기반 군집이란 각 클러스터가 하나의 프로토타입으로 표현된다는 의미임.
    :이 프로토 타입은 연속적인 특성에서는 비슷한 데이터 포인트의 센트로이드거나, 범주형 특성에서는 메도이드가 된다. 이러한 k평균 알고리즘은 원형 클러스터를 구분하는데는 뛰어나지만, knn알고리즘과 마찬가지로 사전에 몇개의 클러스터를 만들 것인지에 대해 직접 지정해 줘야 한다는 다소 주관적인 사람의 판단이 개입된다.적절한 k값을 선택했다면 높은 성능을 발휘하지만, 반대로 적합하지 않은 k값을 선정했다면 군집 성능 또한 보장할 수 없음
    :목표는 특성의 유사도에 기초하여 데이터들을 그룹으로 모으는 것
  1. k 평균 4단계 알고리즘

    1. 데이터 포인트에서 랜덤하게 k개의 센트로이드르르 초기 클러스터 중심으로 선택
    2. 각 데이터를 가장 가까운 센트로이드에 할당함
    3. 할당된 샘플들의 중심으로 센트로이드를 이동시킴
    4. 클러스터 할당이 변하지 않거나, 사용자가 지정한 허용오차나, 최대 반복횟수에 도달할 때 까지 두번째와 세번째 과정을 반복한다.

    :일반적으로 임의의 차원 공간에 있는 두 데이터 포인트 x와 y 사이의 유클리디안 거리 혹은 유클리디안 거리 제곱 지표를 기반하여, 간단한 최적화 문제로 k평균 알고리즘을 설명할 수 있다. 즉, k-means도 최적화 문제라고 할 수 있다

  2. 어떻게 최적화를 시키냐?
    :클러스터 내의 제곱 오차합(SSE)를 반복적으로 최소화하는것
    :d(x,u)에서 u라는 기호는 임의의 클러스터의 대표 센트로이드(중심), x는 임의의 점?, d는 둘 사이의 거리라는 뜻
    :w라는 값은 측정하려는 데이터와 클러스터에 의해 데이터가 클러스터 내에 있다면 1, 아니면 0의 값 출력.
    :또 유클리디안 거리 제곱 방식을 통해 알고리즘의 두번째 단계처럼 센트로이드와 가장 가까운 데이터에 대하여 클러스터의 센트로이드 간 거리를 계산하게 됨 이렇게 계산된 값이 클러스터 내의 오차 제곱합이 되는 것.
    :종합해 보면, 각 데이터를 가장 가까운 센트로이드에 할당할 때마다, 센트로이드는 이동하게 됨. 이렇게 센트로이드가 변화할 때마다 이러한 오차 제곱합을 반복적으로 계산하면서 변화량에 대한 허용 오차값이 일정 수준내로 들어온다면 더이상 클러스타가 변화하지 않는다는 뜻이고 최적화가 완료되었다는 뜻
    :각 점들간의 거리를 측정할 때, 점들간의 단위와 변동폭이 크다면 당연히 왜곡이 일어날 수 있다.
    :이러한 경우 왜곡을 줄이고자, 거리 산출 시 불필요한 항목간의 특성을 제거하고, 단위를 일치시키는 '표준화' 과정을 진행해주시면 좀 더 좋은 결과를 가져 올 수 있다.

    1. 클러스터 중심을 임의의로 3개 할당.
    2. 두번째 속성은 기본 k평균 설정
    3. 다음은 각기 다른 랜덤한 센트로이드에서 독립적으로 몇 번 실행하여 가장 낮은 제곱 오차 값을 만들것이냐를 물어보는거 그리고 그 중 가장 낮은 값을 만드는 모델을 최종적으로 선택하게 됨.
    4. 다음은 알고리즘에서 두번째와 세번째를 한번에 실행해서 최대 몇번이나 반복해서 실해하는지를 알려주는 부분,
    5. 이 때 만약 클러스터 내의 제곱 오차 합 변화량에 대한 허용오차 값에 도달하게 되면 일찍 종료하게 됨

    fit_predict 는 군집분석 알고리즘에 의한 예측 클래스 레이블

    :k평균 군집 알고리즘의 또 다른 문제점

    :초기 센트로이드를 설정할 때, 랜덤으로 위치를 선정하다보니, 애초에 잘못 선정된 곳에서 시작한 경우와 더불어 데이터가 적은 악조건이 붙게 된다면 클러스터의 성능이 매우 불안정 해지게 된다
    :우리가 가진 데이터가 시각화가 가능한 차원의 데이터가 아닌 고차원의 데이터인 경우, 임의의 k값 설정은 여전히 위험 부담이 크다
    :또한 k 평균 은 이러한 특징을 가정하는데 이러한 특징과 가정은 생각보다 큰 리스크를 불러올 수 있다. 예를 들어 다차원의 경우가 아니더라도 데이터가 꼭 하나의 클러스터에만 구분되리란 법은 없으니까.
    :그럼 이러한 특징과 가정 극복은 힘들지만 적어도 초기 센트로이드만은 현명하게 할당할 수 있는 k 평균 ++ 알고리즘이 개발됨.

  3. K-means++

    :코드에 나온 값이 기본값임.
    :이 기법의 핵심은 초기 센트로이드가 서로 멀리 떨어지도록 위치시키는 것. 이는 기본 k 평균보다 훨씬 일관되고 좋은 결과를 보여줌

  4. inertia
    :비지도 학습은 정답이 없기 때문에 지금처럼 군집을 이뤘다 한들 최종 답을 모른다. 즉 지도학습의 성능 평가 기법을 적용할 수 없다. 그래서 군집 품질을 평가해야 하는 경우 알고리즘 자체의지표를 사용해야함.
    :예를 들어 k평균 군집의 성능을 비교하기 위해서는 클러스터 내 오차 제곱합을 사용함. 다행이도 이 지표를 손쉽게 구해주는 방법이 있는데, 바로 사이킷런을 사용하는 것.
    :앞서 kmeans 모델 학습을 진행한 객체가 있는데, 이 안에는 '관성'이란 뜻을 가진 inertia_ 속성에 이미 계산이 완료되어 있다.
    :출력 값은 70 점대의 값이지만, 이 값이 적절한 값인지는 k를 다양한 값으로 할당한 후에 외곡값을 비교해봐야 됨 이러한 방식이 엘보우 방식

  5. 엘보우 방법
    :최적인 클러스터 개수 k를 추정
    :직관적으로 생각을 해보면 k값의 증가는 센트로이드가 늘어나는 것이고, 이는 데이터들이 센트로이드에 더 가까워 지는 것이니 자연스럽게 왜곡값이 줄어들 것이라 생각할 수 있다. 그리고 이 기법의 이면에 있는 아이디어가 바로 왜곡이 빠르게 증가하는 지점의 k값을 찾는 것. 그럼 적절한 k 값을 추정하기 위해 k를 1부터 10까지 구축해보고 각각의 SSE 값을 한번 시각화 해보자

8.실루엣 분석
:클러스터 내 데이터들이 얼마나 조밀하게 모여있는지를 측정하는 그래프 도구

:공식을 자세히 보면 응집력과 분리도가 같다면 실루엣 계수는 0이 된다.
:응집력 보다 분리도가 크다면 이상적인 실루엣 계수 1에 가깝게 된다.
:분리도는 데이터가 다른 클러스터와 얼마나 다른지를 나타내고, 응집력은 클러스터 내 다른 샘플과 얼마나 비슷한지를 나타내기 때문
:응집력은 작을 수록 클러스터 내 다른 데이터들과 비슷하다는 뜻
:그리고 만약 두 값이 같다면 클러스터는 중첩되어 있다는 의미가 된다.
profile
딥러닝 공부중 🦴

0개의 댓글