ver2 2024-10-22
r2와 mse에대한 내용 수정
ver 3 2024년 11월 03일
가독성 올리기, L2 정규화 내용 추가
회귀 모델과 종류들
회귀모델
회귀모델이란, 종속 변수와 독립 변수 간의 관계를 모델링 하여 학습을 하는 모델이다.
통계적인 기법을 사용해서 예측을 한다.
종속변수와 독립 변수의 관계를 모델이 파악및 분석 하여 그 관계를 학습한다.
용어 정리
- 종속 변수 :
- 종속 변수란 머신러닝 모델에서 예측을 하려는 결과값 또는 목적을 의미한다.
- 독립 변수 :
- 독립 변수란 머신러닝 모델에서 종속 변수를 예측 하기 위해서 사용하는 데이터 또는 특징이다.
- 모델링 :
- 모델링이란 종속 변수와 독립 변수의 관계를 바탕으로 값을 예측 하기 위해 수학적 모델을 만드는 과정을 아울러 표현하는 말이다.
- MSE :
- Root Mean Squared Error 란 예측값이 얼마나 정답과 멀리 떨어져 있는가를 나타내는 것이다.
- 값이 낮을수록 즉 0에 수렴 할 수록 예측값이 실제값에 가까운가의 차이를 알려준다.
- R2 :
- 결정 계수 라고도 하는 이것은, 예측한 데이터가 얼마나 정답과 가까이 있는지를 알려주는 것이다.
- 주어진 테스트 독립 변수와 테스트 종속 변수를 이용하여 확인 하는데, 이는 0 과 1 사이의 값이며, 1에 가까워 질수록 값이 정답에 가깝다고 볼 수 있다.
- 다항회귀 차수 :
- 독립 변수의 최대 차수를 나타낸다.
- 회귀 계수 :
- 독립 변수와 종속 변수 간의 관계를 나타내는 숫자이다.
선형 회귀
선형 회귀란 종속 변수와 독립 변수의 관계가 선형의 관계로 이를 모델링 하여 선형의 안의 값을 예측을 하는 모델이다.
선형 회귀에는 사용하는 독립 변수의 수에 따라서 단순 선형 회귀 와 다중 선형 회귀 로 나뉜다.
단순 선형 회귀 모델
단순 성형 회귀 모델은 하나의 독립 변수와 하나의 종속 변수사이의 관계를 모델링 하여 학습한 모델이다.
1 대 1의 관계만 성립 가능.
X = np.array([[1], [2], [3], [4], [5]])
Y = np.array([1, 2, 3, 3.5, 4.5])
# 이것도 가능
X= np.array =([[1,2],[2,3],[3,4]])
다중 선형 회귀 모델
다중 선형 회귀 모델은 여러개의 독립 변수와 하나의 종속 변수 간의 관계를 모델링하여 학습한 모델이다.
단순과의 차이는 데이터셋의 한 차원에 여러 데이터가 존재 가능하다.
data = {
'StudyHours': [10, 9, 2, 15, 10, 16, 10, 14, 5, 10],
'SleepHours': [7, 6, 8, 5, 9, 5, 7, 6, 8, 8],
'ExamScore': [95, 80, 50, 85, 70, 100, 80, 90, 60, 85]
}
X = df[['StudyHours', 'SleepHours']]
Y = df['ExamScore']
선형 회귀 모델의 예제
선형 회귀의 모델 자체는 다중이나 단순이나 같다. 독립 변수의 값이 싱글인지 멀티플 인지에 대한 차이기 때문이다.
예제를 쉽게 보여주기 위해서 코드를 직접실행 시킬 수 있게 준비했다.
linear_regression_model.ipynb - Colab (google.com)
linear_regression_model.ipynb
Run, share, and edit Python notebooks
colab.research.google.com
다항 회귀
다항 회귀란 종속 변수와 독립 변수의 관계가 비선형 관계일때 그 비선형 관계를 모델링 하여 예측값을 도출 해내는 모델이다.
다항 회귀 에서는 차수를 선택 해야하는데, 이는 선형 에서 비선형으로 넘어갈때 곡선의 비율? 로 이해해도 좋다.
즉 차수가 늘어날수록 좀더 유연한 곡선이 되는데, 이의 문제점은 너무 유연하다면 값과 값사이에 정확한 연결점을 찾지 못하고 학습 데이터 끼리만 너무 자유롭게 연결이 된다는 점이다 (과적합 overfitting).
즉 독립 변수와 종속 변수의 관계 에따라서 알맞은 차수를 선택해야 한다.
다항 회귀 모델의 예제 및 설명
다항 회귀 또한 예제와 설명은 외부에서 진행을 하도록 하겠다.
polynomial_regression_model.ipynb - Colab
polynomial_regression_model.ipynb
Run, share, and edit Python notebooks
colab.research.google.com
리지 회귀
리지 회귀 모델은 L2정규화를 사용하여 회귀 계수의 크기 자체에 제한을 부여하여 모델이 너무 복잡하게 학습하는것을 제한하는 모델이다.
L2 정규화는 데이터의 값을 변화시키는 것이 아닌, 학습을 진행함에 따라 생기는 손실 함수에 가중치의
제곱을 더하여 전체 가중치에 패널티를 가하는 식이다.
이때, 전체 가중치에 패널티를 가하게 된다면 어짜피 똑같은거 아닌가? 라고 생각 할 수 있다.
L2 정규화는 패널티를 전체 가중치에 일정하게 주는 것이 아닌, 가중치가 클 수록 더 많은 패널티를 가한다.
이때 가중치를 0으로 만들지는 않는데, 이는 가중치가 있어야 특징을 좀더 잘 학습을 하기 때문이다.
가중치에 패널티를 부과하여 좀더 일반화가 잘 되도록 학습을 시키는 것을 L2 정규화 라고 한다.
여기서 나는 의문점을 가졌다.
만약 alpha단계에서 값의 조절이 이루어 진다면, 만약 그 데이터는 신뢰할 수 있는것인가?
AI는 이러한 질문에
alpha를 통해 값을 조절하면, 그 특성의 영향을 줄이긴 하지만, 모델의 신뢰성을 유지하려고 해.
이 과정은 모델이 중요한 패턴을 학습하면서도 특정 변수에 과도하게 의존하지 않도록 도와.
라고 했다.
리지 회귀 모델의 예제
리지 회귀 모델의 예시 아래에 그 모델의 최적의 alpha단계를 찾는 모델또한 올려두었다.
Ridge_Regeression_Model.ipynb - Colab
Ridge_Regeression_Model.ipynb
Run, share, and edit Python notebooks
colab.research.google.com
라쏘 회귀
라쏘 회귀 모델은 L1정규화를 사용하여 특정 중요하지 않은 특성의 회귀 계수를 0으로 변환시켜 중요한 특성만 골라 학습을 하는 모델이다.
라쏘 회귀 모델에서늬 L1 정규화는 L2 정규화와 비슷한 내용이지만 사뭇 다르다.
L1 정규화는 학습을 진행하면서 가중치가 낮거나 학습에 연관성이 없다고 생각하는 데이터를
가중치를 0 즉 학습에서 배제를 시킴으로써 정규화를 시킨다.
결과적으로 더 단순하고 해석하기 쉽게 모델이 만들어지게 되는데, 중요한 특성만을 남기게 되며
모델의 일반화 능력을 향상 시킨다.
라쏘 회귀 모델의 예제
리지 회귀 모델의 예제와같이 최적의 모델 예측또한 포함했다.
mse와 r2로 둘 사이의 변경점을 확인해보면 재미있는 결과값이 나온다.
데이터의 회귀 계수가 적을때는 alpha를 1과같이 높은 단계로 설정한다면, 값이 엉망으로 나오는 것을 볼 수 있다.
Rasso_Regression_Model.ipynb - Colab
Rasso_Regression_Model.ipynb
Run, share, and edit Python notebooks
colab.research.google.com
끝
'용어정리 > Machine-Learning' 카테고리의 다른 글
Machine-Learning 용어정리 (SVM, KNN, 나이브베이즈, 의사결정나무) ver 2 (1) | 2024.10.23 |
---|---|
Machine-Learning 용어정리 (데이터셋) (3) | 2024.10.22 |
Machin-Learning 용어정리 (로지스틱 회귀) (0) | 2024.10.21 |
machine-learning 용어정리 (전처리) ver 4 (1) | 2024.10.16 |
machine-learning 용어정리 (머신러닝이란) ver.2 (1) | 2024.10.15 |