주제
1. 데이터 모델링
2. 선형회귀(Linear regression)
3. 비용 함수 : 평균 제곱오차(MSE)
4. 옵티마이저 : 경사하강법 (Gradient Descent)
5. Regularization
6. Logistic regression
7. Support Vector Machine(SVM) & Random forest
데이터모델링이란?
- 주어진 데이터에서 사용하고자 하는 x, 알고 싶은 값 y가 있을 때 x와 y의 관계를 효과적으로 설명하는 함수 f()를 만드는 일
- x는 독립변수(feature), y는 종속변수(label)라고 함
- y값의 존재 여부에 따른 분류 :
| y값이 존재하는 경우 | y값이 존재하지 않는 경우 |
| supervised learning | unsupervised learning |
- y값의 데이터 종류에 따른 문제 분류 :
| 연속형인 경우 | categorical 값인 경우 |
| regression task | classification task |
데이터 모델링 과정
- 전처리 및 분석
- 데이터를 training set, test set으로 나눔
- training set에 대해 사용할 모델을 학습시킴
- test set에 대해 학습된 모델의 예측값을 통해 모델의 성능을 평가(실제값과 예측값 비교)
- 모델의 성능이 충분히 쓸만하다고 판단될 때, 새로운 데이터에 대해 학습된 모델을 이용해 y값을 예측
선형회귀 (Linear Regression)
- 주어진 데이터로부터 y와 x의 관계를 잘 나타내는 직선을 그리는 일
- x와 y 간에 선형의 관계가 있다고 가정할 때 사용
- 단순 성형 회귀 분석 : y와 x가 모두 1개씩일 때
- 예측값이 실제 y값과 최대한 가까워지는 w(weight, 가중치)와 b(bias, 편향)값을 찾는 과정
- 그래프 시점에서 w는 직선의 기울기, b는 절편

- 다중 선형 회귀 분석 : y는 1개이지만 x가 여러 개일 때


비용 함수(Cost function) : 평균 제곱 오차(MSE)
- 비용 함수 혹은 손실 함수(Loss function) : 예측값의 오차를 줄이는 일에 최적화된 식, 값을 최소화하려고 하는 것이 비용함수
- 오차(error) : 주어진 데이터에서 각 x에서의 실제 y와 직선에서 예측하고 있는 H(x)값의 차이
- 평균 제곱 오차(Mean Squared Error, MSE) : 회귀문제에서 사용되는 비용 함수의 종류
- 오차의 크기를 측정하기 위한 가장 기본적인 방법 : 오차를 모두 더하기
- [그림1-1] 하지만 오차를 더하면 음수 오차나 양수 오차 둘 다 나올 수 있으므로 모든 오차를 제곱하여 더하는 방법을 사용(n은 데이터 개수)
- [그림1-2] 데이터의 개수인 n으로 나누면 오차의 제곱합의 평균을 구할 수 있다 → MSE


- 평균 제곱 오차의 값을 최소값으로 만드는 w와 b를 찾는 것
- 모든 점들과의 오차가 클수록 평균 제곱 오차는 커지고, 오차가 작아질수록 평균 제곱 오차도 작아진다
- 따라서, 평균 최소 오차(Cost(w,b))를 최소로 만드는 w와 b를 구하면 결과적으로 y와 x의 관계를 가장 잘 나타내는 직선을 그릴 수 있다
옵티마이저(Optimizer) : 경사하강법(Gradient Descent)
- w와 b를 찾기 위해 사용되는 알고리즘을 옵티마이저라고 한다
- 옵티마이저를 이용하여 찾아내는 과정 → 훈련(training) 또는 학습(learning)
- Cost와 w의 관계를 그린 그래프 :
- 기울기(w)가 무한대로 커지면 cost도 무한대로 커지고, 작아지면 무한대로 작아진다
- 결국 cost가 가장 작을 때는 볼록한 부분의 맨 아래 부분 즉, 접선의 기울기가 0 혹은 미분값이 0인 지점이다
- 따라서 그 부분의 w를 찾는 과정이 필요하다

- 경사하강법(Gradient Descent) :
- 임의의 랜덤값 w를 설정한 후, 맨 아래 볼록한 부분을 향해 점차 수정해나가는 것
- 비용함수를 미분하여 현재 w에서의 접선의 기울기를 구하고, 점점 낮은 방향으로 w값을 변경하여 다시 미분하고 ...
- 접선의 기울기가 0인 곳을 향해 값을 변경하는 작업을 반복
- 그렇다면 그냥 한번에 w값을 하강시키면 되지 않을까?
- α : 학습률(learning rate) - w의 값을 변경할 때 얼마나 크게 변경할지를 결정하며 0과 1 사이의 값을 가진다
- α가 지나치게 크면 cost값이 발산하고, α가 지나치게 낮으면 학습 속도가 느려진다 → 적당한 α값을 찾아내는 것도 중요

Overfitting
- fitting : 머신러닝에서 학습 또는 훈련하는 과정
- overfitting(과적합, high variance) : 훈련 데이터를 과하게 학습한 경우, 성능 측정을 위한 데이터인 테스트 데이터나 실제 서비스에서는 정확도가 떨어진다
- 모델이 generalization되기 어려워진다
- 보통 데이터에 내재된 복잡도보다 모델의 복잡도가 더 과한 경우 혹은 데이터셋 사이즈가 작은 경우 발생
- 선형회귀의 경우, 고려하는 변수가 많아질수록 overfittin 발생 가능성이 높아진다
- generalization(일반화) : 학습할 때와 추론할 때의 성능 차이가 많이 나지 않는 경우, 실제 추론 상황에서 잘 쓰일 수 있음을 의미
Regularization(정규화)
- overfitting을 해결하는 방법 두 가지 :
- 모델의 복잡도 줄이기
- 정규화
- generalization : 모델이 가지는 복잡도를 제한하는 방법. 보통 모델의 파라미터가 가지는 값의 크기를 cost function에 추가해주는 방식으로 파라미터 값의 크기를 제한
- L1 규제 : 가중치 w들의 절대값 합계를 비용 함수에 추가
- 모든 가중치에 대해서 λ |w| 를 더한 값
- L2 규제 : 모든 가중치 w들의 제곱합을 비용 함수에 추가
- λ는 규제의 강도를 정하는 하이퍼파라미터(hyperparameter)
- Lasso regression : 선형 회귀 모델에 L1 loss를 추가해서 파라미터를 정규화
- 파라미터가 갖는 사각형의 제약 조건 내에서 cost에 최저점에 가까운 w*를 사용하며, 유의미하지 않은 변수들에 대한 계수를 0으로 주어 중요한 변수를 선택할 때 유용하게 사용 가능
- Ridge regression : 선형 회귀 모델에 L2 loss를 추가해서 파라미터를 정규화
- 파라미터가 갖는 원형의 제약 조건 내에서 cost의 최저점에 가장 가까운 w*를 사용
Logistic regression
- 로지스틱 회귀분류 : 이진 분류를 풀기 위한 알고리즘
- 이진분류는 둘 중 하나를 고르는 것이기 때문에 직선으로 표현하는 것은 적합하지 않다
- 따라서 S자 형태로 그려지는 시그모이드 함수(Sigmoid function)을 사용한다

- 시그모이드 함수에서는 가중치가 그래프의 경사도를 결정
- w가 커지면 경사가 커지고, w가 작아지면 경사가 작아진다
- 입력값이 커지면 1에 수렴하고, 입력값이 작아지면 0에 수렴

Support vector machine(SVM) & Random forest
Support vector machine(SVM)
- SVM : 기계학습 분야 중 하나로, 패턴인식, 자료분석을 위한 지도학습 모델 분류와 회귀분석을 위해 사용
- 두 카테고리 중 어느 하나에 속한 데이터 집합이 주어졌을 때 :
- 주어진 데이터 집합을 바탕으로 새로운 데이터가 어느 카테고리에 속하는지 판단하는 비확률적 이진 선형분류모델을 만든다
- 데이터가 사상된 공간에서 경계로 표현되는데, SVM알고리즘은 그 중 가장 큰 폭을 가진 경계를 찾는다
- 두 부류 사이의 여백이 가장 넓어지면(margin최대화) 그 둘을 가장 잘 분류했다고 할 수 있다
Random forest
- 머신러닝 알고리즘으로, 하나의 결과에 도달하기 위해 여러 의사결정 트리(decision tree)의 출력을 결합한 것
- 분류와 회귀 문제 모두 다룸
- overfitting 문제를 보완하기 위해 사용
- 앙상블(Ensemble) 방법 : 강력한 하나의 모델을 사용하는 대신 보다 약한 여러 개의 모델을 조합하여 더 정확한 예측을 해주는 것
- 부트스트랩핑을 통해 데이터 샘플링 시 복원추출은 하고, 작은 결정나무(decision tree)를 만든다
- 이 트리들이 모여 숲을 이루고, 몇개의 특성들을 무작위 선택하여 합친다(aggregating)
- 회귀 문제일 경우 기본 모델들의 결과를 평균내고
- 분류 문제일 경우 다수결로 투표한다

느낀점
이번주 강의는 입문자들에게는 조금 불친절한 강의였던 것 같다. 통계학을 처음 접한 사람에게는 생소한 수식들이 가득 나오니 당황스러울 수밖에...그래서 따로 기초통계학 강의를 들으면서 보완하고 있고, 오늘은 갑자기 데이터 모델링이 나와서 좀 당황스러웠다.. 머신러닝은 시작도 안했는데 갑자기 나와서 이것도 역시나 구글링하면서 공부했다. 쉽게 설명한 부분들을 찾아 읽으니 이해가 조금씩 되는 것 같긴하다. 다음주부터는 2차 프로젝트인데 오늘 특강 끝나고 조원들과 처음으로 모여서 아이스 브레이킹도 하고 그러니 좋았다. 이번 프로젝트는 더 즐거운 마음으로 참여할 수 있을 것 같은 예감이다. 이번주 강의 마무리하고 프로젝트에 쓸 데이터셋을 찾아야겠다.
'Data Science > TIL (Today I Learned)' 카테고리의 다른 글
| 프로그래머스 데이터분석 데브코스 1기 - 36일차 (0) | 2024.01.15 |
|---|---|
| 프로그래머스 데이터분석 데브코스 1기 - 35일차 (0) | 2024.01.12 |
| 프로그래머스 데이터분석 데브코스 1기 - 33일차 (0) | 2024.01.10 |
| 프로그래머스 데이터분석 데브코스 1기 - 32일차 (1) | 2024.01.09 |
| 프로그래머스 데이터분석 데브코스 1기 - 31일차 (1) | 2024.01.08 |