목록분류 전체보기 (52)
내가 보려고 만든 블로그
앞 선 포스팅에서 pyro를 이용해 mcmc를 사용하는 법을 써보았다. mcmc의 경우 샘플링수를 충분히 늘린다면 사후분포를 잘 추정할 수 있겠지만 샘플링수가 늘어나는 만큼 사후분포를 추정하는 시간이 오래 걸릴 것이다. 사후분포를 좀더 빠르게 추정하기 위해서 기존의 모델들이 그랬듯이 최소화할 Loss를 지정하고 이를 줄여서 근사한 해를 구하는 방식을 사용하여 사후분포를 추정할 수 있다. 이 방법이 바로 Vairational Inference = VI = 변분추론 . VI에서는 후선 사후분포를 추정하기 위해 q라는 분포를 가정한다. 사후분포는 일반적으로 구하기에는 너무 복잡하기 때문. (notation은 당연히 다를 수 있는데 보통 q로 표현) 이 q라는 분포를 우리가 구해야하는 사후분포에 최대한 근사하게..
앞써서 베이지안 리그레션을 pyro로 모델링하는 방법에 대하여 포스팅 했다. svi를 이용해서 사후분포를 추론하는 방법을 다루었는데 이번에는 MCMC를 이용해 사후분포를 추정하는 것을 pyro를 이용해 모델링 하는 방법에 대하여 포스팅함. 사실, 매우 간단함. 라이브러리를 사용하는 것은. 예제는 앞써서 사용했던 log_gdp를 두개의 설명변수 ( rugged , cont_africa , rugged* cont_africa)를 통해 모델링 하는 것을 그대로 사용하였다. 1. 데이터를 받아와서 전처리하는 과정 . 특별한 것은 없고 df_rugged , df_cont_africa , df_log_gdp 를 torch의 텐서로 바꿔줌. (pyro가 토치를 기반으로 만들어진 프레임워크라) 2. 모델 정의, 앞서 ..
Faiss는 페이스북에서 공개한 벡터 유사도를 검색해주는 프레임워크이다. 벡터 유사도 검색 외에 빠르게 k-means를 찾아 주는 등 여러 기능이 있다. 내부적으로 C++ 로 구현되어 있어 매우 빠르고 GPU 연산도 지원을 해준다. Latent Dimension = 5 인 임의의 벡터들중에서 가장 유사한 벡터를 찾는 예제 vector_index라는 객체를 만들어주고 sample_vectors 라는 hidden_dimension = 5인 100개의 벡터들을 색인해준다. import faiss latent_dimension = 5 vector_index = faiss.IndexFlatIP(latent_dimension) # latent dimension = 5 vector_index.add(sample_ve..
pydantic은 type annotation 을 바탕으로 데이터를 검증해주고 어긋날 시 올바른 형태로 바꿔주는 역할을 해주는 라이브러리다. 주로 사용처는 fastapi를 통해 웹개발을 할 때 request , response 등을 통해 데이터를 주고 받을 때 데이터들을 검증해줄때 사용한다. 다음 포스팅에 sql_alchemy 이용해서 DB연동하는 내용을 적을라고 했는데 한번에 같이 적는 것 보다는 나눠 적는게 나은 것 같아 적어봄! fastapi에서 사용하는 예시를 가져왔다 (매우 간단하기 하지만) . 유저테이블에 다음과 같이 데이터를 넣어 줄 때 해당 컬럼의 자료형을 체크해주는 것. 이름에 이상한 숫자가 들어온다면 오류를 내뱉거나 자동으로 형변환이 가능하다. def add_user(user: sche..
파이썬은 자료형을 표시 안해도 되는 편리한 언어이다. 하지만 소스코드들을 살펴보면 자료형, 혹은 처음 보는 것들이 많이 있어 당황스러울 때가 있는데 파이썬에서 따로 모듈을 불러올 필요없이 int, str 등은 자료형을 표현할 수있지만 다른 자료구조 list ,set 등등을 표기하기 위해선 typing 이라는 모듈이 필요하다. LIST, Dict, Tuple 등등 List, Dict, Tuple 등등을 표현할 때 사용. List[int] 와 같이 리스트 안의 자료형을 표시할 수가 있는데 사실 다르다고 오류가 나진 않는다. Union 한 변수에 여러개의 자료형이 가능할 때 사용. Union[자료형, 자료형 ...] 식으로 적어주면 된다 . ex) a = int 도 되고 a= str 도 될 수 있을 때 Opt..
등장 배경: 빅데이터 개념이 등장하면서 일단 데이터를 Data Lake에 던지고 보는 환경이 만들어짐. 이렇게 스키마 없이 저장된 데이터들을 편하게? 가져오기 위해 하이브가 등장하게 됨. 1. 하이브의 가장 큰 특징은 메타스토어에 스키마를 정의하고 저장된 데이터에 스키마를 입힐 수 가 있다. 2. 하이브 테이블에서 쿼리를 통해 데이터를 가져올때 파티션을 안걸면 혼쭐이 나는 경우가 많은데하이브 쿼리에서는 select * from where today ='20221010' 와 같이 컬럼처럼 사용하는 경우가 많지만 실제로 테이블에 컬럼으로 존재하는 것이 아니라 폴더 혹은 디렉토리가 파티션이 된다. 위 사진은 파티션이 today로 지정되있고 today = 20221010 이라는 파티션안에 000000_0 과 0..