머신러닝 (모델) 1

김찬울·2021년 8월 12일
0

이제 이론은 배웠으니 직접적으로 모델에 대해 다뤄보겠다.

여러 모델이 있지만 일단 sklearn 모듈에 있는 모델을 다뤄본다

수치 예측모델

분류모델

이 둘 중 오늘 다뤄볼 것은 수치 예측 모델이다.

수치 예측 모델

수치 예측 모델은 이것 아님 그것 또는 저것 이런 류의 분류모델이 아니라

부동산 집값 예측이라거나 나라별 행복도 예측등 특성을 바탕으로 수치를 예측하는 것이다.

그러기에 수치를 모든 수로 전범위하게 나타낸다.

수치 예측에서 주로 사용하기 편한 모델은 보스톤 주택 가격 예측 모델이다.

해당 데이터는

from sklearn.datasets import load_boston
boston = load_boston()

bostonDF = pd.DataFrame(boston.data , columns = boston.feature_names)
bostonDF['PRICE'] = boston.target

이렇게 불러오면 된다.

load_boston 안에는 데이터 타겟, 컬럼 정보 등이 여러가지가 있는데

일단 필요한 것이 데이터와, 컬럼 명, 타겟이 있다.

데이터와 컬럼명을 데이터프레임으로 만들고 타겟을 label로 둔다.

타겟에는 데이터에 따른 집값이 들어있다.

그럼 우리는 이제 데이터를 전처리를 하고, 예측을 진행하면 된다.

전처리를 했다는 가정하에 시작하겠다.

모델 선정

예측 모델은 수 없이 많다. 지금도 발전하고 있으며 이미 존재하는 것만 해도 많다.

하지만 우리는 기본부터 시작할 것이다. 차근차근히 머신러닝 모델의 발전과정을 봐야한다.

LinearRegression()

from sklearn.linear_model import LinearRegression

해당 모듈에 들어있다.
선형 회귀모델인데 여기서 선형이라 함은 x, y의 지표를 바탕으로 방정식을 만드는 것이다.
선형이라고 무조건 1차원의 방정식은 아니고 다차원 방정식이 대다수다.

그 이유는 집값을 예측하는데 필요한 것이 나라와 지역으로는 확실한 값을 특정하기 어렵기에

지역 특성, 범죄율, 비상업 지역 넓이, 거주할 수 있는 방, 고속도로 접근 용이도등 많은 요소가 집값을 예측하는데 필요하다.

일단 선형 회귀모델은 파라미터에 기반하여 예측을 하는데 이는 기울기와 절편으로 볼 수 있다.

기울기는 x에 대한 상수이고, 절편은 x가 0일때 y선의 어느 지점에서 있는 지이다.

이렇게 예측을 할 때 필요한 상수는 데이터를 받아서 점점 줄여나가거나 높여나가서 적당량의 데이터를 받았을 때 거의 수렴하듯 한다.

예를 들어 지역특성이 1이고 범죄율이 4이고

파라미터로 인한 예측 방정식이 2 x1 + 3 x2 + 2라는 가정이라면 2 + 12 이므로 해당 지역의 주택은 14의 가격을 지닌다. 이런 식으로 14라는 값이 y로 주어지고 1과 4라는 변수가 주어졌을 때 x로 하여금 y를 예측하게 하는 모델이다.

DecisionTreeRegressor()

from sklearn.tree import DecisionTreeRegressor

해당 모델은 결정 트리모델로 y/n 등의 대답을 통해서 옳은 값을 타고 트리를 내려가면서 끝에 도달했을 때 그 값이 정해지는 모델이다.

해당 모델의 가장 큰 단점은 트리의 길이가 너무 길다면 과대적합이 일어날 가능성이 커서 해당 모델을 이용한다면 여러 데이터를 비교하는 게 좋다. 사실 이보다 더 좋은 randomforest모델이 있지만 이는 추후에 다루겠다.

각설하고 결정트리모델의 사용법은 다른 모델들과 같다.

forest_reg = RandomTreeRegressor()
forest_reg.fit(X_train, y_train)

으로 훈련을 하고

forest_reg.predict(X_test, y_test)

로 예측을 진행한다.

profile
코린코린이

0개의 댓글