jyamethyst21 님의 블로그

머신러닝 & 딥러닝 본문

보안 & IT 지식 🌺

머신러닝 & 딥러닝

jyamethyst21 2026. 1. 12. 17:19

상관계수

1) 정의 : 두 변수 간의 선형 관계의 강도와 방향을 나타내는 값

2) 값 범위 : -1 ~ 1 (1은 양의 상관관계, 0은 상관관계 없음, -1은 음의 상관관계)

3) 사례

- 아이스크림 판매량과 기온

- 기온이 올라갈수록 사람들이 아이스크림을 더 많이 사 먹음 -> 기온이 올라갈수록 판매량 증가(양의 상관관계)

4) 값 범위에 따른 차트

– Perfect Positive (r=1) : 데이터 점들이 완벽히 직선 위에 놓여 있고, x와 y가 동일하게 증가

– Strong Positive (r=0.8) : 데이터 점들이 양의 관계를 나타내며, 약간의 분산이 있음

– No Correlation (r=0) : 데이터 점들이 무작위로 흩어져 있어 관계를 찾을 수 없음

– Strong Negative (r=-0.8) : 데이터 점들이 음의 관계를 나타내며, 약간의 분산이 있음

– Moderate Negative (r=-0.4) : 데이터 점들이 약한 음의 관계를 나타냄

– Perfect Negative (r=-1) : 데이터 점들이 완벽히 직선 위에 있으며, x가 증가하면 y가 동일하게 감소함

 

단순 회귀 분석 및 변수 간 관계 분석

1) 정의 : 하나의 독립 변수와 하나의 종속 변수 사이의 관계를 모델링하여, X를 이용해 Y를 예측하는 방법

2) 식: Y = aX + b (a: 기울기(독립 변수 증가시 종속 변수 얼마나 증가?), b: 절편(독립 변수 0일 시 종속 변수 예상값)

3) 주요 개념

- 잔차: 실제값과 회귀선(예측값) 간의 차이를 의미

- 최소제곱법: 잔차의 제곱합이 최소가 되도록 회귀선을 찾는 방법, 잔차 제곱합이 최소일 때 가장 적합한 선형 방정식을 얻을 수 있음

- R^2값 (결정 계수): 회귀 모델이 데이터를 얼마나 잘 설명하는가? (값 범위는 0~1, 1에 가까울수록 잘 설명)

4) 상관 관계: 두 변수 간의 변화가 함께 나타나는 경우

5) 인과 관계: 한 변수의 변화가 다른 변수에 직접적인 영향을 미치는 경우

 

머신러닝

1) 정의 : 데이터를 기반으로 스스로 학습하여 패턴을 발견하고, 이를 이용해 미래의 결과를 예측하거나 의사결정을 내리는 기술

2) 학습 종류

- 지도학습: 데이터와 함께 해당 데이터에 대한 정답을 제공하여 모델이 학습하도록 하는 방법(회귀, 분류)

- 비지도학습: 데이터에는 있지만 정답은 주어지지 않은 상태에서 학습하는 머신러닝 방법

3) 회귀 알고리즘

- 연속적인 숫자 데이터를 예측하는 데 사용되는 지도학습 -> 입력 데이터를 기반으로 숫자 값을 예측하는 문제 해결 방법

- 종류: 단순 선형 회귀(입력 변수 한개), 다중 선형 회귀(입력 변수 여러개), 비선형 회귀(선형이 아닌 경우)

4) 모델 학습 과정

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# 데이터 준비 : train data, test data
# 특성 데이터, 타깃 데이터
X = np.array([1,2,3,4,5]).reshape(-1, 1) # 학습 데이터 2차원 형식으로 형태 변경
y = np.array([50, 55, 65, 70, 75]) # 라벨(타깃)

# 학습 모델 생성
model = LinearRegression()

# 훈련 fit(특성 데이터, 타깃 데이터)
model.fit(X, y)

m = model.coef_[0]
b = model.intercept_
print('기울기:',m ,'절편:', b)

# 학습된 모델로 값 예측
y_pred = model.predict(X)
print(y_pred)

# 그래프 출력
plt.scatter(X, y)
plt.plot(X, y_pred, color = 'red')

new_hour = np.array([6,8]).reshape(-1, 1)
predict_score = model.predict(new_hour)
print(predict_score)


# 결과
기울기: 6.500000000000001 절편: 43.5
[50.  56.5 63.  69.5 76. ]
[82.5 95.5]

 

5) 주요 성능 평가 지표

- MSE (평균 제곱 오차) : 오차(예측값-실제값)의 제곱 평균, 작을수록 모델이 더 정확함

- RMSE (평균 제곱근 오차) : MSE의 제곱근을 계산한 값, 단위를 실제 값과 동일하게 만들어 해석이 상대적으로 쉬움

- MAE (평균 절대 오차) : 오차의 절대값 평균을 계산, 제곱을 사용하지 않으므로 큰 오차의 영향이 덜함

- R^2 (결정 계수) : 모델이 데이터를 얼마나 잘 설명하는지를 나타냄, 0~1 사이의 값을 가지며 1에 가까울수록 모델이 데이터를 잘 설명함

지표 해석
MSE 0.4 평균적으로 제곱된 오차가 작다.
RMSE 0.63 모델의 평균 오차는 약 0.63이다.
MAE 0.4 모델은 평균적으로 약 0.4점 차이로 예측한다.
R^2 0.99 모델이 데이터를 매우 잘 설명한다.
# 상기 데이터를 예제로 해서 성능 평가 지표 출력

mse = mean_squared_error(y, y_pred)
mae = mean_absolute_error(y, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y, y_pred)

print(mse, mae, rmse, r2)

# 결과
1.5 1.0 1.224744871391589 0.9825581395348837

6) 과적합과 과소적합

가) 과적합: 데이터를 너무 많이 학습한 상태, 학습 데이터에서는 성능이 좋지만 새로운 데이터에서는 성능이 나쁨(일반화 부족)

--> 해결 방법: 모델의 복잡도를 낮춤(간단한 모델 사용, 차원 축소), 규제 적용(L1, L2 규제), 교차 검증 사용, 더 많은 데이터 수집

나) 과소적합: 데이터를 제대로 학습하지 못한 상태, 학습 데이터와 테스트 데이터 모두에서 성능이 나쁨

--> 해결 방법: 모델을 더 복잡하게 만듦, 학습 데이터를 더 많이 수집하고 학습 시간을 늘려 모델을 충분히 학습

 

'보안 & IT 지식 🌺' 카테고리의 다른 글

머신러닝 & 딥러닝  (0) 2026.01.14
머신러닝 & 딥러닝  (0) 2026.01.13
머신러닝 & 딥러닝  (0) 2026.01.09
머신러닝 & 딥러닝  (0) 2026.01.08
머신러닝 & 딥러닝  (0) 2026.01.07