전체 글 73

통계 심화 (1) 베이즈 정리 - 검사가 양성이면 진짜 환자일까

"정확도 99% 검사에서 양성이 나왔다"면 내가 환자일 확률은 99%일까? 답은 "아니오"에 가깝다. 이 직관의 함정을 푸는 도구가 베이즈 정리다. 이번 글은 베이즈 정리를 예시로 정리한다. 1. 조건부확률부터 : 조건부확률 P(A|B) - "B가 일어났다는 조건에서 A가 일어날 확률" : 예로 P(환자|양성)은 "검사가 양성일 때 실제 환자일 확률"임 : 우리가 알고 싶은 건 보통 이 방향인데, 검사 성능으로 주어지는 건 반대 방향(P(양성|환자))임 : 이 두 방향을 이어 주는 게 베이즈 정리임 2. 베이즈 정리 : P(A|B) = P(B|A) x P(A) / P(B) : P(A) - 사전확률, B를 보기 전에 알던 A의 확률 (예: 전체 유병률) : P(B|A) - 우도, A일 때 B가 ..

AI/Basic 10:35:37

SQL 문제풀이 (4) 윈도우 함수 문제풀이 - 순위, 증감, 누적합

예전 "데이터 분석 (3) SQL 윈도우 함수" 글에서 개념(OVER, PARTITION BY, ORDER BY)은 정리했지만 문제는 안 풀어 봤다. 이번엔 그 기본을 문제로 직접 풀어 본다. 프레임(ROWS BETWEEN)으로 이동평균까지 가는 심화는 다음 글에서 이어 간다. 1. 복습 - OVER 절 ("데이터 분석 (3)"에서 다룬 내용) : 윈도우 함수는 집계 함수 뒤에 OVER 절을 붙여, 행을 그대로 두고 옆에 값을 붙이는 방식임 : PARTITION BY - 그룹을 나눔 (GROUP BY와 비슷하나 행은 유지) : ORDER BY - 그룹 안에서 순서를 정함 (순위, 누적 계산의 기준) : 즉 GROUP BY처럼 행이 줄지 않고, 원래 행 옆에 순위나 누적값이 붙는 게 핵심임 2. ..

ReAct (추론과 행동을 엮은 에이전트)

논문: Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models" (2023), ICLR 링크: https://arxiv.org/abs/2210.03629 앞서 추론 모델과 MCP를 보며 "모델이 생각하고 도구를 쓴다"는 이야기를 했다. 오늘은 그 뼈대가 된 "ReAct"를 읽어 보았다. 생각(reasoning)과 행동(acting)을 번갈아 엮어, 지금 에이전트들이 돌아가는 방식의 바탕이 된 논문이다. 1. Abstract 한 줄 요약 : 기존엔 모델이 머릿속으로만 추론하거나(생각), 도구만 기계적으로 부르거나(행동) 둘 중 하나였음 : ReAct는 생각과 행동을 한 흐름에서 번갈아 하게 함 - 생각으로 계획하고, 행동으로 정..

Paper/LLM 2026.10.12

캐글 미니 프로젝트 (3) 와인 품종 분류 - 랜덤포레스트와 교차검증

그동안 다룬 랜덤포레스트와 교차검증을 실제 데이터에 한 번에 적용해 본다. 와인의 화학 성분으로 품종을 맞히는 분류 문제이다. 코드를 실제로 돌려 나온 수치, 그래프로 정리한다. 1. 데이터 불러오기 sklearn 내장 와인 데이터를 씀. 와인 178병의 화학 성분(13개)과 품종(3종) 정보임. from sklearn.datasets import load_wined = load_wine(as_frame=True)df = d.frameX, y = df[d.feature_names], df["target"]print(len(df), y.value_counts().to_dict())# 178 {1: 71, 0: 59, 2: 48} : 178병, 품종은 0/1/2 세 종류 (각각 59, 71, 48병) :..

카테고리 없음 2026.10.12

머신러닝 기초 (4) 교차검증

지난 글에서 과적합은 테스트 성능으로 알아챈다고 했다. 그런데 "한 번 나눈 테스트"는 운에 휘둘릴 수 있다. 이번 글은 그 운을 줄이는 교차검증을 정리한다. 1. 한 번만 나누는 것의 한계 : 보통 데이터를 훈련/테스트로 한 번 나눠 성능을 잼 : 그런데 어쩌다 테스트에 쉬운 데이터만 몰리면 성능이 실제보다 높게, 어려운 게 몰리면 낮게 나옴 : 즉 "어떻게 나뉘었나"라는 우연에 점수가 흔들림 : 데이터가 적을수록 이 흔들림이 더 커짐 2. 교차검증의 아이디어 : 한 번이 아니라 여러 번 나눠서, 번갈아 검증하고 평균을 내자는 것임 : 모든 데이터가 한 번씩은 검증에 쓰이도록 돌려 가며 평가함 : 그러면 특정 분할의 운에 덜 휘둘리고, 더 안정적인 성능 추정을 얻음 3. k-겹 교차검증 (k..

AI/Basic 2026.10.08

SQL 문제풀이 (3) 서브쿼리와 CTE(WITH)

쿼리 안에 또 쿼리를 넣는 게 서브쿼리다. 복잡해지면 읽기 힘들어지는데, 이를 깔끔하게 정리해 주는 게 CTE(WITH)다. 이번 글은 둘을 정리하고 문제 세 개를 풀어 본다. 1. 서브쿼리 개념 정리 : 서브쿼리 - 다른 쿼리 안에 괄호로 감싸 들어가는 쿼리임 : 놓이는 자리에 따라 역할이 다름 - SELECT 자리(스칼라), FROM 자리(파생 테이블), WHERE 자리(조건) : 보통 "먼저 계산해야 할 값"을 안쪽에서 구해, 바깥 쿼리가 그 결과를 씀 : 중첩이 깊어지면 읽기 어려워지는 게 단점임 2. CTE(WITH) 개념 정리 : CTE(common table expression) - WITH로 쿼리에 "이름"을 붙여 먼저 정의해 두는 방식임 : WITH 이름 AS (쿼리) 로 정의..

Chinchilla

논문: Hoffmann et al., "Training Compute-Optimal Large Language Models" (2022)링크: https://arxiv.org/abs/2203.15556 한동안 LLM 경쟁은 "누가 더 큰 모델을 만드나"였다. 그런데 오늘 읽은 "Chinchilla"는 그 흐름에 제동을 건 논문이다. 같은 연산 자원이면, 모델을 더 키우는 것보다 데이터를 더 먹이는 게 낫다는 걸 보였다. 1. Abstract 한 줄 요약 : 당시 대형 모델들(GPT-3 등)은 파라미터만 키우고, 학습 데이터는 상대적으로 적게 썼음: 이 논문은 "주어진 연산 예산에서 성능을 최대로 하려면 모델 크기와 데이터 양을 어떻게 나눌지"를 체계적으로 실험함: 결론 - 둘을 같은 비율로 키워야 함...

Paper/LLM 2026.10.07

데이터 심화 - 피처 엔지니어링 (수치, 범주, 날짜 다루기와 데이터 누수)

"좋은 모델보다 좋은 피처가 성능을 더 좌우한다"는 말이 있다. 같은 데이터라도 어떻게 가공해 넣느냐에 따라 결과가 꽤 달라진다. 이번 글은 피처 엔지니어링의 자주 쓰는 기법과, 꼭 피해야 할 데이터 누수를 정리한다. 1. 피처 엔지니어링이란 : 피처 - 모델에 넣는 입력 변수(열)임: 피처 엔지니어링 - 원본 데이터를 모델이 잘 학습하도록 가공, 변형, 새로 만드는 작업임: 모델을 바꾸기 전에, 피처를 다듬는 것만으로 성능이 오르는 경우가 많음: 핵심은 "도메인을 아는 사람이 의미 있는 신호를 피처로 꺼내 주는 것"임ㅡ 2. 수치형 다루기 : 스케일링 - 값의 범위를 맞춤. 표준화(평균0, 분산1)나 정규화(0~1). 거리, 경사하강 기반 모델에서 중요: 로그 변환 - 한쪽으로 치우친(왜곡된) 분포..

머신러닝 기초 (3) 과적합과 정규화

모델을 복잡하게 만들수록 훈련 데이터는 더 잘 맞힌다. 그런데 정작 새 데이터에서는 오히려 성능이 떨어지곤 한다. 이번 글은 그 함정인 과적합과, 이를 누르는 정규화를 정리한다. 1. 과소적합과 과적합 : 과소적합(underfitting) - 모델이 너무 단순해 데이터의 규칙조차 제대로 못 잡음. 훈련도 테스트도 둘 다 성능이 낮음 : 적정(good fit) - 큰 규칙을 잡으면서 잡음은 무시함. 새 데이터에서도 잘 맞음 : 과적합(overfitting) - 모델이 너무 복잡해 훈련 데이터의 잡음까지 외움. 훈련은 거의 완벽한데 새 데이터에선 크게 틀림 2. 과적합은 왜 생기나 : 변수나 모델 복잡도가 데이터 양에 비해 너무 크면 생김 : 모델이 "규칙"이 아니라 "이 훈련 데이터만의 우연"까지..

AI/Basic 2026.10.06

캐글 미니 프로젝트 (2) 집값 예측 - 선형회귀로 캘리포니아 집값 맞히기

지난 타이타닉은 생존/사망을 맞히는 분류였음. 이번엔 숫자(집값)를 맞히는 회귀를 해 봄. 캘리포니아 집값 데이터로, 소득 같은 지역 특성이 집값과 어떻게 이어지는지 보고 선형회귀로 예측까지. 1. 데이터 불러오기 sklearn 내장 캘리포니아 집값 데이터를 씀. 캘리포니아의 20,640개 지역 블록 데이터임. from sklearn.datasets import fetch_california_housingd = fetch_california_housing(as_frame=True)df = d.frameprint(len(df)) # 20640print(df["MedHouseVal"].mean()) # 2.069 : 타깃(집값)은 지역 집값 중앙값이고 단위는 1..