PCA는 Principal Component Analysis의 약자로 주성분 분석, 차원 축소를 진행하는 기법이다. PCA의 목적은 고차원의 정보들을 저차원의 정보로 변환하면서 최대한 손실 없이 변환하는 것이다. 이는 실제로 설명변수가 너무 많으면 머신러닝 알고리즘을 적용할 때 어려움(학습속도, 과적합 등)을 겪기 때문에 이 문제점을 해결하면서 정보손실은 없어야 한다. 우선 고차원의 데이터를 저차원으로 바꾸려면 정사영, Projection을 진행해야 하는데 중요한 점은 어느 벡터에 정사영을 시켜야 기존의 정보를 많이 잃지 않느냐는 것이다. 이를 이해하기 위해 공분산행렬에 대해 알아보자. - 공돌이의 수학 노트- 공분산행렬의 기하학적인 형태에 대해 간단하게 설명해 보면 왼쪽과 같이 원의 형태로 주어져있는 ..
ML & DL/개념정리
1. Grad-CAM 소개 CAM은 Global average pooling layer가 없는 모델들에 한해서는 사용하기 어려웠고(사용하려면 모델 재학습 필요), 마지막 feature map에 대한 것만 시각화할 수 있다는 단점이 존재하였다. 이때 기존 네트워크 구조를 그대로 유지하면서 CAM과 유사하게 특징맵을 시각화할 수 있는 Grad-CAM이 2017년도에 등장하였다. 2. Grad-CAM 원리 우선 간단하게 CAM과의 차이를 말하자면, CAM은 Global Average Pooling layer을 거쳐 나온 벡터를 fc layer에 통과시킴에 따라 가중치를 계산하여 해당 가중치를 feature map에 곱하는 방식이었고, Grad-CAM은 동일한 원리인데 가중치를 GAP을 거치는 것이 아닌 Gra..
1. CAM 소개 오늘은 CAM: Class Activation Map이라는 기법에 대하여 알아볼 것이다. 해당 기법은 모델이 이미지의 어떤 위치를 보고 각각의 class를 예측하는지를 시각화하는 기법이라고 생각하면 간단하다. 기존 이미지 분류 모델들은 좌측 이미지처럼 각 layer을 거쳐 feature map을 뽑아서 해당 feature map을 flatten 시켜 Fully connected layer을 거쳐 각각의 클래스에 대한 확률을 얻게 된다. 그러나 이러한 flatten을 함으로써 이미지의 spatial한 정보를 잃게 된다. CAM은 `fully connected layer` 대신에 `Global Average Pooling`을 이용하여 spatial 정보를 잃지 않고 확률값을 얻게 하였다. ..
0. 활성화함수 활성화함수는 이전에도 여러 번 말했듯이 모델에 비선형성을 부여하기 위해 사용된다. 선형함수의 layer들로만 구성할 경우 아무리 많이 쌓아도 결국 선형함수 하나로 표현되기 때문에 이는 레이어를 깊게 쌓는 의미가 없다. 따라서 적절한 선형함수를 적용해줘야 한다. 이번 글에서는 아주 간단하게 각 활성화 함수들의 특징에 대하여 알아보고자 한다. 1. Sigmoid $$ \sigma(x) = \frac{1}{1+e^{-x}} $$ 입력값과 상관없이 출력값이 반드시 0~1 사이 연속적이고 모든 값에 대하여 미분 가능 -> 출력값이 0 혹은 1에 가까울수록 미분값이 0에 가까워지는 gradient vanishing 문제 -> 이로 인해 잘 쓰이지 않음 -> 분류 문제에서 마지막 출력층에 사용됨 함숫..
1. Feature Engineering 파생변수란 기존 변수의 정보를 토대로 정제 및 생성을 하여 만들어진 변수를 의미한다. 이전에 범주형, 수치형 변수를 처리할 때 사용했던 함수변환, 스케일링, 구간화 등도 이러한 파생변수를 생성하는 것의 일종이다. 또 다른 방법으로는 도메인 지식을 활용하여 기존의 변수들을 조합하여 새로운 변수들을 생성하는 방법도 있다. 파생변수 생성은 변수 간의 연관관계를 파악하기 쉽게 만듦으로써 모델의 성능향상을 기대할 수 있으며, 정보의 손실을 줄이면서 메모리를 최적화시킬 수 도 있고, 도메인을 활용함으로써 해석적인 관점을 제공할 수 있다. 함수 변환과 스케일링, 구간화에 대해서는 이미 다뤄봤기 때문에 나머지 파생변수를 만드는 방법에 대해서 알아보겠다. 1-1. 분할(Split..
이번시간에는 데이터 전처리 과정에 포함되어 있는 연속형 변수와 범주형 변수를 처리하는 과정에 대하여 알아볼 것이다. 우선 데이터, 변수는 위와 같이 크게는 수치형과 범주형으로 나뉘고 각각 연속형과 이산형 그리고 순위형과 명목형으로 분류된다. 모델에 input 데이터를 넣기전에 연속형이나 범주형 변수의 처리를 진행해줘야 제대로 모델이 돌아가며 성능이 좋아질 수 있다. 각각의 변수는 다음과 같은 처리를 진행할 것이다. 1. 연속형 변수 1-1. 함수변환 1-1-1. Log Transform 로그변환이란 비대칭된 임의의 분포를 정규분포에 가깝게 전환시키는 역할을 한다. 데이터를 정규화시키는 것은 모델의 성능을 향상시키는데 도움을 주며, 로그화를 통해서 데이터의 스케일을 작게 만들어 데이터 간의 편차를 줄이는데..