전체 글
-
분류 목적 머신러닝 알고리즘 종류 - KNN(K-Nearest Neighbor)통계/ML 2025. 5. 29. 21:39
앞서, 지도 학습과 비지도 학습에 대한 정의를 내렸었다.이번에는 지도 학습 내에서 다시 2가지로 구분된다.그 기준은 목적 변수(혹은 반응 변수)의 형태에 따라 분류 그리고 회귀 문제로 나뉜다.목적 변수의 타입기법남성/여성, 긍정/중립/부정, 서울/부산/경기 등 명목형 변수분류 기법0~10, -500~500 같은 수치 형태회귀 문제 위와 같이 분류 목적 머신러닝 알고리즘에는 다양한 종류가 있으며, 첫번째 알고리즘인 KNN에 대해 알아보자. K-최근접 이웃(K-Nearest Neighbor) 기법 정의: 목표 변수의 범주를 알지 못하는 데이터 세트의 분류를 위해 해당 데이터 세트와 가장 유사한 주변 데이터 세트의 범주로 지정하는 방식으로 분류 예측을 하는 기법 - 해당 데이터 점과 주변 데이터 세트 간의 ..
-
머신러닝의 정의 및 구성요소통계/ML 2025. 5. 27. 21:57
현재, AI팀내에서 좀 더 나은 팀원이 되고자, 다시 시작한 머신러닝 공부.처음으로 돌아가 개념부터 잡고자 시작한다. 1. 머신러닝의 개념- 인공지능의 한 분야- 어떤 것에 대한 학습을 통해 기존의 모델이나 결과물을 개선하거나 예측 하게끔 구축하는 과정즉, 훈련 데이터를 이용하여 여러 가지 통계적, 프로그래밍을 통해 규칙성이나 패턴을 찾은 후, 새로운 데이터에 적용하여 답을 얻어내는 것 2. 머신러닝의 구성 요소- 수행하고자 하는 '작업'- 작업을 수행하기 위해 주어진 데이터로 부터 학습한 '모델'- 작업 수행을 위해 모델을 학습하는 과정에서 개체를 측정한 '특성(Features)' 3. 머신러닝 기반 데이터 분석 기법의 유형-> 목적 변수 존재 여부에 따른 지도 학습과 비지도 학습으로 나뉨추가적으로 강..
-
ChatGPT 를 사용한 RAG 구현 교육 및 최근 근황 회고회고 2024. 9. 8. 18:10
AI팀 입사 후 3개월간의 적응기AI팀에 입사하면서, FastAPI를 이용한 백엔드 서비스 개발에 본격적으로 참여하게 되었다.입사후 1주일 동안 현재 서비스가 어떻게 설계되어 있는지(RAG 및 프롬프트) 전반적인 설명을 들었다.팀원들의 설명과 나의 질문들로 이해하는데는 큰 어려움은 없었다.물론 갑자기 대량의 지식들을 흡수하느라 약간은 힘들었지만, 관심있었던 분야이기에 흥미로웠다.그러던 도중 PoC를 위해 조금(?) 바쁘게 API개발을 완료하였고, 뒤돌아보니 벌써 3개월이 지나있었다. RAG 교육을 듣게 된 계기3개월이 막 지난 시점, 현재 서비스에서는 RAG pipeline을 계속해서 개선해야 한다는 것을 인지했다.이미 구축되어 있는 상태에서 중간 중간 찍먹(?) 정도 해본 나는 100% 완벽히 알고 있..
-
[병렬 처리] python multithreading 도입기 (feat.multiprocess 차이)Backend/Python 2024. 2. 23. 15:28
필자는 현재 프로젝트에서 배치작업을 했었는데, 이상치 검증 로직 때문에 배치 시간이 무려 1분이나 되는 것을 발견하였다! 사실은 1분 30초 정도였는데, 구역을 나누어 진행하여 1구역당 50초 정도 소요되었다.하지만, 적재되어 있는 데이터가 늘어날수록, 소요 시간이 더 늘어날 것 같았고, 10분 단위 대시보드 프로젝트에서는 1분 1초가 소중하기 때문에 병렬 처리를 도입하기로 하였다. 먼저, 병렬처리를 하기에 앞서, 항상 언급되는 부분 Multithreading 과 Multiprocessing 에 관해 비교해보자 -> 필자도 항상 머리속에 있다고 생각하지만, 가끔 헷갈리는(?) 부분이라 같이 정리하고자 한다. 그렇다면, 가장 큰 차이점은 무엇일까?바로 Thread 와 Process 이다.나아가 이것은 c..
-
[TDD] FastAPI에서 pytest 로 단위테스트 하기 - 4. pytest 에서 테스트 병렬 수행 및 Html 결과 출력하기Backend/FastAPI 2024. 2. 18. 20:22
필자는 전체 통합 테스트를 하면서, main_test.py의 테스트 케이스가 많아서 시간이 좀 걸리는 것을 발견했다. 이를 관련하여 찾아보다가, pytest 자체적으로 병렬 처리를 하는 라이브러리가 있다는 것을 발견했고, 이를 적용해보았다. 그리고 나아가 결과물을 html로 볼 수 있도록 하는 방법도 같이 적어보도록 하겠다! 1. pytest-xdist 설치 : pip install pytest-xdist 실행방법_1 : pytest -n auto {test파일명}.py 실행방법_2: pytest -n {프로세스 개수} {test파일명}.py main_test.py를 실행했을 때! 저번과 달리 worker수가 등장한다 - > 이때 -n -auto 옵션이기 때문에 cpu 코어 개수에 다라 프로세스 개수를 ..
-
[TDD] FastAPI에서 pytest 로 단위테스트 하기 - 3. pytest 에서 Parameterize 사용법Backend/FastAPI 2024. 2. 18. 17:44
이번에는 본격적으로 테스트 파일을 만들면서, 여러가지 Request를 보내는 Parameterize 사용법에 대해 설명하겠다. 먼저, parameterize란 무엇일까? 테스트 케이스마다 테스트 값을 포함한 테스트 함수를 호출하는 코드도 중복 작성하는 부분이다. @pytest.mark.parametrize(args, argvalues) 데코레이터로 작성하여 테스트 코드를 간결하게 만들 수 있다. (필자의 경우 -> 테스트 값을 포함하지 않았다. - 통신 200이 목적이었기 때문에) 그렇다면, 어떻게 적용했는지 코드를 통해서 보자 import pytest from fastapi.testclient import TestClient from main import start_app app = start_app(..
-
[TDD] FastAPI에서 pytest 로 단위테스트 하기 - 2. pytest 적용하기Backend/FastAPI 2024. 2. 16. 22:26
필자는 앞서, TDD에 대한 설명을 했다. 이제는 바로 적용해보자 (가상환경): pip install pytest 와 같이, Pytest library를 설치한다. 이후, 1. 구조 2. 명명규칙 만 잘 따르면 금방 진행된다! 1. 구조 구조는 기존의 app 과 같은 선상에 test 폴더를 위치해준다. app > api test > api 꼭 __init__.py 파일을 넣어준다! (넣지 않을 경우 -> ModuleNotFoundError가 발생 ) 2. 명명 규칙 파일 이름 : test_*.py 혹은 *_test.py(python3.8 ver) 형식으로 지정 클래스 명칭: class Test* 형식 클래스 메서드 혹은 함수 명칭 : def test_* 형식 (pytest라는 Librarys는 test...
-
[TDD] FastAPI에서 pytest 로 단위테스트 하기 - 1. 단위 테스트란?Backend/FastAPI 2024. 2. 16. 21:40
필자는, 현재 프로젝트를 진행하며 수정사항이 있을 때 마다 main.py를 구동하여 테스트 하였다. 테스트 코드를 미리 작성하면 편리하다는 것을 알지만,,, 마감이 얼마 남지 않았기에 개발을 후다닥 하였다. 하지만 지금이라도 늦지 않았다 생각하고, 마음먹고 작성해보았다. pytest를 적용하기 앞서, 단위 테스트가 왜 중요한지, 좋은 단위 테스트란 무엇인지 찾아보았다. 단위테스트(Unit Test)를 작성해야 하는 이유 1. 코드 수정 혹은 기능 추가 -> 바로바로 검증 가능 2. 리팩토링 -> 안정성 & 빠른 속도 3. 테스트에 대한 시간과 비용 감소 (ex - db 연결) 우리가 주로 하는 테스트는 과연 좋은 테스트 일까? 만약 100개 넘는 API에, request의 종류가 각 5개씩이라면, 총 5..