AI/Machine Learning

[Python] 머신러닝 기초-5 선형회귀(Linear Regression) 알고리즘을 통한 연습 / 선형회귀란? 다항회귀란?

Jeong Jeon
반응형

지금까지는 K-최근접 알고리즘을 통해 모델을 만들었고, 그 모델로 예측을 해보았다.  하지만 어느일정 길이를 넘어서면 예측되는 무게가 다 똑같이 나오는것을 봤을것이다.

이것은 가장 근접한 클래스의 평균을 내서 주는 최근접 알고리즘의 엄청난 단점이다.

 

이런점을 해결하기 위해 가장 보편적으로 사용하는것이 선형회귀 알고리즘이다.

 

선형회귀란?

- 데이터를 가장 잘 표현할수 있는 직선을 구하는 알고리즘

 

우선 코드로 선형회귀 알고리즘을 한번 적용시켜 보자

 

1). 데이터 형변환

2). 선형회귀 알고리즘 사용하여 필요한 값을 구한다.

일차방정식

  • y = ax+b

여기서 선형회귀를 사용할때 종종 H(x) =Wx+b를 사용해서 표현했는데, 나도 이걸로 표현하겠다.

Linear Resgression을 사용하면 그 객체 안에 W와 b가 존재하게된다.

W = Weight 기울기  = lr.coef_

b = Bias                 = lr.intercept_

 

지금 구한 직선을 그래프로 표현해보면

우리가 입력한 데이터가 직선의 끝에 있는것을 확인할 수 있다.

하지만 우리가 만든 모델에서의 테스트세트와 훈련세트 정확도는 생각보다 높지않다.! == 과소적합이다.

게다가 직선을 따라 축을 향해 이어보면, y=무게가 0으로 수렴하는곳이 발생한다. 길이는 있는데 무게가 0? 말이안돼지.

 

그래서 다항회귀라는것이 나오게 된다.

 

다항회귀란?

데이터들 간의 관계가 비선형 일때 데이터에 각 특성의 제곱을 추가해주어서 특성이 추가된 비선형 데이터를 선형 회귀 모델로 훈련시키는 것을 의미

 

1). 2차방정식을 사용한 알고리즘이라고 생각해보자

2차 방정식을 만들기위해 테스트Input과 훈련Input을 제곱한 행을 하나추가해주자

2차 방정식

  • y = ax²=bx+c

2). 학습 후 결과값 확인

자 헷깔릴수 있으니 식으로 표현해보자

  • y = 1.01 * 길이 + -21.6*길이 + 116.05

3).그래프로 표현 및 정확도 확인

정확도를 확인해보니 , 두개 다 많이 높아진것을 확인 할 수있다.

하지만 아직도 테스트세트의 점수가 높은것을 보니 과소적합은 남아있는것 같다.

 

계속 이어서 공부를 해나가겠지만 정말 많은 생각을 해야되는것 같다..

반응형