전체 글 65

머신러닝 기초 (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..

LoRA (적은 파라미터로 거대 모델 파인튜닝하기)

논문: Hu et al., "LoRA: Low-Rank Adaptation of Large Language Models" (2021)링크: https://arxiv.org/abs/2106.09685 모델이 수백억 파라미터로 커지면서, 하나를 통째로 파인튜닝하는 건 너무 비싸졌다. 오늘은 그 비용을 확 줄인 "LoRA"를 읽어 보았다. 지금 오픈소스 모델을 각자 입맛에 맞게 튜닝할 때 거의 기본으로 쓰이는 방법이다. 1. Abstract 한 줄 요약 : 큰 모델을 전부 파인튜닝하면, 모델 하나 크기만큼의 가중치를 새로 저장해야 함 - 비용이 큼: LoRA는 원래 가중치를 얼리고(freeze), 각 층에 작은 "저차원 행렬"만 끼워 넣어 그것만 학습함: 그 결과 GPT-3 기준 학습 파라미터를 약 1만분의..

Paper/LLM 2026.10.03

SQL 문제풀이 (2) GROUP BY와 HAVING - 집계, 그룹별 조건

"카테고리별 매출 합계", "고객별 주문 횟수"처럼 그룹마다 숫자를 내는 일은 분석에서 늘 나온다. 이때 쓰는 게 GROUP BY와 집계 함수. 이번 글은 GROUP BY의 구조와 HAVING을 정리하고, 문제 세 개를 직접 풀어 본다. 1. GROUP BY 개념 정리 : GROUP BY - 지정한 열의 값이 같은 행끼리 묶어, 그룹마다 한 줄로 집계함: 집계 함수 - 묶인 그룹에 적용함 (COUNT 개수, SUM 합, AVG 평균, MAX/MIN 최대/최소): SELECT에는 "그룹 기준 열"과 "집계 함수"만 올 수 있음 - 그 외 열을 그냥 넣으면 안 됨: 그룹 기준이 여러 개면 열을 쉼표로 나열함 (조합마다 한 그룹) 2. WHERE와 HAVING의 차이 조건을 거는 자리가 두 군데라 헷갈리기..

머신러닝 기초 (2) 결정트리와 랜덤포레스트

지난 글에서 지도학습의 큰 갈래를 봤다. 이번엔 가장 직관적인 지도학습 모델인 결정트리와, 그걸 여러 개 묶어 성능을 끌어올린 랜덤포레스트를 정리한다. 1. 결정트리 - 질문을 이어 가며 나눈다 : 데이터를 "예/아니오" 질문으로 계속 쪼개 가며 답을 내는 모델임 : 예를 들어 타이타닉이면 "여성인가?" → "3등급인가?" → "나이가 10세 미만인가?" 식으로 가지를 침 : 각 질문(분기)에서 데이터가 가장 깔끔하게 둘로 나뉘는 기준을 고름 : 맨 아래 잎(leaf)에 도달하면 그 그룹의 다수 쪽으로 예측함 2. 무엇을 기준으로 나누나 : "깔끔하게 나뉜다"를 수치로 재는 기준이 필요함 - 불순도(impurity) : 지니 불순도, 엔트로피 같은 값으로, 한 그룹에 한 종류만 모일수록 낮아짐..

AI/Basic 2026.10.02

데이터 심화 - 분류 평가지표 (정밀도, 재현율, F1, ROC)

지난 타이타닉 글에서 "정확도 80.4%"라고 했지만, 분류를 제대로 보려면 정확도 하나로는 부족하다. 이번 글은 혼동행렬에서 출발해 정밀도, 재현율, F1, ROC까지 정리한다. 1. 왜 정확도만으로는 부족한가 : 정확도 - 전체 중 맞힌 비율. 직관적이지만 함정이 있음 : 암 환자 1%를 찾는 문제에서 "모두 정상"이라 찍으면 정확도 99%가 나옴 - 정작 환자는 한 명도 못 찾았는데도 : 이렇게 한쪽이 드문(불균형) 문제에서는 정확도가 성능을 과대평가함 : 그래서 "무엇을 맞히고 무엇을 틀렸는지" 쪼개서 봐야 함 2. 혼동행렬 - 모든 지표의 출발점 예측과 실제를 2x2로 나눠 보는 표임. 양성(찾으려는 것)을 기준으로 네 칸으로 나뉨.: TP(진짜양성,TruePositive) - 양성을..

캐글 미니 프로젝트 (1) 타이타닉 생존 예측 - EDA부터 로지스틱 회귀까지

캐글 입문 대표 문제인 타이타닉으로 작은 프로젝트를 돌려 본다. 데이터를 뜯어 보고(EDA), 간단한 로지스틱 회귀로 생존을 예측해 본다. 코드를 실제로 돌려 나온 수치, 그래프로 정리한다. 1. 데이터 불러오기 seaborn 내장 타이타닉 데이터를 씀. 캐글 train.csv와 같은 891명 데이터임. import seaborn as snsdf = sns.load_dataset("titanic")print(len(df), df["survived"].mean()) # 891, 0.384: 전체 891명 중 생존율은 약 38.4%였음 : 즉 그냥 "다 죽었다"고 찍어도 61.6%는 맞음 - 이게 기준선(baseline)임 2. 데이터 컬럼 이해 분석을 시작하기 전에, 각 컬럼이 무슨 뜻인지부..

InstructGPT (사람 피드백으로 LLM을 정렬하기)

논문: Ouyang et al., "Training language models to follow instructions with human feedback" (2022) 링크: https://arxiv.org/abs/2203.02155 지난 리뷰의 GPT-3는 크고 유창했지만, 사용자의 지시를 고분고분 따르는 것과는 조금 달랐다. 오늘은 그 간극을 사람 피드백으로 메운 "InstructGPT"를 읽어 보았다. 지금 챗봇들이 쓰는 RLHF의 뼈대가 된 논문이다. 1. Abstract 한 줄 요약 : 큰 언어모델이 꼭 사용자가 "원하는" 답을 주지는 않음 - 지시를 무시하거나, 틀린, 해로운 답을 내기도 함 : InstructGPT는 사람 피드백을 이용한 강화학습(RLHF)으로 모델을 사용자 의도에 맞..

Paper/LLM 2026.10.01

머신러닝 기초 (1) 지도학습과 비지도학습

머신러닝을 처음 정리할 때 가장 먼저 잡아야 할 큰 갈래가 지도학습과 비지도학습이다. 이 구분을 알면 어떤 문제에 어떤 방법을 쓸지 감이 잡힌다. 이번 글에서 그 뼈대를 정리한다. 1. 머신러닝이란 : 규칙을 사람이 일일이 짜는 대신, 데이터에서 패턴을 스스로 찾게 하는 방법임 : 찾은 패턴(모델)으로 새 데이터를 예측하거나 구조를 파악함 : 크게 지도학습, 비지도학습, 강화학습으로 나뉨 2. 지도학습 - 정답을 보고 배운다 : 입력(x)과 정답(y)이 짝지어진 데이터로 학습함 - 정답표(label)가 있음 : 모델은 x에서 y를 맞히는 규칙을 배우고, 새 x에 대해 y를 예측함 : 예를 들어 사진과 "고양이/개" 라벨로 학습해, 새 사진의 종류를 맞히는 식 : 정답 유형에 따라 나뉨 - 분류(범..

AI/Basic 2026.09.30

SQL 문제풀이 (1) JOIN - INNER, LEFT, 자기조인

데이터가 여러 표에 나뉘어 있으면 JOIN으로 이어 붙여야 함. 이번 글은 JOIN의 종류를 정리하고, 자주 나오는 문제 세 개를 직접 풀어 본다. 1. JOIN 개념 정리 : JOIN - 공통 열(키)을 기준으로 두 표의 행을 옆으로 이어 붙이는 것 : INNER JOIN - 양쪽에 다 있는 키만 남김 (교집합) : LEFT JOIN - 왼쪽 표는 전부 남기고, 오른쪽에 짝이 없으면 NULL로 채움 : RIGHT JOIN - 반대로 오른쪽 표를 전부 남김 : FULL OUTER JOIN - 양쪽을 모두 남김 (합집합) 2. 예제 테이블 두 표를 놓고 문제를 풀어 봄. : customers(고객) - id, name : orders(주문) - id, customer_id, amount 3. ..