목록전체 글 (32)
bonggyulim 님의 블로그
전처리를 하다 보면 결측치 처리, 인코딩, 스케일링만으로 끝나지 않는 경우도 많다.데이터 형태와 문제 유형에 따라 차원축소, 벡터화, 클래스 불균형 처리까지 함께 고려할 수 있다.다만 이 기법들은 모든 문제에 무조건 사용하는 것이 아니라,데이터 특성과 모델 목적에 맞게 선택적으로 적용해야 한다.1. PCA차원축소는 feature 수가 많을 때 정보를 최대한 유지하면서 차원을 줄이는 방법이다.컬럼이 너무 많으면 학습 속도가 느려지고, 불필요한 노이즈가 많아질 수 있다.이럴 때 대표적으로 PCA(Principal Component Analysis) 를 사용할 수 있다.from sklearn.decomposition import PCApca = PCA(n_components=2)X_train_pca = pca..
RNN 이란RNN(Recurrent Neural Network)은 순서가 있는 데이터(Sequential Data) 를 처리하기 위해 만든 신경망이다.일반적인 신경망은 입력 하나하나를 서로 독립적으로 처리하지만, RNN은 이전 입력의 정보까지 함께 반영할 수 있다.그래서 RNN은 다음과 같은 문제에 자주 사용된다.문장 데이터 처리음성 인식번역주가 예측센서 시계열 분석행동 인식하지만 RNN은 시퀀스가 길어질수록 오래된 정보를 잘 기억하지 못하는 한계가 있다.이 한계를 보완한 구조가 LSTM(Long Short-Term Memory) 이다.LSTM은 RNN처럼 순차 데이터를 처리하면서도,중요한 정보는 오래 기억하고 불필요한 정보는 버릴 수 있도록 설계된 모델이다. 입력 시퀀스 → 이전 정보와 현재 입력 반영..
CNN이란CNN(Convolutional Neural Network)은 이미지처럼 가로·세로 형태를 가진 데이터를 처리하는 데 강한 딥러닝 모델이다.일반적인 신경망은 이미지를 1차원으로 펼쳐서 처리하지만, CNN은 이미지의 공간적 특징을 유지한 채 학습한다.그래서 CNN은 다음과 같은 문제에서 많이 사용된다.손글씨 숫자 분류얼굴 이미지 분류동물/사물 이미지 분류의료 영상 분석 입력 이미지 → Convolution → ReLU → Pooling → 특징 추출 반복 → Flatten → Dense Layer → 출력 CNN의 동작 과정 1. Convolution필터(커널)를 이미지 위로 이동시키며 특징(선, 모서리, 곡선)을 추출한다.2. ReLU음수 값을 0으로 바꾸는 활성화 함수다.비선형성을 추가해 더 ..
딥러닝을 처음 공부할 때 가장 헷갈리는 부분은 “모델이 도대체 어떤 계산을 하고, 어떻게 학습되는가”이다.코드를 따라 치는 것은 가능해도, 입력값이 어떻게 예측값으로 바뀌고, 왜 가중치가 수정되는지, 활성화함수와 옵티마이저는 각각 언제 쓰이는지가 연결되지 않으면 전체 구조를 이해하기 어렵다.이번 글에서는 딥러닝의 가장 기본이 되는 퍼셉트론, 다층 퍼셉트론(MLP), 행렬곱, 활성화함수, 순전파와 역전파, 옵티마이저까지 하나의 흐름으로 정리해보겠다.마지막에는 정확도(ACC)를 높이기 위해 어떤 점을 고민해야 하는지도 함께 정리한다.1. 딥러닝이란 무엇인가딥러닝은 입력 데이터 x 를 받아 정답 y 에 가깝게 예측하도록, 모델 내부의 가중치(weight) 와 편향(bias) 를 반복적으로 조정하는 학습 방법이..
병렬처리를 할 때 가장 먼저 해야 할 일은 작업이 CPU 바운드인지, I/O 바운드인지 구분하는 것이다.느린 원인이 계산인지 대기인지에 따라 적합한 병렬처리 방식이 달라지기 때문이다.1. CPU 바운드란?CPU 바운드는 계산량이 많아서 CPU가 오래 일하는 작업이다.예를 들면:이미지 처리영상 프레임 분석수치 계산머신러닝 전처리압축, 암호화대규모 반복 연산2. I/O 바운드란?I/O 바운드는 외부 자원 응답을 기다리느라 느린 작업이다.예를 들면:파일 읽기/쓰기API 호출웹 크롤링DB 조회소켓 통신업로드/다운로드3. CPU 바운드는 어떻게 병렬처리 방법CPU 바운드는 계산을 여러 CPU 코어나 프로세스에 나눠서 처리해야 한다.그래서 보통 멀티프로세스를 사용한다.왜 멀티프로세스인가?계산이 많은 작업은 CPU를..
전처리가 끝났다면 이제 본격적으로 머신러닝 모델을 학습시키고 성능을 평가할 수 있다. 실제 머신러닝 프로젝트에서는 모델 하나만 사용하는 것이 아니라, 여러 모델을 비교해보고 데이터에 더 잘 맞는 모델을 선택하는 과정이 중요하다. 이번 글에서는 대표적인 회귀 모델과 분류 모델의 기본 사용법을 정리한다. 회귀 예제: tips 데이터셋분류 예제: iris 데이터셋1. 회귀 모델 학습 파트회귀는 연속적인 숫자 값을 예측하는 문제이다.예를 들어 집값, 매출, 온도, 점수처럼 숫자로 표현되는 값을 예측할 때 회귀 모델을 사용한다.이번 예제에서는 tips 데이터셋을 사용해서 **팁 금액(tip)**을 예측해본다.1.0. 데이터 준비tips = sns.load_dataset("tips").copy()# 결측치 / 중복..
머신러닝에서 모델을 바꾸는 것만큼 중요한 것이 데이터 전처리다.실제로 데이터를 다뤄보면 모델을 바로 학습하는 시간보다, 먼저 데이터를 확인하고 정리하고 가공하는 시간이 더 길다.복잡한 수식 설명보다 실제로 어떻게 전처리를 하는지에 집중해서 정리했다.예시는 seaborn의 tips 데이터셋을 사용했다. 1. 실습 준비import numpy as npimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import LabelEncoder, StandardScaler, MinMaxScaler2. 데..
프로그램을 만들다 보면 비슷한 구조의 문제를 반복해서 만나게 된다.객체를 어떻게 생성할지, 기능을 어떻게 유연하게 바꿀지, 객체들 사이의 의존성을 어떻게 줄일지 같은 문제들이다.이런 반복되는 설계 문제에 대해 많이 사용되는 해법을 정리한 것이 디자인패턴(Design Pattern) 이다.디자인패턴은 정답 코드가 아니라, 유지보수하기 좋은 구조를 만들기 위한 설계 방법이라고 볼 수 있다.디자인패턴에는 어떤 것들이 있을까?디자인패턴은 생성패턴, 구조패턴, 행위패턴 3가지 종류로 나눠서 본다. 이번 글에서는 Python 예시로 아래 중요 패턴 5가지를 정리해보겠다. Singleton: 객체를 하나만 생성해서 공유 Factory Method: 객체 생성 책임을 분리 Strategy: 알고리즘/정책을 교체 가능..
이번 프로젝트는 RareBridge라는 이름으로 진행한 프로젝트로 사용자가 입력한 증상을 바탕으로 질환 정보를 탐색하는 서비스였다. 사용자는 증상을 텍스트나 이미지 형태로 입력할 수 있고, 시스템은 이를 HPO(Human Phenotype Ontology) 코드로 변환한 뒤 희귀질환 데이터를 검색한다. 이후 질환별 매칭 점수를 계산해 상위 5개 질환 후보와 질환명, ORPHA 코드, 설명, 일치도 등의 정보를 제공하는 것이 핵심 흐름이었다.RareBridge 핵심 기능사용자가 증상을 텍스트나 이미지 형태로 입력입력된 증상을 HPO(Human Phenotype Ontology) 코드로 변환변환된 HPO를 기반으로 희귀질환 데이터를 검색질환별 매칭 점수(스코어링) 를 계산상위 5개 질환 후보와 질환명, OR..
1. 출력과 변수변수 선언a = 10name = "Python"is_ok = True파이썬은 자료형을 미리 선언하지 않아도 된다.출력print(a)print(name)print(a, name)f-string문자열 안에 변수를 넣을 때 자주 쓴다.name = "봉규"age = 27print(f"이름은 {name}이고, 나이는 {age}살입니다.")2. 기본 자료형2-1. 숫자형a = 10 # intb = 3.14 # float사칙연산:print(10 + 3) # 13print(10 - 3) # 7print(10 * 3) # 30print(10 / 3) # 3.333...print(10 // 3) # 3 -> 몫print(10 % 3) # 1 -> 나머지print(1..