같이 수업듣는 학생인데 간략하게 작성해 보겠습니다. 모범답안은 < .T > 를 이용해서 행렬을 전치(transpose)해주는 게 맞습니다만 작성자님이 (prediction(X,theta) -y) @ X의 행렬연산순서를 변경해 줌으로써 전치를 필요없게 하셨습니다.
다시말해 아래와 같이 두 코드는 같은 연산을 합니다. error @ X = X.T@error 다만 원래 대로라면 답의 모양이 다릅니다. 모법답안은 4x1 모양의 행렬이라면 작성자님 코드는 1x4모양의 행렬이지만 python이 결과를 나타내면서 단일 행 또는 열의 행렬을 1행 행렬로 바꾸는 것 같습니다.
대신 작성자님 코드에 아래와 같이 X행렬에 < .T>를 적용하면 오히려 오류가 발생할 것입니다. error @ X.T ==> 오류발생(행렬 곱셈 규칙에 위배)
제 댓글이 오류가 있을수도 있으니 참고만 하셨으면 좋겠습니다. 이 댓글을 작성하고 이것 저것 시도해 보았는데 행렬곱셈규칙에 위배되더라도 곱해주는 행렬이 1열 또는 1행 짜리 행렬이면 알아서 모양을 바꿔 게산하는 경우가 있는것 같습니다. 결론적으로 전치행렬, 행렬곱셈에 대해서 조금 공부해 보시면 될 것 같습니다.
댓글 1개
모범답안은 < .T > 를 이용해서 행렬을 전치(transpose)해주는 게 맞습니다만 작성자님이 (prediction(X,theta) -y) @ X의 행렬연산순서를 변경해 줌으로써 전치를 필요없게 하셨습니다.
다시말해 아래와 같이 두 코드는 같은 연산을 합니다.
error @ X = X.T@error
다만 원래 대로라면 답의 모양이 다릅니다. 모법답안은 4x1 모양의 행렬이라면
작성자님 코드는 1x4모양의 행렬이지만 python이 결과를 나타내면서 단일 행 또는 열의 행렬을 1행 행렬로 바꾸는 것 같습니다.
대신 작성자님 코드에 아래와 같이 X행렬에 < .T>를 적용하면 오히려 오류가 발생할 것입니다.
error @ X.T ==> 오류발생(행렬 곱셈 규칙에 위배)
제 댓글이 오류가 있을수도 있으니 참고만 하셨으면 좋겠습니다.
이 댓글을 작성하고 이것 저것 시도해 보았는데 행렬곱셈규칙에 위배되더라도 곱해주는 행렬이 1열 또는 1행 짜리 행렬이면 알아서 모양을 바꿔 게산하는 경우가 있는것 같습니다.
결론적으로 전치행렬, 행렬곱셈에 대해서 조금 공부해 보시면 될 것 같습니다.