728x90
반응형
안녕하세요 늑대양입니다 🥳
오늘은 가짜연구소 스터디 19주차 학습 내용을 안내해드리도록 하겠습니다.
프로그램: Data Scientist - Python - 황지*님/이다*님
19주차 학습 주제: Unsupervised Learning in Python
19주차 학습 material URL: https://www.datacamp.com/courses/unsupervised-learning-in-python
Index
- Clustering for dataset exploration
- Visualization with hierarchical clustering and t-SNE
- Decorrelating your data and dimension reduction
- Discovering interpretable features
Genral 메모장 📝
- 쿨하게 생각하면 편한 요소 >> 컬럼==차원(Dimension)
- ML, DL 등의 코딩은 어렵지 않음 🤣
- 결국에는 어떤 모델, 알고리즘 및 함수를 왜 때문에 사용하는지 이해하는 것이 더 중요함!!
- 19주차에서 많이 사용된 Iris 데이터는 아래의 캐글 링크에서 다양하게 확인 가능!!
- Iris Sepcies URL from kaggle: https://www.kaggle.com/datasets/uciml/iris
c.f t-SNE
- t-SNE = t-distibuted stochasitc neighbor embedding (t-분산 확률적 이웃 임배딩)
- 고차원 공간의 샘플을 2차원 또는 3차원 공간으로 매핑하여 시각화 가능!!
- 샘플 사이의 거리를 대략적으로 표현
- 데이터 세트를 이해하는 데 유용한 시각적 보조 도구!!
- 적용할 때마다, 다른 feature를 보임 (군집은 동일)
c.f 차원 축소(Dimension reduction)
- 차원 축소는 데이터에서 패턴을 찾고 이러한 패턴을 사용하여 압축된 형태로 다시 표현!!
- 차원 축소의 가장 중요한 기능은 데이터 세트를 "뼈다귀"로 줄이는 것 🦴
- 회귀 및 분류와 같은 지도 학습 작업에 이슈가 생기는 요인을 날려버림
- PCA(Principal Component Analysis), NMF(Non-negative matrix factorization)등 활용 (Fundamental DR techinque)
- PCA는 두 단계 수행
- Decorrelation (비상관관계): 데이터의 차원 변경 X
- Reduces dimension
- 분산이 더 낮은 PCA 기능을 폐기하여 차원 축소 수행
- 높낮이를 통해 노이즈(버릴 feature)로 가정하고 더 높은 분산 PCA 기능을 유지하며, 해당 feature는 가져감
- 데이터의 고유 차원을 알고 있다면 당연히 선택하는 것이 좋음!!
- PCA는 두 단계 수행
c.f PCA 메모장 📝
- Aligns data with axes (1st step)
- Rotates data samples to be aligned with axes
- Shifts data samples so they have man 0
- 상관 관계가 있는 경우가 많음
- 하지만 PCA를 통해, 데이터의 상관 관계를 해제함!! (선형적 상관 관계 해제)
- 선형 상관 관계는 Pearson correlation을 통해 측정 가능 (-1 ~ 1)
- PCA follow the fit/transform pattern
- scikit-leran 활용
- fit 함수의 경우 샘플 데이터를 이동하고 회전하지만 변경하지는 않음!!
- transform 함수는 학습된 내용에 맞는 변형 적용!!
- transform 함수는 기존에 없었던 새로운 데이터에 적용 가능!!
- scikit-leran 활용
- Principal components (주성분)
- PCA는 데이터의 주성분을 학습하기 때문에 주성분 분석 이라고 함
- PCA 모델이 적용된 후, 주요 PC는 구성 요소 속성으로 사용 가능 (components_)
- 차원 축소에 PCA를 사용하려면 유지할 PCA feature의 수를 지정해야함!!
- 모든 가정과 마찬가지로 성립하지 않는 경우가 있음!! (그럼에도 불구하고 PCA는 대부분 잘 들어맞음🤣)
- 때때로 PCA의 대체 구현을 사용해야함
- ex) 단어 빈도 배열 (sparse[희소] array, a.k.a csr_matrix)
- scikit-learn은 csr_marix를 지원하지 않기 때문에 TruncatedSVD를 사용해야함
- SVD(Singular Value Decomposition): 특이값 분해
- scikit-learn은 csr_marix를 지원하지 않기 때문에 TruncatedSVD를 사용해야함
- ex) 단어 빈도 배열 (sparse[희소] array, a.k.a csr_matrix)
Intrinsic dimension(고유 차원) 메모장 📝
- 데이터 세트의 고유 차원은 이를 근사화하는데 필요한 feature의 수
- 고유 차원은 데이터 집합을 압축할 수 있는 정도를 알려줌!! >> 차원 축소!!
- PCA는 샘플 데이터가 많은 수의 feature 들을 갖고 있을 때, 고유 차원을 분별 가능!!
- 고유 차원은 분산이 높은 PCA 기능을 계산하여 식별 가능
- Intrinsic dimension = number of PCA features with significant variance
Non-negative matrix factorization (NMF) 메모장 📝
- NMF(Non-negative matrix factorization): 비음수 행렬 분해
- 차원 축소 테크닉
- PCA와 달리 NMF 모델은 해석 가능함 (interpretable) >> 설득이 더 쉽다!!
- 하지만 모든 데이터 세트에 적용은 불가능!!
- 샘플 특성이 음수가 아니어야함!!
- 음수가 아니라면 정말 여기저기 사용 가능!!
- Word frequencies >> topics
- Image >> part of images
- Audio spectogram
- Purchase histories
- etc..
- 음수가 아니라면 정말 여기저기 사용 가능!!
- 샘플 특성이 음수가 아니어야함!!
- NMF는 샘플을 부분의 합으로 분해하여 해석 가능성을 달성!!
- scikit-learn에서 사용 가능
- fit / transform 함수 사용 가능
- PCA와 달리 components 항목은 항상 명시해야함!
- NMF의 components 항목은 PCA의 주성분(principal components)과 유사함
- Components의 차원은 샘플 데이터의 차원과 동일
- NMF의 feature 와 components 를 통해 대략적인 샘플을 재구성 가능!!
- NMF feature * NMF comonents
- 재구성을 위해, 행렬의 곱으로도 표현 가능 (과정에서는 활용하지 않지만 Matrix Factorization, a.k.a MF[행렬 분해]에 활용)
Image 관련 알아두면 좋을 사항:
Grayscale images (회색조 이미지)
- 픽셀 단위로 매트릭스 표현 가능 >> ex) 3 * 3 이미지의 경우 [ 3 x 3 ] 행렬로 표현 가능!!
- 회색 음영만 있기 때문에 모든 픽셀의 밝기로 회색조 이미지 인코딩 가능!!
- 밝기는 0과 1사이로 표현하며, 0은 RD(Real Dark) >> 이로인해 무조건 NMF 사용 가능!! (음수 X)
- 배열에 대해, 평면화 작업도 가능!! [ 2 * 3 ] >> [ 1 * 6 ] 으로 표현 가능
- 배열에서 각 행은 이미지 평면화 작업 값, 각 열은 픽셀값으로 인코딩 가능
- 이미지 복구에 reshape 메소드를 사용할 수 있으며, 이미지의 차원을 튜플로 지정!!
- 해당 이미지 표시를 위해, pyplot 사용 + plt.imshow 함수 사용!!
Document 관련 알아두면 좋을 사항:
- 유사한 문서에는 유사한 주제가 있지만 NMF feature values는 동일하지 않음!!
- 간단 명료한 문장과 잡담과 같은 가벼운 문장 모두 원점을 통과하는 단일 선 상에 있을 수 있음 (유사한 주제일 경우)
- Document를 비교할 경우 cosine similarity 를 활용하는 것이 좋음 (더 높은 값이 더 큰 유사성을 나타냄, 최대값은 1)
- normalize 함수를 활용하여 NMF features 에 적용 후, 행에 대해 dot 으로 찍어서 코사인 유사도 확인 가능!!
- pandas 및 DataFrame을 활용해서도 계산 가능!! (df > normalize > loc > dot), 비교는 nlargest 함수 활용!!
긴 글 읽어주셔서 감사합니다 🤗
728x90
반응형
'Study > 가짜연구소: Data Scientist - Python' 카테고리의 다른 글
[가짜연구소] Data Scientist - Python 20주차 - Final (0) | 2023.02.21 |
---|---|
[가짜연구소] Data Scientist - Python 18주차. (0) | 2023.02.05 |
[가짜연구소] Data Scientist - Python 17주차. (0) | 2023.01.29 |
[가짜연구소] Data Scientist - Python 16주차. (0) | 2023.01.15 |
[가짜연구소] Data Scientist - Python 15주차. (0) | 2023.01.08 |