개인 공부 15

[DS] MCMC (Monte Carlo Markov Chain)

# 1. MCMC (Monte Carlo Markov Chain) Monte Carlo : 임의의 확률 분포로부터 무수히 많은 샘플을 추출하는 방법 Monte Carlo Markov Chain : 임의의 확률 분포로부터 무수히 많은 샘플을 추출하되, 이전에 추출된 샘플과 의존적인 (dependent) 샘플을 추출하는 방법 # 1.1. Metropolis-Hasting Metropolis-Hasting (이하 MH)는 사후확률을 정확히 알지 못하기 때문에 사후확률분포로부터 샘플을 추출하는 것이 어려울 경우, 사후확률분포를 추정하는 데 사용할 수 있다. 해당 sampling 방법은 다음과 같은 방법으로 진행된다. 1. 임의의 초기값 "theta_{0}"를 정한다. 2. "theta_{0}"를 중심으로 한 정..

개인 공부/DS 2023.07.17

[DS] 수요 예측

1. 수요 예측 방법 수요를 예측하는 방법은 정성적(Qualitative) 방법과 정량적(Quantitative) 방법, 크게 두 가지로 나눌 수 있다. 정성적 방법 - 해당 분야를 잘 알고 있는 전문가에게 직접 물어보는 것 - (장점) 수치화 불가능한 분야에 대한 전문성을 가지고 있음 - (단점) 주관적이기 때문에 수요에 대해 과대/과소평가하여 예측할 수 있음 정량적 방법 - 수치에 의존한 예측 방법 - (장점) 데이터에 기반하여 예측하기 때문에, 일관성 (Consistency)를 가짐 - (단점) 예측을 하기 위해 많은 데이터를 필요로 함. => 정량적인 방법으로 수요를 예측한 후, 전문가의 예상을 통해 수정하는 방법으로 두 방법 모두의 장점을 채택할 수 있음 2. 시계열 데이터 예측 시계열 데이터 ..

개인 공부/DS 2023.07.16

[Pandas] 결측치 평균으로 대체하기

데이터 분석을 하다보면 데이터가 없는 결측치가 발생하는 경우가 있다. 이를 해결하기 위해 결측치를 제거하거나, 다른 값으로 치환해주어야 한다. 그러나 모든 column에 대해 data['column_name'].fillna(data['column_name'].mean(), inplace = True)를 입력해주는 것은 꽤나 번거로운 작업이라고 생각하여 결측치를 평균으로 쉽게 대체하는 방법을 찾아보았다. import pandas as pd data = {'A': [1, 2, None, 4, 5], 'B': [6, None, 8, None, 10], 'C': [11, 12, 13, None, 15]} df = pd.DataFrame(da..

[FastAPI] Mounting으로 FastAPI 기본 경로 설정하기

1. Mount "Mounting"은 특정 경로에 독립적인 application을 추가하는 것을 의미한다. 2. Example Code from fastapi import FastAPI app = FastAPI() subapi = FastAPI() @subapi.get("/sub") def read_sub(): return {"message": "Hello World from sub API"} app.mount("/subapi", subapi) subapi라는 FastAPI 새로운 인스턴스를 생성한 후, .mount() 메서드를 통해 해당 인스턴스를 app 인스턴스에 mount해줄 수 있다. mount()는 두 개의 parameter를 받는데, 첫 번째 parameter는 해당 api의 경로, 두 번째 ..

[FASTAPI] FastAPI server가 시작될 때 인공지능 모델 load하기

1. LifeSpan Events LifeSpan Event란? application이 시작하기(request를 받기) 전, 혹은 실행되고 나서 한 번 실행되는 코드로, 다음과 같은 효용을 지닌다. 전체 application이 공유하는 자원을 초기에 세팅할 수 있다. (ex. 인공지능 모델 load) application이 실행된 이후, 불필요한 resource를 제거할 수 있다. 인공지능 모델을 load할 때에는 것은 많은 양의 데이터를 디스크로부터 읽어야 하기 때문에 많은 시간이 걸린다. 따라서 request가 발생할 때마다 모델을 load하는 것은 장원의 낭비이며, 이는 FasiAPI app의 lifespan parameter에 콜백함수를 정의해주는 것으로 해결할 수 있다. 2. lifespan 공..

[ML] Attention is All You Need

Attention Is All You Need 논문 출처 글 작성에 앞서 : 본 게시글은 개인 학습을 위한 것이므로 모델의 Architecuture에 관해 중점적으로 다루며, 모델의 학습 방법이나 성능에 대해서는 정리하지 않습니다. Model Architecture Encoder Encoder는 6개의 동일한 Layer의 stack으로 구성된다. 또한, 각 레이어는 (1) multi-head self-attention layer, (2) position-wise fully connected feed-forward layer 두 개의 sub-layer로 구성된다. 두 개의 sub-layer는 layer normalization을 거쳐 residual connection된다. 즉, 각 sublayer의 출력..

개인 공부/ML 2022.12.23

[ML] PET (Pattern Exploiting Training)

참조 : Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference 1. Introduction 기존의 주류(predominant) 모델은 레이블된(labeled) 데이터를 바탕으로 학습하여, 처음 보는 데이터에 대한 일반성을 확보하기 위해 학습하였다. 그러나 많은 수의 레이블된 데이터를 필요로 하기 때문에 시간적 비용적 문제가 발생하였고, 적은 수의 레이블된 데이터로 학습하는 "few-shot learning"의 중요성이 대두되었다. 그러나 적은 수의 예제로는 풀고자 하는 문제가 무엇인지 쉽게 파악하기 어렵다는 문제가 존재한다. 따라서 본 논문에서는 패턴 추출 학습(PET;Pattern Expoiti..

개인 공부/ML 2022.12.23

[DS] 베이시언 결정 이론

본 게시글은 개인 공부 정리용으로 작성되었기 때문에 내용이 부정확할 수 있습니다. 참고자료 : 오일석 패턴인식 (2008) 베이즈정리 (Bayes’ theorem) : 사전확률과 사후확률 사이의 관계를 나타내는 정리로, 사전확률로부터 사후확률을 계산할 때 사용된다. $$ P(A|B) = \frac {P(A)P(B|A)}{P(B)}$$ $$posterior = \frac {prior * likelihood}{evidence} $$ 1. 베이시언 분류기 I. 최소오류 베이시언 분류 (minimum error Bayesian classifier) 특징 벡터 $\textbf{x}$를 $\omega_1, \omega_2$ 두 부류로 구분하는 이진분류문제를 상정하자. 문제 해결을 위한 결정규칙(dicision ru..

개인 공부/DS 2022.12.23

[DS] UnderSampling

0. UnderSampling 언더샘플링(Under Sampling)은 오버샘플링(Over Sampling)과 반대되는 개념으로, 데이터 간 불균형을 해소하기 위한 기법 중 하나이다. 소수 클래스(Minority Class)의 데이터 양을 다수 클래스(Majority Class)에 맞춰 증가시키는 것이 오버 샘플링이라면, 다수 클래스의 데이터 양을 감소시키는 것이 언더샘플링이라고 할 수 있다. 0.1. Sample Dataset import pandas as pd import numpy as np from sklearn.datasets import make_classification import seaborn as sns import matplotlib.pyplot as plt random_seed = ..

개인 공부/DS 2022.12.23

[DS] Over Sampling (RandomOverSampler, SMOTE, ADASYN)

1. 오버 샘플링 오버 샘플링(Over Sampling)은 데이터 간의 불균형을 해결하기 위한 기법 중 하나로, 상대적으로 데이터가 적은 쪽의 데이터를 데이터가 많은 쪽의 데이터양과 맞춰주는 것이다. 2. RandomOverSampler RandomOverSampler는 데이터 분석 라이브러리인 sklearn에서 제공하는 클래스로, 이미 존재하는 데이터를 무작위로 추출하여 새로운 데이터를 생성하는 것이다. 즉, 중복된 데이터를 기존의 데이터에 추가하여 데이터의 절대적인 양을 늘리는 것이다. 2.1 예시 from sklearn.datasets import make_classification import matplotlib.pyplot as plt import numpy as np import pandas ..

개인 공부/DS 2022.12.23