선형회귀(Linear Regression Analysis)
: 독립변인이 종속변인에 영향을 미치는지 알아보고자 할 때 실시하는 분석 방법입니다. 선형성이라는 기본 가정이 충족된 상태에서 독립변수와 종속변수의 관계를 설명하거나 예측하는 통계방법으로 회귀분석에서 독립변수에 따라 종속변수의 값이 일정한 패턴으로 변해 가는데 , 이러한 변수간의 관계를 나타내는 회귀선이 직선에 가깝게 나타나는 경우를 의미합니다.
- 선형이기 때문에 어떤 X 값이라도 W와 b만 정의되면 알 수 있습니다.
종 류
- 단순회귀분석 : 독립변수가 하나인 경우
- 다중회귀분석 : 독립변수가 여러 개인 경우
단순 선형 회귀 분석
H(x) = Wx + b
x : 독립변수
y : 종속 변수
W : 직선의 기울기 (가중치 : weight)
b : y 절편 (bias)
편차(Deviation)
- 수학 및 통계학에서 편차는 자료값 또는 변량과 평균의 차이를 나타내는 수치입니다.
- 편차를 살펴보면 자료들이 평균을 중심으로 얼마나 퍼져 있는지를 알 수 있습니다.
- 자료값이 평균보다 크면 편차는 양의 값을 , 평균보다 작으면 음의 값을 가지게 됩니다.
- 편차의 크기는 차이의 크기를 나타냅니다.
- 편차의 절댓값은 절대편차 , 편차의 제곱은 제곱편차라고 합니다.
용어 정의
잔차 (Residual)
: 회귀분석에서 종속변수와 적합값 예상값 의 차이, 잔차는 종속변수 적합값 으로 정의
분산 (Variance)
: 편차의 제곱
표준 편차 (Standard Deviation)
: 분산의 제곱근
1. 단순회귀분석
1) 가설함수(Hypothesis) 정의 y = wx + b
2) 손실(Loss or Cost)함수 정의
- 선형회기 일 때, 평균 제곱 오차(MSE) 사용
: 실제 값과 예측 값의 차이를 제곱하여 평균을 낸 값입니다.
3) 경사하강법(Gradient descent) algorithm 사용
- 손실이 계산 될 때마다 경사하강법을 넣어서 최적의 w, b 값을 찾도록 학습시킵니다.
학습률 x 접선의 기울기(미분값)
손실 값 = 0이 되는 것을 찾아가는 것으로 음수가 나오면 양수쪽으로 이동, 양수가 나오면 음수쪽으로 이동
4) tensorflow 실행
tensorflow = 배열이나 행렬의 데이터가 흘러간다는 의미를 가집니다.
tensor / 행렬, 배열의 데이터를 의미 , flow/ 흘러가는 구조
출력값
2. 다중회귀분석
※ 중간고사 점수를 가지고 기마고사 점수 예측 하기
0) 데이터 정리
1) 가설 함수 정의
2) 손실 함수 정의
3) 경사하강법 알고리즘
4) tensorflow 실행
너무 적게 학습 시켜도 안되고, 너무 많이 학습 시켜도 좋지 않습니다. 입력데이터에 따라서 그 숫자는 다릅니다. 일반적으로 반복의 수는 결과를 통해서 지속적 변경이 요구됩니다.
결과값
100번 학습이 될 때, nan이 출력되었다.
해결점)
learning_rate=0.00001을 줄여보도록 하겠습니다.
9900번에서 손실값이 0.301307로 점점 줄어들었습니다. 예측값이 점점 맞춰져 가고 있습니다.
실제 값- finalterm = [152.,185.,180.,196.,142]
모델(예측값) - 150.93 , 184.98941, 180.49393 , 196.34583 , 142.05391
실제값과 상당히 유사한 값을 예측하고 있습니다.
조금 더 정확한 값을 예측하기 위해서 횟수 15001번으로 늘려보도록 하겠습니다.
- 15001번인 이유는 마지막 값을 출력하기 위함입니다.
실제 값- finalterm = [152.,185.,180.,196.,142]
모델(예측값) - 151.22945, 184.79118, 180.59178, 196.36273, 141.8395
- 횟수가 늘어났다고 해서 모든 값이 점수가 향상된다고 반드시 이야기 할 수는 없습니다. 마지막 값은 변동 예측치가 조금 떨어진걸 통해서 알 수 있습니다. 평균 값을 봤을 때 손실값이 줄어들 수 있음을 확인할 수 있습니다.
※ 학습 데이터를 통해서 정확도를 이야기를 하면 안됩니다. 추가적으로 새로운 데이터에 적용해봤을 때, 나온 결과를 보고 정확도를 확인할 수 있습니다.
위의 코드를 실용적으로 변경해보도록 하겠습니다.
- 데이터를 metrix의 형태로 넣어줍니다.
같은 결과를 보이지만, 퍼포먼스가 엄청 큰 차이로 발생합니다.
지금까지 만든 모델을 확인해보겠습니다.
148.60616 이라는 결과가 나옵니다.
'Anaconda > MachineLearning' 카테고리의 다른 글
[MachineLearning] NN for XOR (0) | 2020.08.19 |
---|---|
[MachineLearning] tensorflow 이용 - Softmax 함수 (0) | 2020.08.18 |
[MachineLearning] tensorflow 이용 - 로지스틱 분류분석 (0) | 2020.08.14 |
[MachineLearning] 머신러닝 개요 (0) | 2020.08.14 |
[MachineLearning] tensorflow1 사용을 위한 환경 설정 (0) | 2020.08.13 |