04-1. Multi-variable Linear Regression LAB

2020. 4. 7. 23:00AI/모두를 위한 딥러닝

이 포스트는 모두를 위한 딥러닝 - Tensor Flow를 정리한 내용을 담았습니다.
누구나 이해할 수 있는 수준으로 설명하고자 하였으며 LAB의 코드는 TF2.0에 맞추어 재작성되었습니다.

 이번 포스트에서는 Multi-variable linear regression, 다변수 선형 회귀를 텐서플로우로 어떻게 구현하는지 알아보겠습니다. 먼저 구현에 필요한 Training data set을 준비합니다.

x1

x2

x3

Y

73

80

75

152

93

88

93

185

89

91

90

180

96

98

100

196

73

66

70

142

코드 1

표의 데이터를 보고 Multu-variable linear regression을 텐서플로우로 구현한 코드입니다. 복잡해 보이지만 02-2. Simple linear regression LAB의 코드에서 변수 x의 개수만 늘어났을 뿐, 다른 점은 없습니다. 코드의 자세한 설명은 02-2. Simple linear regression LAB에서 확인할 수 있습니다.

 코드는 hypothesis를 h =  w1 * x1 +... 와 같이 길게 풀어썻습니다. 위의 경우는 변수가 3개밖에 되지 않으므로 크게 복잡해 보이지 않지만, 변수가 100개, 1000개 이런 식으로 늘어난다면 hypothesis는 물론 training data set의 x, Y를  일일이 적는 것은 매우 힘들 것입니다. 따라서 우리는 Matrix를 활용해 코드를 재작성할 필요가 있습니다. 코드는 아래와 같습니다.

코드 2

코드 1과 2의 가장 큰 차이는 행렬의 사용에 있습니다. 코드 1.1에서는 행렬을 사용하지 않아 변수와 W를 일일이 기술하였습니다. 따라서 변수가 많아질수록 가독성이 떨어지고 자칫 오류를 일으킬 수 있습니다. 하지만 코드 2에서는 행렬을 사용하여 데이터를 정렬하였으며 리스트 슬라이싱을 사용해 x, y를 표현했습니다. 또한 행렬 곱 연산을 하는 tf.matmul() 메서드를 이용해 hypothesis를 표현했습니다. 요약하면 코드 2는 행렬을 이용함으로써 코드 1에서 x와 w를 길게 늘어놓아 쓴 것을 일반화하여 표현하여 가독성을 높였습니다.

 

이번 포스트에서는 다변수 선형 회귀를 텐서플로우에서 실행하며 matrix 사용의 필요성과 이점에 대해 알아보았습니다. 다음 포스트에서는 Logistic (Regression) Classification 알고리즘에 대해 살펴보겠습니다.