[2025. 임용 정보ㆍ컴퓨터] 선형 이진 분류기와 C 프로그램 구현

선형 이진 분류기와 C 프로그램 구현
선형 이진 분류기와 C 프로그램 구현2

정답

㉠ \(w[i] * input\_v[i]\), ㉡ input_v

출제 의도

선형모델을 이용한 이진 분류기의 수식 \(\sum_{i=1}^{d} w_i x_i + b\)를 프로그램으로 구현하는 방법을 이해하고, C 언어에서 1차원 배열을 함수 인자로 전달하는 방식을 확인하는 문제이다.

풀이 과정

(나)의 설명에 따르면 이진 분류기의 선형모델은 가중치 벡터 \(\mathbf{w}\)와 입력 벡터 \(\mathbf{x}\)에 대해 다음 값을 계산한다.

$$ y = \sum_{i=1}^{d} w_i x_i + b $$

그리고 \(y > 0\)이면 1, 그렇지 않으면 0을 출력한다. C 코드 (가)에서 변수 prod가 바로 위 식의 \(\sum_{i=1}^{d} w_i x_i\)에 해당하는 누적 합을 저장하는 역할을 한다.

반복문 안에서 인덱스 \(i\)에 대해 \(w_i x_i\)를 더해줘야 하므로, 배열로 저장된 가중치 벡터 w와 입력 벡터 input_v를 이용하여 다음과 같이 작성한다.

$$ \text{prod} \mathrel{+}= w[i] \times input\_v[i] $$

따라서 ㉠에는 w[i] * input_v[i]가 들어간다.

다음으로 predict 함수의 선언을 보면

int predict(float input_v[], int dim)

과 같이 정의되어 있다. 1차원 배열을 인자로 넘길 때는 배열 이름만 적으면 해당 배열의 시작 주소가 전달된다. 따라서 main 함수에서 입력 벡터 input_v를 그대로 인자로 넘기면 된다.

즉, ㉡에는 input_v가 들어가며, 전체 호출 문장은

int result = predict(input_v, dim);

이 된다.

<풀이가 부정확할 수 있으니 반드시 교차검증 확인 바랍니다.>