지금까지는 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).그래프로 표현 및 정확도 확인
정확도를 확인해보니 , 두개 다 많이 높아진것을 확인 할 수있다.
하지만 아직도 테스트세트의 점수가 높은것을 보니 과소적합은 남아있는것 같다.
계속 이어서 공부를 해나가겠지만 정말 많은 생각을 해야되는것 같다..
'AI > Machine Learning' 카테고리의 다른 글
[Python] 머신러닝 기초-7 Ridge Regression 과 Lasso Regression을 통한 연습 / Ridge란? / Lasso란? (0) | 2021.01.18 |
---|---|
[Python] 머신러닝 기초-6 다중회귀(Multiple Regression) 알고리즘을 통한 연습 / 다중회귀란? (0) | 2021.01.18 |
[Python] 머신러닝 기초-4 K-Neighbors (최근접)알고리즘을 통한 연습- 회귀 (0) | 2021.01.18 |
[Python] 머신러닝 기초-3 K-Neighbors (최근접)알고리즘을 통한 연습- 분류 (0) | 2021.01.15 |
[Python] 머신러닝 기초-2 K-Neighbors (최근접)알고리즘을 통한 연습- 분류 (0) | 2021.01.15 |