■ Key words
ㆍ선형회귀(Linear Regression)
ㆍ지도학습(Supervised Learning)
ㆍ기준모델(Baseline Model)
ㆍScikit-learn
ㆍTabular Data(row/column)
ㆍRegression / Classification
ㆍ선형회귀모델의 계수(coefficients)
■ 주요내용
ㆍLinear Regression Analysis(선형회귀분석법) : 여러 표본의 분포를 선형으로 회귀분석하는 분석법.
- 최소제곱법(least square method) : 회귀선과 종속변수(dependent variables, y)의 y값 잔차(편차)의 총합이
가장 적도록 하는 회귀선을 구하는 법.
ㆍTabular Data : 테이블 형태의 2차원 데이터. row(가로)의 observations, column(세로)의 variables,
그리고 그들의 relationships으로 구성되어 있다.
ㆍ지도학습의 방법
- 분류(Classification) : 주어진 데이터를 바탕으로 하나의 독립변수를 분류하는 것(사진은 고양이인가 개인가)
- 회귀(Regression) : 주어진 데이터를 바탕으로 하나의 독립변수에 대한 종속변수값을 예측하는 것(유가변동에 따른 주가 변동 예측)
ㆍ기준모델(Baseline Model) : 예측 모델을 구체적으로 만들기 전에 가장 간단하면서도 직관적이면서 최소한의 성능을 나타내는 기준이 되는 모델
- 분류문제: 타겟의 최빈 클래스
- 회귀문제: 타겟의 평균값
- 시계열회귀문제: 이전 타임스탬프의 값
* 보다 고도의 Machine Learning을 적용할 경우, Linear regression을 기준모델로 사용하기도 한다.
ㆍ예측모델(Predictive Model) 활용 : scatter plot에 가장 잘 맞는(best fit) 직선
- 예측값 : 만들어진 모델이 추정하는 값
- 잔차 : 예측값과 관측값 차이
- 오차(error) : 모집단에서의 예측값과 관측값 차이
- 회귀선 : RSS(residual sum of squares, 잔차 제곱들의 합)를 최소화 하는 직선
→ 최소제곱회귀(Ordinary least squares, OLS) : 잔차제곱합을 최소화하는 방법
- 선형회귀는 주어져 있지 않은 점의 함수값을 보간(interpolate) 하여 예측하는데 도움을 줌
- 선형회귀모델은 기존 데이터의 범위를 넘어서는 값을 예측하기 위한 외삽(extrapolate)도 제공해줌
ㆍ종속변수와 독립변수
- 종속변수는 반응(Response)변수, 레이블(Label), 타겟(Target)등으로 불립니다.
- 독립변수는 예측(Predictor)변수, 설명(Explanatory), 특성(feature) 등으로 불립니다.
ㆍscikit-learn library를 이용한 linear regression
- fit() 메소드를 사용하여 모델을 학습
- predict() 메소드를 사용하여 새로운 데이터를 예측
ㆍClassical programming과 Machine Learning
- Classical Programming : Rules과 data를 넣고 답을 구하는 것
- Machine Learning : Data와 Answers(supervised learning)를 넣고 Rules을 찾는 것
ㆍ선형회귀모델의 계수(coefficients)
- 계수(coefficient) : 기울기. 변화도. 해당 독립변수에 대한 민감도.
- 절편(intercept) : 상수.
■ 주요함수
ㆍBaseline Model
- predict = df['column'].mean()
- errors = predict - df['column']
- mean_absolute_error = errors.abs().mean()
- print(f'예측한 주택 가격이 ${predict:,.0f}이며 절대평균에러가 ${mean_absolute_error:,.0f}임을 확인할 수 있습니다.')
ㆍfrom sklearn.linear_model import LinearRegression
- model = LinearRegression()
- feature = ['column', 'column', …]
- target = 'column'
- X_train = df[feature]
- y_train = df[target]
- model.fit(X_train, y_train)
- X_test = [[x] for x in df_test['column']]
- y_pred = model.predict(X_test)
ㆍcoefficients
- model.coef_
- model.intercept_
ㆍfrom ipywidgets import interact
- # 데코레이터 interact를 추가합니다.
@interact
def explain_prediction(sqft=(500,10000)):
y_pred = model.predict([[sqft]])
pred = f"{int(sqft)} sqft 주택 가격 예측: ${int(y_pred[0])} (1 sqft당 추가금: ${int(model.coef_[0])})"
return pred
■ Reference
ㆍScikit Learn : https://engineer-mole.tistory.com/16
ㆍ최소제곱법(OLS, Ordinary Least Squares) : https://namu.wiki/w/OLS
'Data Science > 2. 기계학습' 카테고리의 다른 글
[n222]Random Forests (0) | 2021.06.21 |
---|---|
[n221]결정트리(Decision Trees) (0) | 2021.06.21 |
[n214]Logistic Regression (0) | 2021.06.21 |
[n213]Ridge Regression (0) | 2021.06.21 |
[n212]다중선형회귀(Multiple Linear Regression) (0) | 2021.06.21 |