ML Basic - Regression

Nary Kim·2024년 6월 5일
0

Upstage AI lab 3기

목록 보기
9/17
post-thumbnail

회귀, 분류, 클러스터링
개인적으로는 ML수업은 실시간 강의보다 온라인 강의가 나에게 더 맞았음.

근데 어려움. 개념이 와닿지가 않아서 이번 블로그는 챗gpt에 각 개념을 물어보면서 개념 세우기를 해보려함.

💡 회귀

회귀분석이란?

회귀분석은 어떤 숫자를 예측하는 방법이에요. 예를 들어, 집의 크기와 위치를 알고 있을 때 그 집의 가격을 예측하는 것과 같아요.

어떻게 작동하나요?

회귀분석은 데이터의 패턴을 찾아서, 새로운 데이터가 주어졌을 때 그 숫자를 예측할 수 있도록 도와줘요. 예를 들어, 과거의 집 가격 데이터를 사용해서 새로운 집의 가격을 예측할 수 있는 모델을 만드는 거예요.

회귀분석의 종류

  1. 단순 회귀(Simple Regression):
  • 단순 선형 회귀(Simple Linear Regression): 독립 변수 하나(예: 집 크기)로 종속 변수 하나(예: 집 가격)를 예측하는 방법이에요.
  • 이 경우, 데이터 점들을 가장 잘 설명할 수 있는 직선(선을 그려서)을 찾는 거예요. 이 선을 통해 새로운 집 크기 데이터를 넣으면 그 집의 가격을 예측할 수 있어요.
  1. 다중 회귀(Multiple Regression):
  • 여러 개의 독립 변수(예: 집 크기, 방의 개수, 위치 등)로 하나의 종속 변수(예: 집 가격)를 예측하는 방법이에요.
  • 여러 특성을 동시에 고려해서 더 정확한 예측을 할 수 있어요.

예시로 설명

  1. 단순 회귀 예시:
  • 여러분이 과일 가게를 운영한다고 생각해보세요.
  • 지난 몇 주 동안 과일 판매량(독립 변수)과 매출액(종속 변수)을 기록했어요.
  • 이제 다음 주에 과일을 얼마나 팔면 매출이 얼마나 될지 예측하고 싶어요.
  • 단순 선형 회귀를 사용하면, 과일 판매량과 매출액 사이의 관계를 찾아서, 다음 주 판매량을 입력하면 예상 매출을 예측할 수 있어요.
  1. 다중 회귀 예시:
  • 이번엔 집 가격을 예측해보아요.
  • 집의 크기, 방의 개수, 위치 등의 정보를 가지고 있어요.
  • 이 정보를 이용해서 집 가격을 예측하고 싶어요.
  • 다중 회귀를 사용하면, 집 크기, 방 개수, 위치 등을 모두 고려해서 집 가격을 예측할 수 있어요.

요약

  • 회귀분석은 숫자를 예측하는 데 사용되는 방법이에요.
  • 단순 회귀는 하나의 변수를 사용하고, 다중 회귀는 여러 변수를 사용해요.
  • 이 방법을 통해 데이터를 분석하고, 새로운 데이터를 예측할 수 있어요.

Feature Selection이란?

  • Feature Selection은 머신러닝에서 데이터의 여러 특성(컬럼) 중에서 중요한 것들만 고르는 작업입니다. 예를 들어, 친구의 키, 나이, 학년, 좋아하는 과목을 알고 있을 때, 친구의 성적을 예측하려고 한다면, 꼭 필요한 정보(특성)만 고르는 것이 Feature Selection입니다.

왜 Feature Selection이 중요한가요?

  • 성능 향상: 중요한 정보만 사용하면 더 정확한 예측이 가능해요.
  • 과적합 방지: 불필요한 정보를 제거하면 모델이 데이터를 너무 잘 외워서 새로운 데이터에 대해 잘못 예측하는 것을 막을 수 있어요.
  • 시간 절약: 적은 특성으로 모델을 학습시키면 더 빨리 학습할 수 있어요.
  • 이해하기 쉬움: 중요한 특성만 남기면 왜 그런 예측이 나왔는지 이해하기 더 쉬워요.

어떻게 Feature Selection을 하나요?

  1. 필터 방법:
  • 각각의 특성을 개별적으로 평가해서 중요한 것들을 고릅니다.
  • 예를 들어, 과일의 색깔과 무게가 과일의 맛을 예측하는 데 얼마나 중요한지 각각 평가해요.
from sklearn.feature_selection import SelectKBest, f_classif 
# 예시 데이터
X = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  # 특성 데이터
y = [1, 2, 3]  # 목표 변수
# 가장 중요한 2개의 특성 선택
selector = SelectKBest(score_func=f_classif, k=2)
X_new = selector.fit_transform(X, y)
print(X_new)
  1. 래퍼 방법:
  • 특성들의 조합을 만들어서 가장 좋은 조합을 찾습니다.
  • 예를 들어, 무게와 크기를 함께 고려하면 더 정확하게 예측할 수 있을지 확인해요.
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
rfe = RFE(model, n_features_to_select=2)  # 2개의 중요한 특성 선택
X_new = rfe.fit_transform(X, y)
print(X_new)
  1. 임베디드 방법:
  • 모델을 학습하면서 동시에 중요한 특성을 고릅니다.
  • 예를 들어, 랜덤 포레스트 모델이 자동으로 중요한 특성을 찾아내는 방식이에요.
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X, y)
importances = model.feature_importances_
print(importances)  # 특성 중요도 출력

간단한 예시

  • 친구들의 성적을 예측하는 예를 들어 볼게요:

  • 데이터: 친구들의 키, 나이, 학년, 좋아하는 과목 등.

  • 목표: 성적 예측.

  • 필터 방법
    각각의 특성을 성적과 비교해서 중요한 것만 고릅니다. 예를 들어, 키가 성적과 관련이 적다면 제거하고, 나이와 학년이 중요하다면 이 둘을 선택합니다.

  1. 래퍼 방법
    특성들의 여러 조합을 만들어서 가장 좋은 조합을 찾습니다. 예를 들어, 키와 나이를 함께 고려하면 더 정확하게 예측할 수 있는지 확인합니다.

  2. 임베디드 방법
    모델이 학습하면서 자동으로 중요한 특성을 고릅니다. 랜덤 포레스트 같은 모델은 자체적으로 어떤 특성이 중요한지 판단합니다.

Penalty Term

  • 패널티 항은 머신러닝 모델을 학습할 때 모델이 너무 복잡해지는 것을 막기 위해 추가하는 항목입니다. 이는 모델이 데이터에 과적합(overfitting)되는 것을 방지하는 데 도움이 됩니다.

왜 패널티 항이 중요한가요?

  1. 과적합 방지: 모델이 학습 데이터에 너무 잘 맞아 새로운 데이터에 대해서는 잘못된 예측을 하지 않도록 도와줍니다.
  2. 모델 단순화: 너무 많은 특성이나 복잡한 모델을 사용하는 것을 방지하여, 모델을 더 단순하게 만듭니다.

패널티 항의 종류

  1. L1 패널티 (라쏘 회귀, Lasso Regression):
  • 각 특성의 가중치(계수)의 절대값을 합한 값을 패널티로 추가합니다.
  • 결과적으로 중요하지 않은 특성의 가중치를 0으로 만들어, 특성 선택의 역할도 합니다.
  1. L2 패널티 (릿지 회귀, Ridge Regression):
  • 각 특성의 가중치(계수)의 제곱을 합한 값을 패널티로 추가합니다.
  • 모든 특성의 가중치를 조금씩 감소시키지만, 0으로 만들지는 않습니다.

예시로 이해하기

  1. 기본 회귀 모델
  • 회귀 모델은 데이터를 통해 어떤 결과를 예측하는 모델입니다. 예를 들어, 집의 크기와 가격 데이터를 사용해서 새로운 집의 가격을 예측할 수 있습니다.
  1. 패널티 항이 없는 경우
  • 모델이 집의 크기뿐만 아니라 너무 많은 세부 정보를 고려하면, 데이터에 과적합될 수 있습니다. 즉, 모델이 학습 데이터에 너무 잘 맞아서 새로운 데이터에 대한 예측이 부정확해질 수 있습니다.

L1 패널티 (라쏘 회귀)

  • 라쏘 회귀는 모델의 복잡성을 줄이기 위해 가중치의 절대값 합을 추가로 고려합니다. 이는 중요하지 않은 특성의 가중치를 0으로 만들어, 모델이 더 단순해지고, 중요한 특성만 남게 합니다.
from sklearn.linear_model import Lasso
# 라쏘 회귀 모델
model = Lasso(alpha=0.1)
model.fit(X_train, y_train)
predictions = model.predict(X_test)

L2 패널티 (릿지 회귀)

  • 릿지 회귀는 모델의 복잡성을 줄이기 위해 가중치의 제곱 합을 추가로 고려합니다. 이는 모든 가중치를 조금씩 감소시키지만, 0으로 만들지는 않아서 모든 특성을 고려하게 합니다.
from sklearn.linear_model import Ridge
# 릿지 회귀 모델
model = Ridge(alpha=0.1)
model.fit(X_train, y_train)
predictions = model.predict(X_test)

요약

  • 패널티 항: 모델이 너무 복잡해지지 않도록 추가하는 항목입니다.
  • L1 패널티 (라쏘 회귀): 가중치의 절대값 합을 추가하여 중요하지 않은 특성의 가중치를 0으로 만듭니다.
  • L2 패널티 (릿지 회귀): 가중치의 제곱 합을 추가하여 모든 가중치를 조금씩 감소시킵니다.
  • 목적: 모델의 과적합을 방지하고, 더 좋은 예측을 하기 위해 사용됩니다.
profile
나는 무엇이 될것인가!!

0개의 댓글