2강 - Linear Regression

1. 선형회귀 개념

 

회귀 분석

회귀분석은 기본적으로 하나 이상의 독립변인(들)(또는 '예측변인'이나 '설명변인'이라고도 함)이 한 단위 변할 때, 종속변인(또는 '결과변인'이나 '피설명변인'이라고도 함)이 얼마나 변할 것인지, 다시 말해 하나 이상의 독립변인(들)이 종속변인에 미치는 영향력을 예측(prediction)하는 데 주로 사용하는 통계분석 기법이다

[네이버 지식백과] 회귀분석 (커뮤니케이션 통계 방법, 2013. 2. 25., 커뮤니케이션북스)

 

회귀

회귀분석(regression analysis)에서 '회귀(regression)'란 용어는 19세기 프랜시스 갤턴(Francis Galton)이 키 큰 선대 부모들이 낳은 자식들의 키가 점점 더 커지지 않고, 다시 평균 키로 회귀하는 경향을 보고서 발견한 개념이다. 이를 통계학 용어로 '평균으로의 회귀(regression toward mean)'라고 한다.

[네이버 지식백과] 회귀분석 (커뮤니케이션 통계 방법, 2013. 2. 25., 커뮤니케이션북스)

 

선형회귀

통계학에서, 선형 회귀(線型回歸, 영어: linear regression)는 종속 변수 y와 한 개 이상의 독립 변수 (또는 설명 변수) X와의 선형 상관 관계를 모델링하는 회귀분석 기법이다. 한 개의 설명 변수에 기반한 경우에는 단순 선형 회귀, 둘 이상의 설명 변수에 기반한 경우에는 다중 선형 회귀라고 한다.

출처: https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95_%ED%9A%8C%EA%B7%80

 

2. 선형회귀 분석

 1) 종속 변수 y와 한 개 이상의 독립 변수 X와의 선형 상관관계에 의해 어떻게 영향을 받는지 분석한다.

   - 공부를 열심히 할 수록 성적이 높아진다.
   - 훈련을 열심히 할 수록 운동 실력이 좋아진다.
   - 집의 크기가 크면 클수록 가격이 비싸진다.
 2) 값을 예측하는 것이 목적일 경우, 선형 회귀를 사용해 데이터에 적합한 예측 모형을 개발한다. 개발한 선형 회귀식을 사용해 y가 없는 x값에 대해 y를 예측하기 위해 사용할 수 있다.

 3) 선형 회귀라는 이름에서 ‘선형’이 의미하는 것은 분석의 결과가 직선의 형태를 띠고 있기 때문이다.

 4) 선형회귀 모델을 표현하는 함수는 y = W * x + b이다.

 

 

        

선형회귀 분석의 가설 함수는 W라는 기울기와 b라는 y절편을 갖는 1차방정식이다. 이는 x, y 좌표 평면상에서 직선을 나타낸다.

 

선형회귀 분석 목적

선형회귀 분석의 가설함수는 학습된 기존 데이터를 가장 잘 표현하는 직선을 결정하는 함수이며 이 직선은 W와 b를 변화시켜가면서 찾을 수 있다.  바로 이 최적의 W와 b 찾는 것이 선형회귀분석의 목적이다. 그리고 이렇게 찾아진 W와 b를 함수에 대입하게 되면 기존의 데이터가 아닌 새로운 x값이 나타났을 때 그 새로운 x에 대한 y값을 예측할 수 있게 되는 것이다.

 

 

 

# Lab 2 Linear Regression
import tensorflow as tf
import matplotlib.pyplot as plt
tf.set_random_seed(777)  # for reproducibility

# X and Y data
x_train = [1, 2, 3]
y_train = [1, 2, 3]

 

# Try to find values for W and b to compute y_train = x_data * W + b
# We know that W should be 1 and b should be 0
# But let TensorFlow figure it out

W = tf.Variable(tf.random_normal([1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')

 

# Our hypothesis XW+b
hypothesis = x_train * W + b

 

# 시각화

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_title('Linear Regression', size=20)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.scatter(x_train, y_train, color='red', marker='o')
ax.plot(x_train, x_train * W + b, color='green', linewidth=3)
plt.show()

 

▶ import tensorflow as tf

   TODO TensorFlow API 소개

 

import matplotlib.pyplot as plt
   TODO  matplotlib.pyplot API 소개

 

▶ tf.set_random_seed(777)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 이성윤