Vectors and Matrices

개념 확인: Vectors and Matrices


관측을 배열로 적고 내적과 행렬 곱으로 예측값을 계산한다.

문제 1

표를 자료 행렬로 옮기기

문제 1, 3, 5는 아래 표를 함께 사용한다.

학생 공부 시간 결석 횟수 과제 제출
A 7 2 4
B 3 0 5
C 8 1 2
D 5 3 3

학생을 관측, 세 열을 표의 순서대로 특성으로 삼아 자료 행렬 X를 만든다.

  1. X의 모양을 적는다.
  2. x₂⁽³⁾의 값과 뜻을 적고, NumPy 배열 X에서 같은 값을 읽는 첨자를 적는다.
  3. Xᵀ의 모양과 Xᵀ의 첫째 행이 무엇을 모은 것인지 적는다.
  4. 학생을 열로 세워 배열을 만들었다면 모양이 어떻게 되고, 무엇으로 이 실수를 확인하는지 적는다.
해설 펼치기
  1. 관측 4개, 특성 3개이므로 X ∈ ℝ⁴ˣ³이다.
  2. x₂⁽³⁾ = 1이다. 셋째 관측(학생 C)의 둘째 특성(결석 횟수)이며, NumPy는 0부터 세므로 X[2, 1]이다.
  3. Xᵀ는 3 × 4다. (i, j) 자리가 (j, i)로 가므로 첫째 행은 X의 첫째 열, 곧 네 학생의 공부 시간 (7, 3, 8, 5)다.
  4. 3 × 4가 된다. 배열을 만든 뒤 X.shape가 (관측 수, 특성 수)인지 확인한다.
문제 2

덧셈과 스칼라배

u = (2, −1)ᵀ, v = (1, 3)ᵀ이다.

  1. u + v를 계산한다.
  2. −2u를 계산하고, u와 비교해 크기와 방향이 어떻게 바뀌는지 적는다.
  3. ‖u‖₂와 ‖−2u‖₂를 구한다.
  4. u의 단위벡터를 구한다.
해설 펼치기
  1. u + v = (2 + 1, −1 + 3)ᵀ = (3, 2)ᵀ이다.
  2. −2u = (−4, 2)ᵀ다. 모든 성분에 −2를 곱했으므로 크기는 2배가 되고, 곱한 수가 음수라 방향은 u와 반대다.
  3. ‖u‖₂ = √(2² + (−1)²) = √5, ‖−2u‖₂ = √(16 + 4) = √20 = 2√5다.
  4. u / ‖u‖₂ = (2/√5, −1/√5)ᵀ ≈ (0.894, −0.447)ᵀ다. 방향은 같고 크기가 1이다.
문제 3

내적으로 점수 만들기

문제 1의 표를 사용한다. 가중치 θ = (5, −4, 2)ᵀ로 점수 θᵀx를 만든다. 특성 순서는 표와 같다.

  1. 학생 A와 학생 D의 점수를 계산한다.
  2. 두 점수의 차를 특성별 항의 차로 나누어 설명한다.
  3. 학생 A의 결석 횟수만 1회 늘면 점수가 얼마나 바뀌는지 적고, 결석 횟수가 양수인데 점수를 낮추는 이유를 설명한다.
해설 펼치기
  1. A: 5·7 + (−4)·2 + 2·4 = 35 − 8 + 8 = 35. D: 5·5 + (−4)·3 + 2·3 = 25 − 12 + 6 = 19.
  2. 차이는 35 − 19 = 16이다. 공부 시간 항 35 − 25 = 10, 결석 항 −8 − (−12) = 4, 과제 항 8 − 6 = 2이며 10 + 4 + 2 = 16이다.
  3. 결석 항이 −4·3 = −12가 되어 점수가 4만큼 줄어든 31이 된다. 항은 특성값과 가중치의 곱이므로 가중치가 음수이면 양수인 특성값도 점수를 낮춘다.
문제 4

내적이 크면 더 비슷한가

u = (3, 4)ᵀ, a = (6, 8)ᵀ, b = (30, 0)ᵀ, c = (−4, 3)ᵀ, d = (−6, −8)ᵀ이다.

  1. u·a, u·b, u·c, u·d를 계산한다.
  2. u와 각 벡터의 코사인 유사도를 구한다.
  3. 네 벡터가 u와 이루는 사이각을 같은 방향(0°)·예각·직각·둔각·정반대 방향(180°)으로 구분한다. 내적의 부호와 벡터의 성분을 근거로 적는다.
  4. 내적이 가장 큰 벡터가 u와 방향이 가장 비슷하다고 말할 수 없는 이유를 적는다.
해설 펼치기
  1. u·a = 18 + 32 = 50, u·b = 90 + 0 = 90, u·c = −12 + 12 = 0, u·d = −18 − 32 = −50이다.
  2. ‖u‖₂ = 5, ‖a‖₂ = 10, ‖b‖₂ = 30, ‖c‖₂ = 5, ‖d‖₂ = 10이므로 코사인 유사도는 a 50/(5·10) = 1, b 90/(5·30) = 0.6, c 0, d −50/(5·10) = −1이다.
  3. a는 u의 양수 스칼라배이므로 같은 방향(0°)이고, b는 내적이 양수이며 같은 방향은 아니므로 예각이다. c는 직각(내적 0)이다. d는 u의 음수 스칼라배이므로 정반대 방향(180°)이며 내적은 음수다.
  4. 내적은 크기와 사이각에 함께 달라진다. b는 길어서 내적이 가장 크지만 방향이 같은 것은 코사인 유사도 1인 a다.
문제 5

행렬 곱으로 네 학생을 한 번에 계산하기

문제 1의 X, 문제 3의 θ, 절편 θ₀ = −10을 사용한다.

  1. ŷ = Xθ + θ₀𝟏₄를 계산한다.
  2. 1로 채운 열을 X의 왼쪽에 붙인 X̃와 θ̃ = (θ₀, θ₁, θ₂, θ₃)ᵀ의 모양을 적고, X̃θ̃가 1의 결과와 같은 이유를 적는다.
  3. XᵀX와 XXᵀ의 모양을 적는다.
  4. 가중치를 w = (5, −4)ᵀ로 잘못 적었을 때 Xw가 계산되지 않는 이유를 모양으로 설명한다.
  5. NumPy에서 X + np.array([1, 0, 0])과 X + np.array([1, 2])는 각각 어떻게 되는지 적는다.
  6. 결석 가중치만 1 줄여 Δθ = (0, −1, 0)ᵀ가 되면 네 학생의 예측값이 각각 얼마나 바뀌는지 XΔθ로 구한다.
해설 펼치기
  1. 각 행과 θ의 내적은 A 35, B 15 + 0 + 10 = 25, C 40 − 4 + 4 = 40, D 19다. 모든 자리에 −10을 더해 ŷ = (25, 15, 30, 9)ᵀ다.
  2. X̃는 4 × 4, θ̃는 4 × 1이다. 각 행의 첫 성분 1이 θ₀과 곱해져 모든 관측에 θ₀을 한 번씩 더하므로 결과가 같다.
  3. XᵀX는 (3 × 4)(4 × 3) = 3 × 3, XXᵀ는 (4 × 3)(3 × 4) = 4 × 4다.
  4. X는 4 × 3, w는 길이 2라 안쪽 차원이 3과 2로 달라 곱을 정의할 수 없다. NumPy에서는 ValueError가 난다.
  5. 첫째는 브로드캐스팅으로 각 행의 첫 성분에 1을 더한다(A는 (8, 2, 4)). 둘째는 길이 2를 3열에 맞출 수 없어 ValueError가 난다. 오류가 없더라도 의도한 연산인지 결과 모양으로 확인한다.
  6. XΔθ는 각 행의 결석 횟수에 −1을 곱한 (−2, 0, −1, −3)ᵀ다. 결석이 0인 B는 바뀌지 않는다.