🐍 Python/🐍 인공지능

리니어리그레션 (Linear Regression) 완벽 이해: 경력과 연봉의 관계 예측하기- Prediction (예측)

itstory(Booho) 2025. 1. 30. 19:28
728x90

2025.01.30 - [🐍 Python] - 머신러닝과 데이터 전처리 - 초보자를 위한 친절한 가이드

 

머신러닝과 데이터 전처리 - 초보자를 위한 친절한 가이드

1. 머신러닝이란?머신러닝(Machine Learning)은 데이터를 이용하여 패턴을 학습하고, 이를 통해 예측을 수행하는 인공지능 기술입니다. 우리가 실생활에서 머신러닝을 만나는 사례는 다음과 같습니

boohoday.com

 

1. 리니어 리그레션이란?

우리는 종종 데이터를 통해 미래를 예측하고자 합니다. 예를 들어, 경력이 많을수록 연봉이 높아질까? 이런 질문을 데이터로 분석할 수 있습니다. 이를 위해 리니어 리그레션 (Linear Regression) 이라는 기법을 사용합니다.

리니어 리그레션은 데이터를 분석하여 가장 잘 맞는 직선을 찾고, 이를 이용해 새로운 값을 예측하는 방법입니다. 주어진 데이터가 직선 형태의 관계를 가질 때 특히 유용하며, 머신러닝과 통계 분야에서 널리 사용됩니다.

설명: 경력(년)과 연봉(만원)의 관계를 시각적으로 나타낸 그래프

2. 데이터를 직선으로 표현해보기

주어진 데이터를 보면, 일정한 패턴이 보일 수 있습니다. 즉, 경력이 증가할수록 연봉도 증가하는 경향이 있습니다. 우리는 이 관계를 가장 잘 설명하는 하나의 직선을 찾고자 합니다.

설명: 산점도 위에 최적의 직선을 그려서 데이터 패턴을 설명

이 직선은 우리가 잘 알고 있는 직선의 방정식을 기반으로 합니다.

  • : 예측값 (연봉)
  • : 독립변수 (경력)
  • : 기울기 (경력이 증가할 때 연봉이 얼마나 증가하는가?)
  • : y절편 (경력이 0일 때 예상 연봉)

설명: 리니어 리그레션에서 기울기와 절편을 계산하는 공식

3. 최적의 직선을 찾는 방법

주어진 데이터에 가장 적합한 직선을 찾기 위해, 오차(예측값과 실제값의 차이)를 최소화하는 방법을 사용합니다. 이를 위해 최소제곱법 (Least Squares Method) 을 적용합니다.

설명: 데이터 포인트와 예측 직선 사이의 차이를 보여주는 그래프

오차를 최소화하는 기울기 과 절편 를 구하기 위해, 우리는 다음 공식을 사용합니다.

설명: 주어진 데이터를 기반으로 기울기와 절편을 계산하는 수식

4. 리니어 리그레션 모델 학습 및 예측

학습 전, 전처리 작업은 필수

 

이제 실제 데이터를 사용하여 리니어 리그레션 모델을 학습하고 예측을 수행해봅시다.

# 데이터 로드 및 학습
from sklearn.linear_model import LinearRegression

# 가상의 데이터
X = [[1], [2], [3], [4], [5]]  # 경력 (년)
y = [3000, 3500, 4000, 4500, 5000]  # 연봉 (만원)

# 모델 학습
model = LinearRegression()
model.fit(X, y)

# 예측
predicted_salary = model.predict([[6]])  # 경력 6년차 연봉 예측
print(f"경력 6년차 예상 연봉: {predicted_salary[0]:.2f} 만원")

 

 

설명: 실제 Python 코드로 리니어 리그레션을 학습시키고 연봉을 예측하는 과정

5. 리니어 리그레션의 성능 평가

모델이 잘 동작하는지 확인하기 위해, 성능 평가 지표를 사용합니다. 가장 대표적인 방법은 평균 제곱 오차 (Mean Squared Error, MSE)결정계수 (R² Score) 입니다.

평균 제곱 오차 (MSE)

MSE는 예측값과 실제값의 차이를 제곱하여 평균을 낸 값입니다. 값이 작을수록 모델이 정확하게 예측한다는 의미입니다.

결정계수 (R² Score)

결정계수는 모델이 얼마나 데이터를 잘 설명하는지를 나타내는 지표입니다. 1에 가까울수록 모델이 데이터를 잘 설명하는 것입니다.

from sklearn.metrics import mean_squared_error, r2_score

# 예측값 계산
predictions = model.predict(X)

# MSE 및 R^2 계산
mse = mean_squared_error(y, predictions)
r2 = r2_score(y, predictions)

print(f"MSE: {mse:.2f}")
print(f"R^2 Score: {r2:.2f}")

 

설명: 리니어 리그레션 모델의 성능을 평가하는 방법

6. 차트를 그려 비교 해보기

 

 

728x90
반응형