2023. 5. 8. 16:06ㆍLanguage/Python
선형 회귀
- 변수 사이의 선형적인 관계를 모델링 한 것
- 선형적인 관계에 적용하는 대표적인 기계 학습 이론이 선형 회귀임
선형 회귀 모델 구축
- 주어진 데이터를 학습시켜 가장 합리적인 직선을 찾아내는 것
- 따라서 데이터는 3개 이상일 때 의미가 있다.
선형 회귀란 주어진 데이터를 이용하여 일차방정식을 수정해 나가는것
- 학습을 거쳐서 가장 합리적인 선을 찾아내는것
- 학습을 많이 해도 완벽한 식을 찾아내지 못할 수 있다.
- 하지만 실제 사례에서는 근사값을 찾는 것 만으로도 충분할 때가 많다.
- 알파고도 결과적으로는 근사값을 가정하는 프로그램에 불과함
비용(Cost)
가설이 얼마나 정확한 지 판단하는 기준
비용함수(Cost Function)
경사하강(Gradient Descent)
- 곡선의 특성상 초반에는 많은 포으로 변화한다.
- 너무 작게 점프하면 오랫동안 학습해야 한다.
- 너무 크게 점프하면 학습 결과가 부정확할 수 있다.
텐서플로우는 경사 하강 라이브러리를 제공합니다
- 우리는 직접 구현할 필요 없이 원리만 이해해도 충분
선형 회귀 및 경사하강 프로그램 구현
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
xData = [1, 2, 3, 4, 5, 6, 7]
yData = [25000, 55000, 75000, 110000, 128000, 155000, 180000]
W = tf.Variable(tf.random_uniform([1], -100, 100))
b = tf.Variable(tf.random_uniform([1], -100, 100))
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
H = W * X + b
cost = tf.reduce_mean(tf.square(H - Y))
a = tf.Variable(0.01)
optimizer = tf.train.GradientDescentOptimizer(a)
train = optimizer.minimize(cost)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for i in range(5001):
sess.run(train, feed_dict={X: xData, Y: yData})
if i % 500 ==0:
print(i, sess.run(cost, feed_dict={X: xData, Y: yData}), sess.run(W), sess.run(b))
print(sess.run(H, feed_dict={X: [8]})) - 기존 데이터를 학습시켜 8시간 동안 근무 했을때 합리적인 비용 계산
결과
0 4584764000.0 [10398.514] [2019.0995]
500 8685445.0 [25539.121] [1942.2699]
1000 8633772.0 [25627.74] [1503.4292]
1500 8632674.0 [25640.652] [1439.4838]
2000 8632655.0 [25642.535] [1430.1608]
2500 8632650.0 [25642.807] [1428.8167]
3000 8632651.0 [25642.844] [1428.6324]
3500 8632656.0 [25642.848] [1428.6133]
4000 8632656.0 [25642.848] [1428.6133]
4500 8632656.0 [25642.848] [1428.6133]
5000 8632656.0 [25642.848] [1428.6133]
[206571.39]
출처 : https://www.youtube.com/watch?v=IhNNpyWKorY&list=PLRx0vPvlEmdAbnmLH9yh03cw9UQU_o7PO&index=2
'Language > Python' 카테고리의 다른 글
[Python] Open API 활용한 크롤링 (0) | 2023.04.18 |
---|---|
[Python] 크롤링 엑셀 파일 만들기 (0) | 2023.04.17 |
[Python] 크롤링 패턴 실습 (0) | 2023.04.11 |
[Python] 객체와 라이브러리 (0) | 2023.04.11 |
[Python] jupyter notebook 기본 사용법 Python 문법 (0) | 2023.03.31 |