스터디 24

[LLM] LangChain이란?

LLM에 대해 공부하다 보면 LangChain이라는 단어를 자주 접하게 된다. LangChain이 과연 무엇일까? 이번 포스팅에서 한 번 다뤄보려고 한다.     0. LLM우선 LLM은 Large Language Model의 약자로, 대규모 언어 모델이라는 뜻이다. 널리 사용되는 OpenAI의 GPT(ChatGPT), Meta의 LLaMA, Google의 Gemini 등이 있다. 텍스트로 지시를 하면 해당하는 내용을 텍스트로 생성하여 반환한다.  이렇게 적절한 결과를 반환하기 위해서 모델은 상당한 양의 데이터를 보유해야 한다. 이것이 모델에 "대규모(Large)"라는 단어가 붙는 이유이다.     1. LangChain?LLM에 대한 내용은 이쯤에서 넘어가고, 그렇다면 LangChain은 도대체 뭘까?..

스터디/ML, DL 2025.01.27

[NetworkX] 그래프 저장하고 불러오기

참고 : NetworkX : GML 파이썬 파일을 실행할 때마다 그래프를 그리지 않아도 되는 경우들이 있다.이런 경우, 그래프를 한 번 그려 저장하고 저장된 그래프를 불러오는 것이 효율적이다. 이번 포스트에서는 그린 그래프를 저장하고 다른 파일에서 불러오는 방법을 다뤄보자. 그래프는 json, gml 등 여러 포맷으로 저장할 수 있지만 나는 단순히 그래프를 파이썬 파일에 다시 불러올 용도로 저장하는 것이기 때문에 GML 포맷으로 저장했다.   먼저 그래프를 그려준다.# graph.pyimport networkx as nxdef drawGraph(data): # 그래프 그리는 부분 생략...G = nx.Graph()drawGraph()  하위에 다음과 같은 코드를 작성한 후 파일을 실행해 그래프를 저장한다..

스터디/Python 2022.07.07

[ML] 로지스틱 회귀

로지스틱 회귀는 이름은 회귀이지만 분류 모델이다. 선형 회귀와 마찬가지로 선형 방정식을 학습한다. z = a*x1 + b*x2 + c*x3 + d*x4 + e*x5 + f 와 같은 형태이다. 이 때 방정식의 a,b,c,d,e는 가중치 혹은 계수이고 x1~5는 특성이다. 다중 회귀와 비슷한 형태이다. z의 값은 어떤 값이든 가능하지만 확률로 나타내기 위해서는 0~1 사이 값이 되어야 한다. z의 값을 0~1 사이의 값으로 변환하기 위해서는 변환 함수가 필요하다. 일반적으로는 시그모이드 함수를 많이 쓴다. 아주 큰 음수일 때 0이 되고 아주 큰 양수일 때 1이 되도록 한다. 아래 그림처럼 S형 곡선의 형태를 띄게 된다. 함수 식은 자연 상수 e의 -z제곱에 +1을 한 다음 역수를 취한다. 로지스틱 회귀로 이..

스터디/ML, DL 2022.03.19

데이터 분석 프레임워크 - AARRR (해적지표)

AARRR 기법은 그로스 해킹(Growth Hacking) 의 분석 기법이다. 그로스 해킹은 기업의 성장을 최우선으로 하며, 사용자의 데이터를 분석해 서비스를 개선하는 데에 활용하기 때문에 이런 이름이 붙게 되었다. 다섯 단어의 앞 글자를 땄으며 각각 Acquisition(획득), Activation(활동), Retention(재방문), Referral(공유), Revenue(수익) 이다. 사용자가 서비스를 활용하면서 수집되는 여러 데이터 중 위 다섯가지의 지표를 핵심으로 서비스의 성장에 활용한다. 다섯 개의 지표를 순차적으로 분석하는 것이 아니라 함께 분석해야 한다. (1) Acquisition 획득 단계에서는 소비자가 서비스를 어떻게 알게 되었는지, 어떤 경로로 유입되었는지 등을 분석한다. DAU, ..

[ML] 회귀 알고리즘 : 선형 회귀 (2) - 다중 회귀

선형 회귀는 하나의 특성을 이용한 회귀 방법이다. 하지만 일반적으로 특성은 여러 개이다. 이럴 때 사용할 수 있는 방법이 바로 다중 회귀이다. 특성이 하나인 선형 회귀에서는 모델이 직선을 학습하지만 2개의 특성을 가진다면 모델은 평면을 학습한다. 방정식을 보면 쉽게 와닿는데 '타겟 = a*특성1 + b*특성2 + 절편' 의 평면 방정식을 가지기 때문이다. 이처럼 특성이 많을 때 고차원을 표현할 수 있는 선형 회귀는 복잡한 모델을 학습시킬 수 있다. 특성들이 여러 개 존재할 때 특성 그대로를 사용해도 좋지만 특성끼리 곱하는 등 새로운 특성을 만들 수도 있다. 사이킷런에서는 기존 특성으로부터 새로운 특성을 만드는 쉬운 도구를 제공한다. 사이킷런의 특성을 만들고 전처리하는 다양한 클래스를 변환기라고 하고 이는..

스터디/ML, DL 2022.03.14

[ML] 회귀 알고리즘 : 선형 회귀 (1)

머신러닝 알고리즘에는 지도 학습 알고리즘과 비지도 학습 알고리즘이 있다. 지도 학습은 훈련을 위한 데이터와 정답이 필요하고, 비지도 학습은 정답이 없고 대신 비슷한 데이터끼리 묶는다. 지도 학습은 또 다시 분류와 회귀로 나뉘는데 데이터를 여러 옵션 중 하나로 선택/결정하는 것이 분류, 데이터를 통해 임의의 어떤 값을 예측하는 것이 회귀이다. 여러 회귀 알고리즘 중 이번 포스트에서는 선형 회귀 알고리즘에 대해 다뤄보려고 한다. 선형 회귀는 대표적인 회귀 알고리즘으로, 여러 곳에서 널리 사용되고 있다. 단어 그대로 데이터의 특성이 하나인 경우 특성을 가장 잘 나타낼 수 있는 어떠한 직선에 대해 학습하는 알고리즘이다. (전처리한)데이터를 그래프로 나타내면 그 데이터의 특성이 하나일 때 분포에 따라 어떠한 선이..

스터디/ML, DL 2022.03.03

[GCP] 구글 클라우드 플랫폼으로 서버 구축하기 (1) - 인스턴스 생성

프로젝트 개발이 모두 끝난 후 그 프로젝트의 마지막 단계는 단연코 서버에 올려서 잘 작동하는지 확인하는 것일 것이다. 마침 얼마 전에 프로젝트 개발이 모두 끝나서 서버에 올려보려는 중인데 여러 서버 플랫폼이 있지만, GCP가 무료 체험판 등 무료로 사용할 수 있는 방법들이 있어서 우리는 Google Cloud Platform(이하 GCP)를 이용해서 서버에 올려보려고 한다. 먼저 GCP 콘솔에 접속한다. https://console.cloud.google.com/ 그 다음으로는 프로젝트를 생성한다. 혹시 이미 프로젝트를 만들어서 대시보드가 뜬다면 상단의 프로젝트 이름을 클릭해 뜨는 창에 프로젝트를 만들 수 있는 버튼이 있다. 프로젝트 이름과 위치를 설정하고 '만들기' 버튼을 클릭한다. 프로젝트가 생성되면..

스터디/Web 2022.03.02

[Hadoop] 맵리듀스 - 분산 데이터 처리 프레임워크

좋은 분산 시스템을 구축하기 위해서는 효율적인 입출력도 중요하지만 이것만으로는 충분하지 않다. YARN은 클러스터에 계산을 분산하고 HDFS에 보관된 데이터를 확장 가능하도록 처리하는 방법을 추상화해서 제공하는 것 뿐이다. 따라서 계산을 표현하는 방법이 중요한데, 하둡이 가장 처음 지원한 데이터 처리 모델은 맵리듀스이다. 맵리듀스는 구글이 발표했고 많은 문제를 해결할 수 있으며 단순한 모델에 기반을 둔다. 덕분에 분산 시스템을 잘 몰라도 인프라 구축을 고민하지 않고 맵리듀스를 통해 문제를 해결할 수 있다. 맵리듀스는 병렬 처리 모델이고 문제를 맵 단계, 셔플 단계, 리듀스 단계로 나눠서 수행한다. HDFS의 데이터 지역성과 YARN의 작업 및 리소스 관리 기능이 이 세 단계 계산이 효율적이도록 돕는다. ..

[PySpark] Jupyter Notebook에서 PySpark 사용하기

저번 포스트에서는 windows10 에 스파크를 설치해보았다.다만 cmd 창에서 모든 작업을 진행하기에는 불편함이 있어서 (작업 명령어 등 내용 저장에 불편)앞으로는 쥬피터 노트북으로 작업하기 위해 작업환경을 세팅하고 테스트로 데이터를 불러와보았다.쥬피터 노트북과 아나콘다는 이미 설치되어 있다고 가정한다. 데이터를 저장하고 관리하기 위해 하둡을 함께 사용한다. (하둡 설치 방법은 이전 포스트 참고)즉, 이번 포스트에서 다루는 내용은 스파크와 하둡을 연결하는 내용이라고 볼 수 있겠다.   (1) 하둡 실행cmd 창을 열어 하둡 설치파일이 있는 디렉토리로 이동하고 다음 명령어들을 차례로 실행한다.이 때 'hdfs namenode -format' 명령은 할 때마다 실행하지 않고 맨 처음에만 실행해도 되는 것 ..

[Hadoop] YARN - 리소스 관리자와 스케줄러

저번에는 하둡이 무엇인지, 그리고 하둡의 기본 파일 시스템인 분산 파일 시스템에 대해 공부했다. 이번에는 이어서 하둡의 리소스 관리자와 스케줄러에 대해 공부해보려고 한다. 분산 시스템에서는 스케줄링과 리소스 관리 기능을 핵심 요소로 가지고 있는데, 하둡에서는 계산 리소스를 할당하고 사용자 애플리케이션을 스케줄링하는 시스템으로 YARN 을 사용한다. YARN (Yet Another Resource Negotiator) 은 스케줄링과 리소스 관리를 담당하여 데이터의 지역성을 극대화하고 계산량이 많은 애플리케이션이 자원을 독점하지 않도록 제어한다. 또한 교체가 가능한 스케줄링 시스템을 지원하고 사용자당 리소스 제한, 작업 대기열당 리소스 할당량 등의 공용 리소스 시스템 스케줄링에 필요한 환경 설정을 스케줄러에..