Deep 비지도학습

매일 공부(ML)·2021년 10월 15일
0

CS 

목록 보기
14/33

정의

: training data without label, 이것을 가지고 학습하는 방식

군집화(clustering)

  • 정의: 명확한 분류 기준이 없는 상태에서 유사한 것끼리 그룹화를 시키는 것

  • 사용분야: 데이터 분석, 고객 분류, 추천시스템, 검색 엔지, 이미지 분할, 준지도학습, 차원축소 등에 사용되는 도구

  • 샘플의 레이블은 샘플에 할당한 클러스터의 인덱스입니다.

  • 하드 군집: 샘플을 하나의 클러스터에 할당한다

  • 소프트 군집: 클러스터마다 샘플에 점수 부여

*점수: 샘플과~센트로이드 사이의 거리, 유사도 점수.

군집화의 예시 1. K-means

: 임의로 지정한 k의 중심점이 new label역할이다.

: KMeans 클래스의 인스턴스는 labels_인스턴스 변수에 훈련된 샘플의 레이블

: 데이터들끼리의 거리를 측정해야한다.(데이터를 좌표 축에 놓고 점과 점사이의 거리 구하기[피타고라스 정리], [L2 distance])

: 클러스터의 크기가 많이 다르면 작동을 잘 못함

: trasform() - 샘플과 각 센트로이드 사이의 거리 반환

: 알고리즘 순서

I) k 결정(이니셔 그래프를 통해서 그래프가 꺽이는 점인 엘보 찾기)

II) 무작위로 K의 중심점 선정( 클러스터 대표)

III) 중심점과 나머지 점들 사이의 L2 구하여 가장 가까운 거리를 가진 중심정의 클러스터에 속하도록 함

IV) K개의 클러스터의 중심점을 재조정하여 특정 클러스터의 모든 점들을 평균값으로 만든 후
iteration의 중심점이 됨(실제 데이터가 아니어도 됨)

V) 재조정된 중심점을 바탕으로 다시 l2거리를 구한 후 가장 가까운 거리 점 재배정.

VI) IV~V과정 반복 수행하여 특정 iteraton이상이 되면 수렴(중심점 변화X)됨.

  • K-평균 속도 개선

: 삼각 부등식( 두 점 사이의 직선은 항상 짧은 거리 유지). 상한선 하한선 유지

  • 미니배치 K-평균

: 전체를 사용해서 반복하는 것이 아닌 조금씩 조금씩 이동한다.

  • K-means가 사용되지 않는 모양 분포

이유: 군집의 개수를 미리 지정해야하는데 그것을 파악하기 힘들다.

: L2거리가 멀면 연관 데이터 일지라도 군집화 불가.

  • 원형

  • 달모양

  • 대각선

군집화의 예시 2. DBSCAN

: 밀도 기반의 군집 알고리즘

: k를 미리 지정하지 않는다.

: 조밀하게 몰려있는 클러스터를 군집화하는 방식이다.

: 원 모양 + 다른 불특정한 형태로도 보인다.

: 최초의 임의점을 중점으로 점점 퍼져나가는 방식이다.

: 데이터 수가 많으면 시간이 오래 걸리게 된다

: k를 지정하지 않기에 데이터 분포에 맞는 epsilon 과 minPts 값 지정해줘야한다.

  • epsilon: 클러스터의 반경

  • minPts: 클러스터를 이루는 개체의 최솟값

  • core point: 반경 epsilon 내에 minPts 개 이상의 점이 존재하는 중심점

  • border point: 군집의 중심이 되지는 못하지만, 군집에 속하는 점

  • noise point: 군집에 포함되지 못하는 점

  • 작동 방식

i) 각 샘플에서 작은 거리인 입실론 내에 샘플이 몇 개 놓여있는지 세고 그 지역을 샘플의 입실론 이웃이다.

ii) 입실론 내에 적어도 min_samples 샘플이 있다면 이것은 핵심 샘플(밀집된 지역).

iii) 핵샘 샘플 이웃인 모든 샘플은 동일한 클러스터에 속하고, 다른 핵심 샘플이 포함이 됩니다. 따라서 핵심 샘플의 이웃의 이웃은 계속해서 하나의 클러스터 형성하낟.

iv) 핵심 샘플도 아니고 이웃샘플도 아니면 이상치로 판단한다.

** 알고리즘 동작 순서

  • 임의의 점 p를 설정하고, p를 포함하여 주어진 클러스터의 반경(elipson) 안에 포함되어 있는 점들의 개수

  • 만일 해당 원에 minPts 개 이상의 점이 포함되어 있으면, 해당 점 p를 core point로 간주하고 원에 포함된 점들을 하나의 클러스터로 묶어요.

  • 해당 원에 minPts 개 미만의 점이 포함되어 있으면, 일단 pass 합시다.

  • 모든 점에 대하여 돌아가면서 1~3 번의 과정을 반복하는데, 만일 새로운 점 p'가 core point가 되고 이 점이 기존의 클러스터(p를 core point로 하는)에 속한다면, 두 개의 클러스터는 연결되어 있다고 하며 하나의 클러스터로 묶어줘요.

  • 모든 점에 대하여 클러스터링 과정을 끝냈는데, 어떤 점을 중심으로 하더라도 클러스터에 속하지 못하는 점이 있으면 이를 noise point로 간주해요. 또한, 특정 군집에는 속하지만 core point가 아닌 점들을 border point라고 칭해요.

*** 알고리즘 코드 치기

https://github.com/qsdcfd/study-36/blob/main/DBSCAN.ipynb

차원 축소(dimensionality)

차원의 저주

: ML에서 데이터 특성 증가 -> 차원 증가-> 데이터 공간의 부피 증가-> 데이터 밀도 감소

--> 오버피팅의 위험이 커진다.

  • 해결: 학습 데이터 크기 증가 -> 데이터의 밀도 높아짐 ( 쉽지 않은 방식, 데이터 크기가 커지면 차원 또한 커지기 때문이다.)

차원 축소를 위한 접근 방법

  1. 투영(Projection)

: 학습 데이터셋의 데이터들이 차원이 고르게 분포가 되지 않고 있기 때문에 고차원에서부터 저차원의 공간에 이르기까지 다양하게 있다. 그렇기 때문에 3차원의 공간의 데이터를 2차원 부분공간으로 투영시키는 것이 가능하다.

  1. 매니폴드 학습(Manifold Learning)

: 유클리드 공간과 닮은 위상 공간이므로 독특한 위상수학적 구조를 갖고 있는 매니폴드를 모델링하는 방식으로 학습하는 것.

: 고차원인 실제 데이터셋이 더 낮은 저차원 매니폴드에 가깝다고 가정.

: 허나 저처원의 결정경계를 찾는 것이 어려워서 위의 가정은 case by case로 이용

PCA (주성분 분석)

  • 정의: 차원 축소 알고리즘으로 데이터에 가장 가까운 초평면 구현 후 투영

  • 목적: 원 데이터의 분산을 최대한 보존하는 축을 찾아서 투영함

  • 상황: 방대한 정보 속에서 찾고 싶은 정보를 찾도록 특징 추출을 할 때 사용된다.

  • 특징: 데이터의 분산을 최대로 보존하면서, 서로 직교하는 기저(basis)를 찾아 고->저 투영. 선형적 데이터를 가지고 있을 때 정보 보존이 잘 됨

    : 기존의 feature를 선형 결합하는 방식이다.

  • 주성분 단계

    I) 학습 데이터셋에서 분산이 최대인 축 찾기

    II) 첫번 째 축과 직교하면서 분산이 최대인 두번 째 축 찾음

    III) 첫번 째 축과 두번 째 축에 직교하고 분산을 보존하는 세번 째 축 찾기

    IV) I~III 과정을 통해서 데이터셋의 차원만큼 축 찾기

    V) i-번째 축 정의: 단위벡터를 i-번째 주성분이라고 한다.

  • 주성분: 데이터 중 분산이 가장 큰 방향벡터이다.

  • 분산 보존

: 적절한 초평면 선택에 핵심.

: 원본 데이터와 투영된 데이터 셋 간의 평균제곱 거리 최소화

  • PCA 구하는 과정
  1. 공분산(Covariance) 구하기

: 2개의 특성(변수)간의 상관 정도를 나타낸 값

  1. PCA 계산

https://github.com/qsdcfd/study-36/blob/main/PCA.ipynb

  1. PCA 예제

https://github.com/qsdcfd/study-36/blob/main/PCA%EC%98%88%EC%A0%9C.ipynb

T-SNE

  • 정의: 시각화에 많이 쓰는 알고리즘으로 고차원 데이터를 저차원으로 만들어서 우리 눈에 보이도록 함

  • 특징: 방사형적, 비선형적 데이터에서 주로 이용

  • 목표: 기존 차원의 공간에서 가까운 점들은 차원 축소된 공간에서도 여전히 가깝게 유지

profile
성장을 도울 아카이빙 블로그

0개의 댓글