핸즈온 머신러닝
8장. 차원 축소

박해선(옮긴이)

haesun.park@tensorflow.blog

https://tensorflow.blog
(Handson ml)ch.8-dimensionality reduction
차원의 축소
• 수천, 수백만 개의 특성이 훈련 속도를 낮추고 솔루션을 찾기 어렵게 만듭니다.

• 특성의 수를 줄이는 차원 축소(비지도 학습)로 해결 가능한 문제로 변경 가능합니다.

• 예를 들어, 이미지 주변 픽셀을 제거하거나 인접한 픽셀을 평균내어 합칩니다.

• 차원 축소는 일반적으로 훈련 속도는 높아지지만 성능은 낮아지고 작업 파이프라인이
복잡해 집니다. 드물게 성능이 높아지는 경우가 있습니다(이상치 제거).

• 차원 축소는 데이터 시각화에도 유용합니다.

• PCA, 커널 PCA, LLE를 다룹니다.
차원의 저주
• 사람은 4차원 초입방체도 상상하기 어렵습니다.

• 1x1 사각형에서 0.001 이내의 면적은 1-(1-0.001x2)2=0.003996이므로 약 4%(사이 거리: 0.52)

• 10,000 차원 초입방체는 1-(1-0.001x2)10000=0.999999998이므로 99.99%(사이 거리: 428.25)

• 고차원의 대부분의 점들은 경계에 가까이 위치해 있습니다.
데이터 밀도
• 고차원 데이터셋은 샘플 간의 거리가 멉니다. 즉 희박합니다.

• 새로운 샘플에 대해 예측하려면 많은 보간이 필요합니다(과대적합 위험).

• 간단한 해결 방법은 데이터 밀도가 충분해질 때까지 데이터를 더 모으는 것입니다.

• 100개의 특성이 있는 경우 샘플 간의 거리를 0.1 이내로 하려면 10100개가 필요합니
다. 이는 우주 전체에 있는 원자수(1080)보다 많습니다.
투영
고차원 공간을
저차원 부분 공간으로
수직으로 투영
z1
z2
스위스롤(swiss roll)
투영
매니폴드 학습
매니폴드 학습
• 매니폴드(manifold)는 고차원 공간에서 휘어지거나 뒤틀린 2D 모양을 말합니다. d 차원 매니폴드는 더
높은 n 차원 공간에서 d 차원 초평면으로 볼 수 있습니다.
선형 결정 경계
복잡한 결정 경계
매니폴드 가정이 항상
성립하는 것은 아닙니다.
PCA
• 주성분 분석(Principal Component Analysis): 분산을 최대로 보존하는 초평면에 데
이터를 투영합니다(원본 데이터와 투영 사이의 평균 제곱 거리가 최소가 되는 초평면).
주성분
• 주성분은 서로 직교하며 데이터셋의 특성 개수만큼 찾을 수 있습니다.

• X를 주성분 w에 투영했을 때 분산은

• 공분산 행렬의 가장 큰 고윳값을 찾으려면

• 즉 특잇값 분해(SVD)에서 구한 V가 주성분입니다.
Var(Xw) =
1
n − 1
(Xw)T
Xw =
1
n − 1
wT
XT
Xw = wT 1
n − 1
XT
Xw = wT
Cw
C =
1
n − 1
XT
X =
1
n − 1
(UΣVT
)T
(UΣVT
) =
1
n − 1
(VΣUT
)(UΣVT
) =
1
n − 1
VΣ2
VT
= V
Σ2
n − 1
VT
평균이 0이라고 가정합니다
직접 주성분 구해서 투영하기
두 개의 주성분
svd() 함수는 V^T를 반환합니다
Xproj = X ⋅ Vd
사이킷런의 PCA
자동으로 중앙에 맞춥니다.
(60, 3)(60, 2)
pca.components_ 가 V^T 입니다.
설명된 분산의 비율
• 설명된 분산의 비율(explained variance ratio): 주성분의 축을 따라 있는 데이터셋의
분산 비율
C = V
Σ2
n − 1
VT
에서 고윳값
Σ2
n − 1
차원수 선택
재구성 오차
• 재구성 오차 = (원본 데이터 - PCA변환 뒤 복원한 것)2
Xproj = X ⋅ Vd Xrecov = Xproj ⋅ VT
d
95%의 설명된 분산
(52500, 154)
(52500, 784)
(52500, 784)
(154, 784)
점진적 PCA
• SVD를 사용하면 전체 데이터를 메모리에 적재해야 합니다. 대안으로
IPCA(Incremental PCA)를 사용합니다.
partial_fit 메서드 호출
fit 메서드는 batch_size 만큼 나누어
partial_fit 메서드를 사용합니다
• PCA의 계산 복잡도(공분산 + 고유벡터):

• 랜덤 PCA의 계산 복잡도:
랜덤 PCA
O(m × n2
) + O(n3
)
O(m × d2
) + O(d3
)
특성 수
주성분 수
커널 PCA
• 서포트 벡터 머신의 커널 트릭을 PCA에 적용해 고차원 공간에서 차원 축소를 하는 효
과를 만듭니다.
커널 PCA 하이퍼파라미터 튜닝
• 차원 축소는 종종 지도 학습의 전처리 단계로 사용됩니다.
재구성 원상
• 커널 PCA로 투영한 포인트는 커널 트릭이 적용된 고차원 공간으로 복원이 안됩니다.
기본값: False
LLE
• 지역 선형 임베딩(Locally Linear Embedding)은 훈련 샘플이 가까운 이웃과의 관계가 잘 보존
되는 저차원 표현을 찾습니다.
다른 차원 축소 기법
• 다차원 스케일링(MDS): https://scikit-learn.org/stable/modules/generated/
sklearn.manifold.MDS.html

• Isomap: https://scikit-learn.org/stable/modules/generated/
sklearn.manifold.Isomap.html

• t-SNE: <파이썬 라이브러리를 활용한 머신러닝> 3장

• 선형 판별 분석: Sebastian Raschka’s Python Machine Learning 2nd Ed.
감사합니다

More Related Content

PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
PDF
ドメイン駆動設計の捉え方 20150718
PDF
コルーチンでC++でも楽々ゲーム作成!
PDF
ドメイン駆動設計再入門
PDF
GoでシュッとWebスクレイピングする
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
PDF
Java EE から Quarkus による開発への移行について
KEY
大規模環境でRailsと4年間付き合ってきて@ クックパッド * 食べログ合同勉強会
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
ドメイン駆動設計の捉え方 20150718
コルーチンでC++でも楽々ゲーム作成!
ドメイン駆動設計再入門
GoでシュッとWebスクレイピングする
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
Java EE から Quarkus による開発への移行について
大規模環境でRailsと4年間付き合ってきて@ クックパッド * 食べログ合同勉強会

What's hot (20)

PPTX
凝集度と責務
PDF
GitHub Copilotとともに次の開発体験へ
PDF
Cloud Foundryは何故動くのか
PDF
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
PPTX
HoloLensで音声認識をする方法を色々試してみた
PPTX
Drone programming with ArduPilot
PDF
続・わかりやすいパターン認識_3章
PDF
C#の強み、或いは何故PHPから乗り換えるのか
PDF
20190721 gaussian process
PDF
モジュールの凝集度・結合度・インタフェース
PDF
BERTをブラウザで動かしたい! ―MobileBERTとTensorFlow.js―
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
PDF
本当に怖いパフォーマンスが悪い実装 #phpcon2013
ODP
Guide To AGPL
PPTX
전자해도세미나
PDF
리텐션의 산출과 활용
PDF
Dockerfileを改善するためのBest Practice 2019年版
PDF
RDBでのツリー表現入門
PDF
【Unity道場 2月】シェーダを書けるプログラマになろう
PDF
今なら間に合う分散型IDとEntra Verified ID
凝集度と責務
GitHub Copilotとともに次の開発体験へ
Cloud Foundryは何故動くのか
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
HoloLensで音声認識をする方法を色々試してみた
Drone programming with ArduPilot
続・わかりやすいパターン認識_3章
C#の強み、或いは何故PHPから乗り換えるのか
20190721 gaussian process
モジュールの凝集度・結合度・インタフェース
BERTをブラウザで動かしたい! ―MobileBERTとTensorFlow.js―
Python 3.9からの新定番zoneinfoを使いこなそう
本当に怖いパフォーマンスが悪い実装 #phpcon2013
Guide To AGPL
전자해도세미나
리텐션의 산출과 활용
Dockerfileを改善するためのBest Practice 2019年版
RDBでのツリー表現入門
【Unity道場 2月】シェーダを書けるプログラマになろう
今なら間に合う分散型IDとEntra Verified ID
Ad

Similar to (Handson ml)ch.8-dimensionality reduction (20)

PPTX
07. PCA
PDF
Digit recognizer
PDF
3.unsupervised learing(epoch#2)
PDF
3.unsupervised learing
PDF
[컴퓨터비전과 인공지능] 5. 신경망
PPTX
Neural network (perceptron)
PDF
차원축소 훑어보기 (PCA, SVD, NMF)
PDF
내가 이해하는 SVM(왜, 어떻게를 중심으로)
PPTX
머피's 머신러닝: Latent Linear Model
PDF
Chap06 dimensionality reduction
PDF
이정근_project_로봇비전시스템.pdf
PPTX
Eigendecomposition and pca
PPTX
2.supervised learning(epoch#2)-3
PDF
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
PPTX
Deep learning overview
PDF
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
PPTX
Learning method
PDF
DL from scratch(6)
PDF
코드와 실습으로 이해하는 인공지능
PDF
네트워크 경량화 이모저모 @ 2020 DLD
07. PCA
Digit recognizer
3.unsupervised learing(epoch#2)
3.unsupervised learing
[컴퓨터비전과 인공지능] 5. 신경망
Neural network (perceptron)
차원축소 훑어보기 (PCA, SVD, NMF)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
머피's 머신러닝: Latent Linear Model
Chap06 dimensionality reduction
이정근_project_로봇비전시스템.pdf
Eigendecomposition and pca
2.supervised learning(epoch#2)-3
밑바닥부터 시작하는 딥러닝 - 학습관련기술들 스크립트
Deep learning overview
캐빈머피 머신러닝 Kevin Murphy Machine Learning Statistic
Learning method
DL from scratch(6)
코드와 실습으로 이해하는 인공지능
네트워크 경량화 이모저모 @ 2020 DLD
Ad

More from Haesun Park (20)

PDF
사이킷런 최신 변경 사항 스터디
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기
PDF
(Handson ml)ch.7-ensemble learning and random forest
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 6장 결정 트리
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
PDF
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
PDF
7.woring with text data(epoch#2)
PDF
6.algorithm chains and piplines(epoch#2)
PDF
5.model evaluation and improvement(epoch#2) 2
PDF
5.model evaluation and improvement(epoch#2) 1
PPTX
4.representing data and engineering features(epoch#2)
PPTX
2.supervised learning(epoch#2)-2
PPTX
2.supervised learning(epoch#2)-1
PPTX
1.introduction(epoch#2)
PDF
7.woring with text data
PDF
6.algorithm chains and piplines
PDF
5.model evaluation and improvement
사이킷런 최신 변경 사항 스터디
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기
(Handson ml)ch.7-ensemble learning and random forest
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 6장 결정 트리
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 2장. 머신러닝 프로젝트 처음부터 끝까지
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
7.woring with text data(epoch#2)
6.algorithm chains and piplines(epoch#2)
5.model evaluation and improvement(epoch#2) 2
5.model evaluation and improvement(epoch#2) 1
4.representing data and engineering features(epoch#2)
2.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-1
1.introduction(epoch#2)
7.woring with text data
6.algorithm chains and piplines
5.model evaluation and improvement

(Handson ml)ch.8-dimensionality reduction

  • 1. 핸즈온 머신러닝 8장. 차원 축소 박해선(옮긴이) haesun.park@tensorflow.blog https://tensorflow.blog
  • 3. 차원의 축소 • 수천, 수백만 개의 특성이 훈련 속도를 낮추고 솔루션을 찾기 어렵게 만듭니다. • 특성의 수를 줄이는 차원 축소(비지도 학습)로 해결 가능한 문제로 변경 가능합니다. • 예를 들어, 이미지 주변 픽셀을 제거하거나 인접한 픽셀을 평균내어 합칩니다. • 차원 축소는 일반적으로 훈련 속도는 높아지지만 성능은 낮아지고 작업 파이프라인이 복잡해 집니다. 드물게 성능이 높아지는 경우가 있습니다(이상치 제거). • 차원 축소는 데이터 시각화에도 유용합니다. • PCA, 커널 PCA, LLE를 다룹니다.
  • 4. 차원의 저주 • 사람은 4차원 초입방체도 상상하기 어렵습니다. • 1x1 사각형에서 0.001 이내의 면적은 1-(1-0.001x2)2=0.003996이므로 약 4%(사이 거리: 0.52) • 10,000 차원 초입방체는 1-(1-0.001x2)10000=0.999999998이므로 99.99%(사이 거리: 428.25) • 고차원의 대부분의 점들은 경계에 가까이 위치해 있습니다.
  • 5. 데이터 밀도 • 고차원 데이터셋은 샘플 간의 거리가 멉니다. 즉 희박합니다. • 새로운 샘플에 대해 예측하려면 많은 보간이 필요합니다(과대적합 위험). • 간단한 해결 방법은 데이터 밀도가 충분해질 때까지 데이터를 더 모으는 것입니다. • 100개의 특성이 있는 경우 샘플 간의 거리를 0.1 이내로 하려면 10100개가 필요합니 다. 이는 우주 전체에 있는 원자수(1080)보다 많습니다.
  • 6. 투영 고차원 공간을 저차원 부분 공간으로 수직으로 투영 z1 z2
  • 8. 매니폴드 학습 • 매니폴드(manifold)는 고차원 공간에서 휘어지거나 뒤틀린 2D 모양을 말합니다. d 차원 매니폴드는 더 높은 n 차원 공간에서 d 차원 초평면으로 볼 수 있습니다. 선형 결정 경계 복잡한 결정 경계 매니폴드 가정이 항상 성립하는 것은 아닙니다.
  • 9. PCA • 주성분 분석(Principal Component Analysis): 분산을 최대로 보존하는 초평면에 데 이터를 투영합니다(원본 데이터와 투영 사이의 평균 제곱 거리가 최소가 되는 초평면).
  • 10. 주성분 • 주성분은 서로 직교하며 데이터셋의 특성 개수만큼 찾을 수 있습니다. • X를 주성분 w에 투영했을 때 분산은 • 공분산 행렬의 가장 큰 고윳값을 찾으려면 • 즉 특잇값 분해(SVD)에서 구한 V가 주성분입니다. Var(Xw) = 1 n − 1 (Xw)T Xw = 1 n − 1 wT XT Xw = wT 1 n − 1 XT Xw = wT Cw C = 1 n − 1 XT X = 1 n − 1 (UΣVT )T (UΣVT ) = 1 n − 1 (VΣUT )(UΣVT ) = 1 n − 1 VΣ2 VT = V Σ2 n − 1 VT 평균이 0이라고 가정합니다
  • 11. 직접 주성분 구해서 투영하기 두 개의 주성분 svd() 함수는 V^T를 반환합니다 Xproj = X ⋅ Vd
  • 12. 사이킷런의 PCA 자동으로 중앙에 맞춥니다. (60, 3)(60, 2) pca.components_ 가 V^T 입니다.
  • 13. 설명된 분산의 비율 • 설명된 분산의 비율(explained variance ratio): 주성분의 축을 따라 있는 데이터셋의 분산 비율 C = V Σ2 n − 1 VT 에서 고윳값 Σ2 n − 1
  • 15. 재구성 오차 • 재구성 오차 = (원본 데이터 - PCA변환 뒤 복원한 것)2 Xproj = X ⋅ Vd Xrecov = Xproj ⋅ VT d 95%의 설명된 분산 (52500, 154) (52500, 784) (52500, 784) (154, 784)
  • 16. 점진적 PCA • SVD를 사용하면 전체 데이터를 메모리에 적재해야 합니다. 대안으로 IPCA(Incremental PCA)를 사용합니다. partial_fit 메서드 호출 fit 메서드는 batch_size 만큼 나누어 partial_fit 메서드를 사용합니다
  • 17. • PCA의 계산 복잡도(공분산 + 고유벡터): • 랜덤 PCA의 계산 복잡도: 랜덤 PCA O(m × n2 ) + O(n3 ) O(m × d2 ) + O(d3 ) 특성 수 주성분 수
  • 18. 커널 PCA • 서포트 벡터 머신의 커널 트릭을 PCA에 적용해 고차원 공간에서 차원 축소를 하는 효 과를 만듭니다.
  • 19. 커널 PCA 하이퍼파라미터 튜닝 • 차원 축소는 종종 지도 학습의 전처리 단계로 사용됩니다.
  • 20. 재구성 원상 • 커널 PCA로 투영한 포인트는 커널 트릭이 적용된 고차원 공간으로 복원이 안됩니다. 기본값: False
  • 21. LLE • 지역 선형 임베딩(Locally Linear Embedding)은 훈련 샘플이 가까운 이웃과의 관계가 잘 보존 되는 저차원 표현을 찾습니다.
  • 22. 다른 차원 축소 기법 • 다차원 스케일링(MDS): https://scikit-learn.org/stable/modules/generated/ sklearn.manifold.MDS.html • Isomap: https://scikit-learn.org/stable/modules/generated/ sklearn.manifold.Isomap.html • t-SNE: <파이썬 라이브러리를 활용한 머신러닝> 3장 • 선형 판별 분석: Sebastian Raschka’s Python Machine Learning 2nd Ed.