1. 결정함수란 무엇인가
1️⃣ 정의
결정함수는 입력값을 출력값에 대응시키는 규칙이다. 형식적으로는 입력 공간 X에서 출력 공간 Y로 가는 사상으로 표기한다.
f : X → Y
X : n차원 특징 공간, 입력은 특징 벡터 x = (x1, x2, ..., xn)
Y : 출력 공간. 분류 문제라면 {정상, 악성}, 회귀 문제라면 실수 집합
선형 분류기의 경우 결정함수는 다음 형태를 갖는다.
f(x) = sign(w1*x1 + w2*x2 + ... + wn*xn + b)
여기서 w는 가중치, b는 편향이다. 학습이 결정하는 대상은 이 w와 b이며, 이를 모델 파라미터라고 한다.
입력과 출력의 관계를 연결한다는 의미에서 매핑 함수(Mapping Function) 라는 용어도 동일한 대상을 가리킨다.
2️⃣ 일반 프로그램의 함수와의 차이
인자를 받아 연산을 거쳐 반환값을 내보내는 구조는 프로그래밍에서 작성하는 함수와 동일하다. 차이는 규칙의 생성 주체에 있다. 전통적 프로그래밍에서는 개발자가 규칙을 직접 작성하고 데이터를 통과시켜 출력을 얻는다.
머신러닝에서는 데이터와 정답을 입력하고 규칙 자체를 산출물로 얻는다. 입출력 관계가 반대로 놓인다.

3️⃣ 예시: 악성코드 탐지
| 구성 요소 | 악성코드 탐지에서의 대응 |
| 원본 관측값 | 정적·동적 분석으로 수집한 파일 속성. 파일 크기(연속형 수치), 네트워크 요청 횟수(이산 카운트), 사용 포트(명목형 범주), API 호출 시퀀스(가변 길이 심볼 열) |
| 입력 특징 벡터 x | 범주형·시퀀스 항목을 고정 길이 수치로 변환한 결과. 파일 크기와 요청 횟수는 그대로 사용하고, 포트는 구간별 원-핫 값으로, API 호출 시퀀스는 2-gram 빈도로 변환 |
| 결정함수 f | 학습 결과로 산출된 판별식. 각 특징에 가중치가 부여된 선형 결합 또는 비선형 함수 형태를 갖는다 예: 외부 연결 시도 빈도와 특정 포트 사용 여부에 가중치가 부여된 선형 결합 |
| 출력 y | 악성(Malware) 또는 정상(Normal) |
여기서 "외부 연결 시도가 많고 특정 포트를 사용하면 악성 가능성이 높다"는 판단 기준은 분석가가 규칙으로 입력한 것이 아니라, 레이블이 부여된 표본 집합에서 가중치 형태로 산출된 값이다.
2. 전체 흐름 — 학습 단계와 추론 단계
머신러닝 파이프라인은 결정함수를 생성하는 단계와 적용하는 단계로 나뉜다.

1️⃣ 학습 단계
레이블이 부여된 학습 데이터 집합을 학습 알고리즘에 투입하고, 데이터를 가장 적절히 분류하거나 예측하는 파라미터를 탐색한다. 알고리즘은 예측값과 실제 레이블의 차이를 손실 함수로 수치화하고, 그 값을 줄이는 방향으로 파라미터를 반복 갱신한다. 이 단계의 산출물은 판정 결과가 아니라 결정함수 자체다.
2️⃣ 추론 단계
학습에 사용되지 않은 새로운 데이터를 결정함수에 통과시켜 출력을 얻는다. 이 단계에서 파라미터는 갱신되지 않고 고정된 상태로 사용된다. 분류 문제라면 클래스 레이블이, 회귀 문제라면 수치 예측값이 출력된다.
3️⃣ 두 단계 비교
| 구분 | 학습 단계 | 추론 단계 |
| 입력 | 학습 데이터 집합 + 정답 레이블 | 새로운 데이터(레이블 없음) |
| 목적 | 결정함수 f 생성 | f 적용을 통한 판정 |
| 파라미터 상태 | 반복 갱신 | 고정 |
| 산출물 | 모델 파라미터(w, b) | 클래스 레이블 또는 예측값 |
| 연산 비용 | 높음, 배치 처리 | 낮음, 실시간 처리 가능 |
| 실행 주기 | 주기적 재학습 시 | 입력이 도착할 때마다 |
머신러닝은 데이터로부터 결정함수를 생성하는 과정(학습)과, 생성된 함수에 새로운 데이터를 입력해 출력을 얻는 과정(추론)의 결합이다.
3. 전처리(Preprocessing) — 입력 규격의 정합성 확보
1️⃣ 역할
수집된 원시 데이터는 결측치와 이상치를 포함하고 기록 형식이 일정하지 않다. 학습 알고리즘은 수치 행렬 형태의 입력을 전제하므로, 원시 데이터를 그 형식에 맞추는 변환이 선행되어야 한다. 전처리가 담당하는 작업은 다음과 같다.
- 🔵 결측치 처리: 값이 비어 있는 항목을 제거하거나 평균·중앙값 등으로 대체
- 🔵 이상치 처리: 측정 오류로 판단되는 극단값을 제거하거나 상·하한으로 절단
- 🔵 형식 통일: 타임존, 날짜 표기, 단위(바이트/킬로바이트) 등의 규격 일치
- 🔵 인코딩: 프로토콜명, HTTP 메서드 같은 범주형 문자열을 수치로 변환(원-핫 인코딩 등)
- 🔵 스케일 조정: 값의 범위가 크게 다른 항목 간 영향력 차이를 제거(표준화, 정규화)
2️⃣ 웹 서버 로그 전처리 예시
Apache 액세스 로그를 수집한 경우를 가정한다. 원시 형태는 다음과 같다.
192.168.10.24 - - [12/Sep/2026:09:14:22 +0900] "GET /index.php HTTP/1.1" 200 5120
192.168.10.24 - - [12/Sep/2026:00:14:23 -0000] "POST /login.php HTTP/1.1" 401 -
10.0.2.15 - - [12/Sep/2026:09:14:25 +0900] "GET /?id=1' OR '1'='1 HTTP/1.1" 500 842
여기에는 세 종류의 문제가 있다.
둘째 행의 타임존이 다른 행과 일치하지 않는다. +0900은 UTC+9(KST), -0000은 UTC 기준으로, 둘째행만 오프셋이 다르다.
또한 전송 바이트 수가 -로 기록되어 결측 상태이며, 메서드와 상태 코드가 문자열 및 범주형 값이다. 전처리 후의 형태는 다음과 같다.
timestamp_unix, src_ip_int, method_get, method_post, status_class, bytes_sent
1789258462, 3232238104, 1, 0, 2, 5120
1789258463, 3232238104, 0, 1, 4, 0
1789258465, 167772687, 1, 0, 5, 842
타임존을 UTC 기준 유닉스 타임스탬프로 통일하고, 결측 바이트를 0으로 대체하고, HTTP 메서드를 원-핫 인코딩하고, 상태 코드를 백의 자리 기준 범주로 축약한 결과다.
이 시점에서 데이터는 수치 행렬이 되어 학습 알고리즘에 투입 가능한 상태가 된다.
4. 특징추출(Feature Extraction) — 판별력 있는 변수의 생성
1️⃣ 역할
전처리를 거친 데이터의 모든 항목이 판정에 기여하는 것은 아니다. 판별에 무관한 항목이 다수 포함되면 학습 시간이 증가하고 과적합 위험이 커진다. 특징추출은 원본 항목을 변환·조합해 판별력이 높은 새로운 변수를 생성하는 과정이다.
2️⃣ 특징 선택과 특징 추출의 구분
두 용어는 혼용되는 경우가 많으나 대상이 다르다.
| 구분 | 특징 선택(Feature Selection) | 특징 추출(Feature Extraction) |
| 처리 방식 | 기존 항목 중 일부를 선택 | 기존 항목을 변환·결합해 새 변수 생성 |
| 결과 변수 | 원본 항목의 부분집합 | 원본에 없던 파생 변수 |
| 해석 가능성 | 원본 의미 유지 | 변환 후 의미 해석이 어려운 경우 있음 |
| 대표 기법 | 카이제곱 검정, 상호정보량 기반 선택 | PCA, 오토인코더, 도메인 기반 파생 변수 생성 |
보안 로그 분석에서는 개별 패킷 필드를 그대로 쓰기보다, 시간 윈도우 단위로 집계한 파생 변수가 판별력을 갖는 경우가 많다.
3️⃣ 네트워크 침입 탐지 특징 설계 예시
| 특징명 | 산출 방식 | 탐지 대상 |
| ssh_fail_per_min | 인증 로그의 실패 이벤트 수를 60초 윈도우로 집계 | SSH 브루트포스 |
| distinct_dport_per_src | 동일 출발지 IP가 접근한 목적지 포트의 고유 개수 | 포트 스캔 |
| payload_len_max | 세션 내 TCP 페이로드 최대 길이 | 버퍼 오버플로 시도, 대용량 익스플로잇 |
| byte_ratio_out_in | 송신 바이트 수 / 수신 바이트 수 | 데이터 유출 |
| conn_interval_stddev | 동일 목적지로의 연결 간격 표준편차 | C2 비콘(주기적 통신) |
| status_4xx_ratio | 4xx 응답 수 / 전체 요청 수 | 디렉터리 탐색, 취약점 스캐닝 |
원시 로그의 수십 개 필드 대신 위와 같은 6개 변수를 사용하면, 입력 차원이 축소되면서도 공격 유형별 특성은 유지된다.
이 6개 값을 나열한 벡터가 결정함수의 입력 x가 된다.
4️⃣ 밑작업의 전체 순서
- 원시 데이터 수집 → 학습 데이터 집합 구성
- 결측·이상·형식 문제 해소 및 수치화 → 전처리
- 판별력 있는 파생 변수 산출 → 특징추출
- 특징 벡터와 레이블로 파라미터 탐색 → 학습 및 결정함수 생성
결정함수의 성능 상한은 대부분 3단계에서 결정된다. 동일한 알고리즘이라도 특징 설계에 따라 탐지율 차이가 크게 발생한다.
5. 추론 시점의 처리 순서
학습이 완료된 모델을 탐지 시스템에 배치한 경우, 로그 이벤트 하나가 판정까지 도달하는 흐름은 다음과 같다.

1️⃣ 학습 파이프라인과 추론 파이프라인의 일치 조건
추론 단계의 전처리·특징추출은 학습 단계에서 사용한 것과 동일한 로직이어야 한다. 특히 스케일 조정 파라미터를 재계산하면 오류가 발생한다. 표준화를 적용했다면 평균과 표준편차는 학습 데이터에서 산출한 값을 저장해 두고, 추론 시에는 그 저장값을 그대로 적용한다. 추론 입력으로 평균과 표준편차를 다시 계산하면 학습 시점과 다른 좌표계로 변환되며, 결정함수의 판정 기준이 무효가 된다.
2️⃣ 재학습이 필요한 시점
추론 단계에서 파라미터는 고정되지만, 입력 데이터의 분포는 시간이 지나며 변한다. 서비스 구성 변경이나 신규 공격 기법 등장으로 특징 값의 분포가 학습 시점과 달라지면 탐지 성능이 저하된다. 이 경우 새로운 데이터로 학습 단계를 다시 수행해 결정함수를 갱신한다. 학습과 추론은 일회성 순서가 아니라 순환 구조로 운영된다.
6. 정리
- 결정함수는 입력 특징 벡터를 출력 판정값에 대응시키는 규칙이며, 그 실체는 학습으로 확정된 파라미터 집합이다.
- 학습 단계의 산출물은 판정 결과가 아니라 결정함수 자체이고, 추론 단계는 고정된 결정함수를 적용하는 과정이다.
- 전처리는 데이터를 학습 알고리즘이 요구하는 수치 규격으로 맞추는 공정이다.
- 특징추출은 판별력 있는 파생 변수를 설계하는 공정이며, 모델 성능의 상한을 결정한다.
- 추론 시점의 전처리·특징추출 로직과 스케일 파라미터는 학습 시점과 동일하게 유지해야 한다.
'Journey to CS > 머신러닝' 카테고리의 다른 글
| 원-핫 인코딩과 레이블 인코딩: 범주형 데이터 변환 기준과 실습 (0) | 2026.09.12 |
|---|---|
| [ML 스터디 4주차] 고유값과 고유 벡터 - 특성방정식과 정규화 (0) | 2026.08.14 |
| [ML 스터디 4주차] 행렬식(Determinant)의 기하학적 의미 (0) | 2026.08.14 |
| [ML 스터디 4주차] p값과 통계적 유의성의 논리 구조 - 우연인가 진짠가? (0) | 2026.08.10 |
| [ML 스터디 4주차] 중심 극한 정리와 신뢰 구간 - 표본으로 모집단을 추론 (0) | 2026.08.09 |