-
리니어리그레션 (Linear Regression) 완벽 이해: 경력과 연봉의 관계 예측하기- Prediction (예측)🐍 Python 2025. 1. 30. 19:28728x90
2025.01.30 - [🐍 Python] - 머신러닝과 데이터 전처리 - 초보자를 위한 친절한 가이드
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'🐍 Python' 카테고리의 다른 글
서포트 벡터 머신 (SVM, Support Vector Machine): 개념부터 실습까지 (0) 2025.01.31 KK-최근접 이웃 (KNN, K-Nearest Neighbors) 알고리즘: 개념부터 실습까지 (0) 2025.01.31 머신러닝과 데이터 전처리 - 초보자를 위한 친절한 가이드 (0) 2025.01.30 파이썬 그래프 관련 함수 정리 (Matplotlib 중심) (0) 2025.01.29 로지스틱 회귀 (Logistic Regression): 머신러닝 이진 분류 알고리즘의 이해와 실습 (0) 2025.01.27