본문 바로가기
728x90

전체 글424

Pytorch Basic Intro 4/1부터 데이터 인텔리전스 연구실에서 학부연구생으로 연구활동에 참여하게 되어서 해당 연구실에서 최소한의 연구를 진행하기 위해 필요한 배경지식을 쌓는 과정의 일환으로 Pytorch에 대해 공부를 하고자한다. 파이토치의 라이브러리나 모듈 문법같은 내용은 아래 첨부한 링크인 위키독스에서 굉장히 잘 정리되어있기 때문에 개념적인 내용이나 새롭게 알게된 내용들 위주로 정리하고자한다. Tensor 딥러닝에서 텐서란, 다차원 배열을 나타내는 데이터 구조이다. 텐서는 기본적으로 스칼라, 벡터, 행렬 등과 같은 다양한 차원의 배열을 나타낼 수 있으며, 딥러닝에서 입력 데이터, 가중치, 편향 등의 모든 데이터를 텐서로 표현한다. 예를들어 딥러닝에서 가중치와 편향을 표현할 때도 텐서를 사용하며, 이러한 텐서들은 .. 2023. 3. 18.
Udemy - 머신러닝의 모든 것 (Random Forest Regression) Random Forest 랜덤 포레스트는 앙상블 학습의 한 버전인데 앙상블 학습에는 그라데이션 부스팅 같은 다른 버전들도 있다. 앙상블 학습은 여러 알고리즘이나 같은 알고리즘을 여러개 조합하여 훨씬 더 강력한 알고리즘을 만드는 것을 의미한다. 이때 랜덤 포레스트는 여러 개의 의사 결정 트리를 결합한 앙상블 기법을 이용했다. 랜덤 포레스트를 단계별로 살펴보자. STEP1: Training set에서 랜덤한 K 데이터 포인트들을 고른다. STEP2: 고른 데이터들에 연관된 의사 결정 트리를 만든다. STEP3: 몇개의 트리를 만들지 결정하고 STEP1,2를 반복하여 여러개의 트리를 만든다. STEP4: 학습된 각각의 트리에서 결과를 받아서 예측 값을 도출한다. (적어도 500개정도의 트리, 즉 500개의 결.. 2023. 3. 18.
Udemy - 머신러닝의 모든 것 (Decision Tree) CART CART는 Classification Trees와 Regression Trees를 모두 포함한 개념이다. 회귀를 공부하고 있었던 만큼 이번에는 Regression Tree에 집중해서 공부해보고자 한다. 위와 같이 데이터들을 어떤 기준에 따라 나누어 가다가 정보 엔트로피라는 복잡한 수학적 개념에 따라 알고리즘이 split을 멈춰야할 때를 파악하고 정보추가를 멈춘다. 이 잎(위와 같은 데이터를 leaf라고 부름)들을 가르는 기준선의 수에 따라 알고리즘에 정보를 더 넣을 수도 있고 넣는 걸 멈출 수도 있다. 4가지 split을 통해 구성된 알고리즘이다. x1 < 20이 기준인 split1 이후에 20보다 큰 값들을 x2 < 170이 기준인 split2로 또 나누고 20보다 작은 값들은 x3 < 200.. 2023. 3. 17.
Yale - Financial Markets (Lesson #5) Invention takes time 후대에 보기에는 당연한 것처럼 느껴지는 많은 발명품들이 해당 발명품이 나오며 발전을 이룩하기까지 많은 시간이 걸린 경우가 허다하다. 예를들어 바퀴라는 개념은 최소 650년에서 950년에는 나왔다. 그 근거는 당시 멕시코 지역의 아이들의 장난감에 바퀴가 등장했기 때문이다. 그러나 요즘은 정말 당연한 바퀴달린 여행가방은 1972년이 되어서야 Bernard Sadow에 의해 발명되어 등장하였다. 그리고 1991년에서야 요즘들고 다니는 여행가방에 달린 롤러보드가 발명되어 가방을 끄는것에 안정감을 더했다. 금융시장도 이처럼 오랜시간이 지남에 따라 점점 발전하고 있다. Limited liability 유한책임은 1811년 뉴욕주에 의해 개념이 완전히 정립되었다. 유한 책임( L.. 2023. 3. 17.
실전 시계열 분석 - 시계열 데이터 발견 및 다루기(1) 시계열 데이터는 어디서 찾는가 시계열 데이터를 찾기 위해서는 우선 어떤 데이터를 찾아야 하는지 정확히 아는 것이 중요하다. 어떤 자료가 제일 적합할지는 두 가지 목적에 따라 달라진다. 1. 학습과 실험 목적에 맞는 데이터셋 찾기 2. 시간 지향적인 형태가 아닌 데이터에서 시계열 데이터 생성하기 첫번째 목적의 경우 나의 분석이 옳은 것인지 판단할 수 있는 데이터셋을 찾아야한다. 보통 캐글과 같은 대회용 데이터셋이나 저장소 데이터셋이 적절하다. 반면 두번째 목적의 경우 타임스탬프가 찍힌 데이터를 식별하고, 이를 시계열로 변환하고, 다듬고, 또다른 데이터와 결합하여 흥미로운 시계열 데이터를 만들기 위해 다양한 방법을 고안해야한다. 미리 준비된 데이터셋을 찾으려면 시계열 데이터 저장소를 알고 있어야 한다. UC.. 2023. 3. 16.
Baekjoon Training #11501 #11501 주식 import sys input = sys.stdin.readline n = int(input()) # 몇번의 거래를 진행할지 입력 for _ in range(n): # 거래 횟수만큼 반복 days = int(input()) # 몇일동안 거래진행할지 결정 stock = list(map(int, input().split())) # 거래일동안 주식가격 리스트 stock = list(reversed(stock)) # 역순정렬 리스트로 변경 max_price = stock[0] # max_price 초기화 profit = 0 # 총 이익 0으로 초기화 for price in (stock[1:]): # 0번 인덱스를 max_price로 설정하였으므로 1번 인덱스부터 조사 진행 if price > .. 2023. 3. 16.
Yale - Financial Markets (Lesson #4) Eggs in One Basket 포트폴리오 관리를 위해 다양한 자산을 소유함으로써 위험도를 낮춤을 통해 보험을 대신할 수 있다. 이에 관한 유명한 격언 "Don't put all your eggs in one basket."이 있다. 인간이 모두 같은 리스크를 갖고 있고 측정된 데이터가 같다면 모두가 같은 포트폴리오를 원하겠지만 현실은 그렇지 않다. 위험을 감수하고자하는 정도도 모두 다르고 위험에 따른 내성과 유동성 또한 다르다. 그럼에도 변하지 않는 진리는 "전체"적인 포트폴리오 구성이 중요하고 경제관념이 있는 경제인이라면 한회사의 주가가 떨어지거나 오른것에 일희일비하면 안되고 전체 포트폴리오 평균 수익률에 반응을 해야한다는 것이다. Risk 헤지 펀드는 일반 소매시장에서 허가받지 못한 투자회사이다... 2023. 3. 15.
Baekjoon Training #2470 #2470 두 용액 메모리 초과 오답 import sys import itertools input = sys.stdin.readline n = int(input()) sol_list = list(map(int,input().split())) # 산도를 입력받음 combi_list = itertools.combinations(sol_list, 2) # 모든 조합 생성후 리스트에 담음 mixed_list = [sum(t) for t in combi_list] # 튜플로 구성된 리스트에서 튜플값들을 더하여 리스트에 다시 입력 acid_list = [abs(num) for num in mixed_list] # 해당 값들의 절대값을 리스트에 담음 min_mix = min(acid_list) # 그중 최소값을 찾음.. 2023. 3. 14.
Udemy - 머신러닝의 모든 것 (SVR) Support Vector Regression 기존의 최소 제곱법은 회귀선을 그리고 점과 회귀선 사이의 거리의 제곱의 합을 최소화하는 방법을 통해 적절한 회귀선을 찾았다면 SVR에서는 ε-Insensitive Tube를 이용한다. 이 튜브는 이름 그대로 튜브 내부의 점들의 오차는 무시한다. 튜브의 세로 길이가 중요하다. 이는 중심선에 수직이 아니라 x1축에 수직으로 측정한다. 모형에 일정 수준의 오차 허용 범위를 제공하는 것이다. 중요한 것은 튜브 외부의 점들이다. 해당 점들의 오차는 튜브중심이 아닌 튜브 그 자체까지의 거리를 통해 연산한다. Support Vector Regression이란 이름도 vector로 표현되는 오차점들이 튜브의 구조를 형성한다고 해서 붙혀진 이름이다. 계산 식은 다음과 같다... 2023. 3. 12.
[논문 리뷰] Long Short-Term Memory Long Short-Term Memory Article in Neural Computation · December 1997 Sepp Hochreiter 논문 원본 Introduction LSTM은 NLP와 같은 분야에서도 쓰이지만 time-series data 특히 stock price prediction과 같은 금융 분야에서도 쓰일 수 있는 굉장히 성능이 좋은 architecture라는 것을 알게되어 해당 논문을 읽어보기로 하였다. 논문을 통해 LSTM이 deep한 모델을 학습하는 다양한 방법론들에 대한 기본적인 방향성을 제시했음을 알게 되었고 그만큼 LSTM이 반드시 완벽히 이해하고 있어야하는 중요한 모델임을 느꼈다. Background Knowledge Time-Series Data란 일정 시간 동.. 2023. 3. 12.
Udemy - 머신러닝의 모든 것 (Polynomial Linear Regression) 다항식 회귀 아래와 같이 polynomial linear regression은 multiple linear regression과 유사하다. 그러나 polynomial linear regression은 다양한 x1, x2, ... xn 변수들이 존재하는 multiple linear regression과는 달리 같은 x1변수에 대해 n제곱 꼴로 이루어져 있음을 알 수 있다. 아래와 같은 방식으로 데이터가 분포해 있을 경우 단순 선형 회귀 방식으로는 적절한 모델을 만들 수 없다. 데이터의 분포의 경향성이 곡선에 가깝기 때문이다. Why Linear? Polynomial Linear Regression은 polynomial함에도 linear이라는 이름이 붙어있다. 이는 굉장히 이상하게 느껴질 수 있다. 여기서 .. 2023. 3. 11.
Lecture1 - Basic Concepts of Probability Theory 머릿말 1주차는 공학도로써 확률변수론이 필요한 이유, 그리고 인공지능에 대한 관심이 높아짐에 따른 확률변수론 수강생이 많아진다는 다양한 주제화 함께 교수님이 가볍게 인사하는 시간을 가졌기에 1주차는 패스하고 내가 선택과목인 확률변수론을 수강하는 이유에 대해 간단히 이야기 하고자한다. 사실 인공지능을 연구하는 사람이라면 통계학이 필수라는 것을 모르는 사람은 없을 것이다. 그러나 머신러닝 공부를 시작하지 않은 사람들은 "통계는 어짜피 컴퓨터가 분석하는거 아닌가?? 내가 왜 공부를 해야하지??"와 같은 생각을 할 수 있다. 나 또한 머신러닝 초보지만 모델을 한번 짜보는 경험을 하면서 많은 것을 느꼈다. 물론 싸이킷런 라이브러리가 기본적인 모델의 구조를 잡아주지만 데이터를 제대로 다룰 수 없는 머신러닝 연구자는.. 2023. 3. 11.
728x90