codestates / ds-blog

blog sharing for data science bootcamp course
2 stars 4 forks source link

[최근후] 회귀의 종류 (feat.머신러닝) #167

Open rmsgn100 opened 4 years ago

rmsgn100 commented 4 years ago

머신러닝

사람이 경험을 쌓고 머리가 좋아질때 우리는 그것을 '학습' 이라고한다. 사람은 학습된 지능으로 일을 하는데요, 인간이 하는일을 기계가 하도록 하기위해 기계를 학습시키는것 , 그것이 머신러닝(기계학습)입니다. 무언가를 판단해야할때 너무 많은 기준과 규칙이 있다면, 인간은 학습하고 판단하기를 어려워하고 많은 시간을 필요로하지만, 기계는 그렇지 않다는것에 의미가 있습니다.

머신러닝의 종류

  1. 지도학습 (Supervised Learning)
  2. 비지도학습 (Unsupervised Learning) - 클러스터링을 사용한다는것 정도로만 알고있음..!

지도학습은 정답을 알려주며 학습시키는 것이고 비지도학습은 정답을 알려주지 않은채 학습시키는 것입니다!

지도학습은 크게 두가지로 분류됩니다

  1. 회귀(Regression)

    - 특징(X)들을 바탕으로 정답(y)을 유추해내는 것 (연속적인 값)

예를들어, A동네의 20평 2억, A동네의 30평 3억, B동네의 20평 4억, B동네의 30평 6억 이렇게 학습된 회귀모델은 A동네의 25평과 B동네의 25평 아파트의 값을 각각 약 2.5억과 5억 이라고 예측 할것입니다.

  1. 분류(Classification)

    - 특징(X)들을 바탕으로 정답(y -> a, b, c)로 유추해내는 것 (class)

예를들어, 어떤 사람에게 고양이사진과 강아지사진을 여러번 보여주고 나중에 새로운 강아지 사진을 보여준다면 그 사람은 강아지라고 대답 할 것입니다.

이번주에 배운 회귀를 알아보겠습니다

회귀의 종류

1. Simple Linear Regression

y(종속변수)와 X(독립변수 1개)의 관계를 예측합니다. 회귀식은 y = b0 + b1x1. 최소제곱합을 최소화시키는 쪽으로 회귀 계수를 구한다.

image

2. Multiple LinearRegression

y(종속변수)와 X(독립변수 2개이상)의 관계를 예측합니다. 회귀식은 y = b0 + b1x1 + b2x2 + b3x3 ...

다음사진은 2개의 독립변수와 종속변수의 관계 그래프입니다. (3차원을 넘어가면 시각화 불가능)

image

3. Ridge Regression

Simple / Multiple Linear Regression 에서 생길수있는 과적합문제를 코스트함수에 패널티텀(람다)을 주어 완화해 줄 수 있습니다.

Simple Linear (아웃라이어에 크게반응)

스크린샷 2020-10-16 오후 4 33 19

Ridge (패널티텀을 적용해 과적합문제를 조금 완화시킴)

스크린샷 2020-10-16 오후 4 34 28

4. Logistic Regression

Simple / Multiple Linear Regression 과는 다르게 y(종속변수)가 2개로 나뉠때 쓰입니다.

image

사이킷런을 사용해 회귀모델을 사용하는 법

  1. Scikit-Learn 라이브러리에서 사용할 예측모델 클래스를 Import 합니다 (다른 모델도 가능)
from sklearn.linear_model import LinearRegression
  1. 예측모델 인스턴스를 만듭니다(instantiation) (다른 모델도 가능)
model = LinearRegression()
  1. X 특성들의 테이블과, y 타겟 벡터를 만듭니다
features = ['피쳐1', '피쳐2', '피쳐3']
target = ['타겟']
X_train = train[features]
X_train = train[features]
y_train = test[target]
y_test = test[target]
  1. 모델을 학습합니다(fit the model)
model.fit(X_train, y_train)
  1. 테스트 데이터를 모델을 통해 예측.
y_pred = model.predict(X_test)
  1. 평가 (여러 평가지표로)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
mae = mean_absolute_error(y_test, y_pred)
r2 = r2_score(y_test y_pred)
johnnykoo84 commented 4 years ago

좋은 점

  1. 회귀의 여러 종류를 아주 간단하게 소개하는 정도의 글이 목적이라면 괜찮습니다.
  2. 저자분 스스로 복습의 목적에서 보면 역시 좋은 정리라고 볼 수 있습니다.

아쉬운 점

  1. 크게 중요하진 않지만 초반에 반말과 존댓말이 섞여 있습니다. 업로드 이후 리뷰를 하시면 이를 막을 수 있습니다.
  2. 여러 다양한 주제를 한 글에서 설명하기란 여간 어려운 것이 아닙니다. 이 부분은 블로깅 과제 요구사항의 모호함이 원인을 수도 있어, 이후 공지를 통해 안내 드리겠습니다.
  3. 어쨌든, 여러가지 이유로, 이 글은 독자가 읽기엔 다소 정보 전달 및 설명 차원에서 아쉬운 글 입니다. 좀 더 발전된 형태의 개인 TIL, 혹은 수업 노트 정도로 볼 수 있겠습니다.