머신러닝

다중 회귀 알고리즘

UniCoti(유니코티) 2024. 12. 20. 13:47
반응형

다중 회귀 알고리즘이란 여러 가지 특성을 반영하여 연관성을 찾는 알고리즘을 말한다.

이전 선형 회귀 모델에서 입력되는 특성, 출력되는 특성의 2가지 특성만 가지고

연관성을 분석하여 그래프를 만들었는데,

 

사실 결과를 도출할 수 있는 특성은 여러 개일 수 있다.

예를 들어 농어의 무게를 예측하고 싶다면 농어의 길이 말고도 두께, 암수컷 등

여러 가지 특성을 함께 고려한다면 조금 더 정확한 무게 예측 시스템이 될 것이다.


다중 회귀

다중 회귀 모델의 경우 그래프가 저렇게 평면 이상으로 나타나기도 한다.

당연하게도 입력이 여러 개인데 그래프의 x는 여러 개일 수가 없기 때문에 x, z 등의 축이 특성으로 나타나기에 그렇다.

근데 우리는 4차원 이상은 볼 수 없기 때문에 보통 3차원 축 안의 평면까지만 나타낸다.

 

import pandas as pd
df = pd.read_csv('https://bit.ly/perch_csv_data')
perch_full = df.to_numpy()

import numpy as np
perch_weight = np.array([5.9, 32.0, 40.0, 51.5, 70.0, 100.0, 78.0, 80.0, 85.0, 85.0, 110.0,
       115.0, 125.0, 130.0, 120.0, 120.0, 130.0, 135.0, 110.0, 130.0,
       150.0, 145.0, 150.0, 170.0, 225.0, 145.0, 188.0, 180.0, 197.0,
       218.0, 300.0, 260.0, 265.0, 250.0, 250.0, 300.0, 320.0, 514.0,
       556.0, 840.0, 685.0, 700.0, 700.0, 690.0, 900.0, 650.0, 820.0,
       850.0, 900.0, 1015.0, 820.0, 1100.0, 1000.0, 1100.0, 1000.0, 1000.0])

from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(perch_full, perch_weight, random_state=42)

from sklearn.preprocessing import PolynomialFeatures

poly = PolynomialFeatures(degree=5, include_bias=False)
poly.fit(train_input)
train_poly = poly.transform(train_input)
test_poly = poly.transform(test_input)

from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(train_poly)
train_scaled = ss.transform(train_poly)
test_scaled = ss.transform(test_poly)

from sklearn.linear_model import Lasso
lasso = Lasso(alpha=10)
lasso.fit(train_scaled,train_target)
print(lasso.score(train_scaled, train_target))
print(lasso.score(test_scaled, test_target))

 

예제코드)

pandas 덕분에 쉽게 처리가 가능하다.

lasso와 ridge를 사용하면 좋다.


이번 글은 다중 회귀 모델에 대해서 알아봤다. 사실 너무 거시적으로만

정리하는 게 아닌가 싶긴 한데, 코드도 되돌아봐야겠다고 느꼈다.

빠르게 진행하는 만큼 이해가 동반되려면 어느 정도의 추가적인 노력이 필요하다.


이상으로 도움이 되었길 바라며,

 

끝.

반응형