작성
·
291
0
안녕하세요 강사님 수업 잘 듣고있습니다!
파이썬 코드로 경사 하강법 구현하기
에서 def get_cost 함수 y_pred = w1[0,0] * X + w0 부분에 질문이 있습니다.
현재 코드가 w1와 w0 둘다 shape이 (1,1)이라서 그런지 더욱 헷갈리는 것 같습니다. 왜 w1[0,0]가 들어가고, w0은 전체가 들어가는지 정확하게 이해가 되지 않습니다.
y_pred = w1 * X + w0 이렇게 넣어도 반환되는 값은 똑같은데 만약 feature가 여러 개가 있어도 똑같이 w1[0,0]을 넣는 것인지 아니면 그거랑 상관없이 다르게 이해하고 있는 것인지... 잘 모르겠습니다!
답변 1
0
안녕하십니까,
여기서 w1은 여러개의 회귀 계수들을 뜻하는 거라고 보시면 됩니다. 피처가 3개가 있으면 w1은 [w11, w12, w13] 로 생각하시면 됩니다.
그러니까 w1이 feature 1에 대한 회귀 계수가 아니라 여러개의 feature 들에 대한 회귀 계수들을 일반화 시킨것입니다.
아무래도 np.dot(X, w1.T) + w0 보다는 np.dot(X, W.T) + w0 와 같이 표현하는 게 더 좋았을 수도 있지만(여기서의 W는 w0를 제외한 다른 w1, w2, w3등) 경사하강법의 개념을 좀 더 쉽게 이해 시켜드리기 위해서 피처를 1개만 가지고 적용하면서 w1으로 적용했을 뿐입니다.
여러개의 피처들이 있었다면 제가 w1이 아니라 W= [w1, w2, w3] 으로 표현을 했을 것입니다. 다만 여러개의 피처들이 있다면 위의 X, Y의 시각화 표시를 하기가 좀 불편했고, 개념 이해 보다는 코드 구현 자체에 너무 함몰 될 수 있을 것 같아서 보다 간략한 구현을 선택했습니다.
그리고 w1과 w0는 2차원입니다. 2차원으로 하는게 dot 연산등의 코드 구현이 좀 더 쉽기 때문에 적용했으며, 만약 여러개의 피처가 있다면 w1은 W[0, 0], w2는 W[0, 1], w3는 W[0, 2]와 같이 추출할 수 있습니다.
감사합니다.