codestates / codestates/ds-blog

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

Open
#167 1 comment 0 reactions 0 assignees View on GitHub
soft skill
Dominant language
No language data
Stars
2
Forks
4
PR merge metrics
No merged PRs in 30d

Description

# 머신러닝

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

## 머신러닝의 종류

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억 이라고 예측 할것입니다.

2. 분류(Classification)

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

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

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

## 회귀의 종류

### 1. Simple Linear Regression

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

![image](https://user-images.githubusercontent.com/61172021/96222305-fac3a880-0fc6-11eb-99ba-fbdb4115d51f.png)

### 2. Multiple LinearRegression

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

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

![image](https://user-images.githubusercontent.com/61172021/96223128-65291880-0fc8-11eb-90ff-b52d8ef13463.png)

### 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](https://user-images.githubusercontent.com/61172021/96223926-b08ff680-0fc9-11eb-8e0e-0c8e3c25d6ca.png)

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

1. Scikit-Learn 라이브러리에서 사용할 예측모델 클래스를 Import 합니다 (다른 모델도 가능)

```py
from sklearn.linear_model import LinearRegression
```

2. 예측모델 인스턴스를 만듭니다(instantiation) (다른 모델도 가능)

```py
model = LinearRegression()
```

3. X 특성들의 테이블과, y 타겟 벡터를 만듭니다

```py
features = ['피쳐1', '피쳐2', '피쳐3']
target = ['타겟']
X_train = train[features]
X_train = train[features]
y_train = test[target]
y_test = test[target]
```

4. 모델을 학습합니다(fit the model)

```py
model.fit(X_train, y_train)
```

5. 테스트 데이터를 모델을 통해 예측.

```py
y_pred = model.predict(X_test)
```

6. 평가 (여러 평가지표로)

```py
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)
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.