혼자 공부하는 머신러닝 Chapter 6, 7

Wonseok Lee·2024년 1월 25일

그동안 혼자 책보고 공부하면서 노션에 적었던 글을 옮겨 적으면서 복습하려고 적는 글입니다.

Chapter 6

비지도 학습

  • 타깃값이 없을 때 데이터의 패턴을 찾거나 데이터 구조를 파악하는 머신러닝 방식
  • 대표적인 비지도 학습: 군집(Clustering)

transform() → StandardScaler 클래스처럼 특성 값을 변환하는 도구로 사용 가능

클러스터의 중심을 특성공학처럼 사용해 데이터셋을 저차원으로 변환할 수 있음( 책의 예시에서는 10,000 → 3)

최적의 k값 찾기

실전에서는 몇개의 클러스터가 있는지 알 수 없기 때문에 이 값을 찾아줘야함.\

적절한 클러스터 개수를 찾기 위한 대표적인 방법: 엘보우

이너셔: 클러스터의 중심과 클러스터에 속한 샘플 사이의 거리 제곱 합

주성분 분석

차원을 줄일 수 있다면 저장 공간을 크게 절약할 수 있을 것임.

교재에서 10,000개의 특성을 50개로 줄임. 이로인해 어느 정도 손실이 발생할 수 밖에 없음.

하지만 최대한 분산이 큰 방향으로 데이터를 투영했기 때문에 원본 데이터를 상당 부분 재구성할 수 있음. → inverse_transform() 메서드 제공

주성분이 원본 데이터를 얼마나 잘 나타내는지 기록한 값 → 설명된 분산(explained variance)

PCA로 훈련 데이터의 차원을 축소하면 저장 공간뿐만 아니라 머신러닝 모델의 훈련 속도도 높일 수 있음.

Chapter 7

인공 신경망

가장 기본적인 인공 신경망 → 확률적 경사 하강법을 사용하는 로지스틱 회귀

Keras의 레이어 패키지 안에는 다양한 층이 준비되어 있음.

가장 기본이 되는 층 → 밀집층

텐서플로에서는 정수로 된 타깃값을 원-핫 인코딩으로 바꾸지 않고 사용 가능

정수로된 타깃값을 사용해 크로스 엔트로피 손실을 계산 → sparse_categorical_crossentropy

(if, 원-핫 인코딩으로 준비했다면 loss = ‘categorical_crossentropy)

metrics → 에포크마다 손실 값을 출력

케라스에서 모델을 평가하는 메서드는 evaluate()

입력층과 출력층 사이에 밀집층이 추가 → 은닉

렐루 함수

패션 MNIST 데이터는 28 x 28 크기이기 때문에 인공 신경망에 주입하기 위해 넘파이 배열의 reshape 함수를 이용 → 1차원으로 펼침. (이렇게 해도 좋지만 케라스에서는 Flatten 층을 제공)

옵티마이저

  • 신경망에는 하이퍼파라미터가 많음.
  • 케라스는 다양한 종류의 경사하강법 알고리즘을 제공함. → 옵티마이저

드랍아웃

층에 있는 일부 뉴런을 랜덤하게 껴서 과대적합을 막음.

훈련된 모델의 파라미터를 저장 → save_weight()

모델 구조와 모델 파라미터를 함께 저장 → save()

0개의 댓글