데이터 분석 33

심화기계학습: 차원축소

차원축소 분류: 변수선택과, 변수추출[선형, 비선형 기법)변수선택 기법Hughes Phenomenon: 훈련 데이터 수에 비해 차원이 증가할 수록 모델 성능이 점차 감소(데이터 밀도감소) 대표적인 차원 축소기법더보기PCA목적: 데이터 차원 축소와 최대한의 분산 보존.주성분: 공분산 행렬에서 가장 큰 고유값을 갖는 고유벡터의 방향으로 정의(이 벡터들은 서로 직교하며 데이터들의 선형결합으로 표현)왜 직교하는가?중복 정보를 제거하고, 각 저성분이 독립적으로 데이터를 설명하기 위해적용: 1) 데이터 행렬의 평균을 0으로 정규화 2) 공분산 행렬 계산 및 고유값, 고유벡터 계산 3) 고유값을 크기 순으로 정렬하여 상위 k개의 고유벡터 선택 4) X를 새로운 k 차원 공간으로 투영: Z=XW 더보기Multidime..

딥러닝 유틸(1) Tmux

1. Tmux란? 터미널 멀티플렉서로, 하나의 터미널 세션에서 여러 개의 창을 관리하고, 세션을 분리하거나 재접속하는 등 유용한 기능을 제공하는 tool을 의미한다-> 즉, 우리가 모델을 돌릴 때 사용하고 있는 컴퓨터에서 여러 작업 터미널 창을 만들어 주며, tmux에 넣은 작업은 실제 작업 종료 전 까진 중단되지 않는다(작동중인 컴퓨터 종료해도 무관) 2. Tmux 구성요소: 세션(여러 터미널 창을 그룹화), 윈도우(작업 공간), Pane(독립적인 터미널 창) 3. Tmux 설치conda install -c conda-forge tmux # conda# 우분투 기반 도커 컨테이너apt-get updateapt-get install -y tmux# macOSbrew install tmux 4. 명령어# ..

자주 쓰이는 딥러닝(1): 최대우도추정, 크로스엔트로피 로스

최대우도추정: 주어진 데이터셋을 기반으로 확률 모델(로그 우도함수 최대화 하는 파라미터) 추정*우도란? 주어진 파라미터하에서 데이터 X가 관측될 확률엔트로피: 불확성의 척도로, 정보량의 기대값KL-divergence: 확률분포 간 정보량의 차이로, P분포를 추정하는데 Q분포가 얼마나 적합한 지 측정크로스 엔트로피(KL + entropy P)1) 두 확률 분포 p와 q사이의 차이를 측정하는 방법2) 모델이 예측하는 확률 분포 q와 실제 데이터의 분포 p가 얼마나 유사한지 측정크로스 엔트로피 손실함수이진 분류 손실함수다중 클래스 분류

MLOps(1): 파이프라인

1. MLOps 엔지니어링: ML 시스템의 개발과 배포, 운영을 체계화하고 자동화하는 방법론 -1)모델 품질관리 2)데이터 관리 3)비용 최적화 4)모델 모니터링 -Keyword: 모듈화, 자동화, 모니터링2. 파이프라인※모델 학습 실험 파이프라인서비스 파이프라인목적새로운 모델 아키텍처 및 가설 검증기존 모델 형상에 새로운 코드 학습코드아키텍처짧은 주기긴 업데이트 주기결과물모델 평가 리포트서비스에 배포할 모델 가중치, 아티팩트영향도실 서비스에 영향 없음실 서비스에 영향 높음 1)데이터 취득 2)데이터 검증(EDA) 3)데이터 변환(전처리) 4)모델 학습 5)모델 검증 6)모델 최적화 7)모델 등록※모델 배포 및 서빙1)모델 로드 2)서빙 서버 로드 3)테스트 4)서비스 패키징 5)서비스 배포 6)모델 서..

Dask(1): Dask 다루기

1. 대규모 계산을 위한 병렬 처리, 지연 실행 및 대규모 데이터셋 처리 목적 -동적 작업 스케줄링, 대규모 배열, 데이터프레임, 머신러닝, 병렬처리 등 지원-유연한 스케줄링: 개인 노트북부터 대용량 서버까지 범용적, 분산 스케줄러 -> 수백대 머신의 클러스터 확장-복잡한 알고리즘 -> 작업 그래프(task graphs)로 병렬 연산 표현  -유사한 용법pandas dfdask.dataframenumpy arraydask.arraypython iterators, PySparkdask.bagfor문dask import delayed

밑바닥부터 시작하는 딥러닝(2): RNN

1. 자연어처리 분야에서 주로 사용하는 알고리즘(I, H, O) 입력, 히든스테이트, 출력 시계열, 연속적인 데이터에 주로 사용-Many to one(Text classification), Many to Many(Poos tagging), One to Many(NLG)-과거 정보의 이용 여부를 두고, 양방향 RNN으로도 사용-연속된 시퀀스의 반복 시 장기 기억 손실 문제로 향후 LSTM, GRU 알고리즘 탄생 배경이 됨-모델의 과도한 복잡성 증가(fc layers, relu 등) 시 과적합으로 예측력이 떨어질 수 있음Ex1) Many to Oneclass SimpleRNN(nn.Module): def __init__(self, input_size, hidden_size, output_size): ..

밑바닥부터 시작하는 딥러닝(1): CNN

1. 영상처리 분야에서 주로 사용(N, C, H, W 형태) 배치수, 채널, 높이, 너비매우 빠르고 적은 가중치 파라미터를 보유, 데이터셋의 구성에 따라 자동으로 탐지해야 할 패턴을 추출-고차원 공간의 정보를 저차원에 매핑-맥스풀링과 패딩, 스트라이드 방식을 활용 -> 핵심 피쳐, 정보 손실을 막기 위해Ex1) CNNimport torchimport torch.nn as nnimport torchvisionimport torchvision.transforms as transformsimport torch.optim as optim# 기기 설정 (CPU 또는 GPU)device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')# 데이터 로딩 및..

Fastapi: 프로젝트로 바로 적용하는 학습(1)

개요: 특정 스타트업의 아이템 추천시스템 구축 로직: streamlit 고객 입력(프론트) -> fastapi(백엔드, db쿼리 전달) -> db ->fastapi 모델서빙 -> 스트림릿 FastApi mysql 연결 (local) #sqlalchemy을 통해 파이썬으로 연동 가능 1) 엔진 생성 - 세션생성 - Base 모델 선언(입력 데이터를 json형식, mysql 타입으로 가공하기 위한) - 엔드포인트 설정 나의 경우, 데이터가 이미 쌓여있을 것이라 가정하고, mysql에 user_input 테이블을 미리 만들어두었다. from fastapi import FastAPI from pydantic import BaseModel from sqlalchemy import create_engine, Col..

FastAPI 기본: 설치/매개변수 설명

필요한 패키지와 기본 메소드 더보기 1. pip install fastapi #streamlit과 호환 문제, 따로 가상 환경 구축하여 패키지 관리 필요 2. pip install httpie HTTP 메소드 post, get, put, delete: CRUD와 같은 기능, 생성/ 읽기/ 업데이트/ 삭제 #@app.get 매개변수 더보기 경로 매개변수(URL 경로에 들어가는 변수): #fastapi는 위에서 아래로 작동하니 순서 주의 from fastapi import FastAPI app = FastAPI() @app.get("/users/{user_id}") def get_user(user_id: int): return {"user_id": user_id} # 쿼리 매개변수: https://examp..