Loading...
2022. 12. 5. 01:02

고난이도 자료구조 세그먼트 트리 개념 이해하기 1편

1. 특정한 구간에 존재하는 모든 수의 합 어떤 수열이 주어질때, 만약 특정 구간 [a,b]에 존재하는 모든 수의 합을 구하라고 한다면 어떻게 구할 수 있을까? 가장 쉬운 방법은, 그냥 반복문으로 [a,b]까지 돌아서 모든 수의 누적합을 구하면 된다 answer = 0 for i in range(a,b+1): answer += A[i] 만약 배열 A의 크기가 N일때, 최악의 경우 위 코드의 시간 복잡도는 O(N)이다. 1번부터 N번까지 다 더하라하면 O(N)이니까 여기까지는 괜찮은데 만약 이러한 질문을 M번이나 한다면? O(N)의 연산을 M번 수행해야하므로, 시간복잡도는 O(NM)이고 N,M이 매우 크다면, 당연히 매우 느리다 2. Prefix sum 만약 S[0] = 0이고, 1번부터 i번까지의 수열 ..

2022. 1. 2. 21:14

선형구조와 비선형구조

1. 자료구조 자료를 효율적으로 접근하고 수정하기 위해 자료를 조직, 관리, 저장하는 방법 상황에 따라 데이터를 다루는데 시간과 메모리를 효율적으로 사용할 수 있는 자료구조를 사용해야함 선형 구조와 비선형 구조로 나뉜다 2. 선형구조 자료를 구성하는 데이터들이 직선 형태로 순차적으로 나열되어 있는 구조 전후 데이터들 간에 일대일 관계 대표적으로 스택(stack), 큐(queue), deque, 리스트(list) 등이 모두 선형구조이다. 3. 비선형구조 하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 구조 전후 데이터들 간에 1:N 관계를 가짐 대표적으로 트리(tree), 그래프(graph)가 비선형구조이다. 4. 참고 https://noahlogs.tistory.com/28 [자료구조] 스택, 큐, 데..

decision tree의 불순도를 측정하는 기준

불순도를 측정하는 기준으로 entropy를 사용했지만 gini 계수라는 것도 있습니다. 그 외에도 카이제곱 통계량이나 분산의 감소량같은 것도 사용하며 이에 따라 C4.5, CART, CHAID 등 다양한 decision tree 알고리즘이 있습니다. 지금까지 설명한 알고리즘은 ID3라는 기본적인 알고리즘이었습니다. gini 계수는 다음과 같이 정의합니다. $$1- \sum _{i=1} ^{c} p _{i}^{2} =G(U)$$ 이 식을 그림1을 예로 들어 설명하면 빨간색 데이터는 6개이고 파란색 데이터는 4개인데 $p _{1} = \frac{6}{10} ,p _{2} = \frac{4}{10}$으로 $G(U)=0.48$ 반면 entropy로 계산한 불순도는 $H(U)=0.972$

2021. 12. 13. 00:16

decision tree의 가지치기(pruning)

위와 같이 decision tree는 recursive partitioning을 통해 각 node에서 information gain이 순간 순간 최대가 되는 방향으로 feature를 선택하고 최종 node의 entropy가 0이 될 때까지 구분을 진행합니다. 그런데 딥러닝을 많이 하신 혹시나 이 글을 읽고 계신 분은 짐작하셨겠지만 주어진 training data에 너무나 fitting된다는 단점이 있습니다. 그러니까 새로운 data가 들어올 때 사실 정확한 분류를 해줄지는 미지수라는 점입니다. 그래서 pruning이라는 방법을 수행하여 일반화 능력(generalization performance)을 올려줍니다. 일반화 능력은 딥러닝에서 모델이 train중 한 번도 보지 못한 test data에 대해서도 ..

2021. 12. 11. 21:23

예시를 통해 이해하는 decision tree가 생성되는 원리

현재 딥러닝이 분류문제의 기본 상식으로 알려져있지만 이전에 고전적인 머신러닝에서는 decision tree를 이용하여 분류문제를 해결했습니다. decision tree는 주어진 dataset을 class별로 구별해나가는 하나의 tree를 생성하는 모형인데요. 어떤 식으로 구별해나가는지 그 원리를 예를 들어 설명하겠습니다. 주어진 dataset은 여러개의 feature를 가지고 있겠죠? 예를 들면 다음과 같은 dataset을 생각해봅시다. 현재 D1~D14까지 data를 outlook, temperature, humidity, wind라는 feature를 이용하여 target 변수인 play tennis의 yes or no 여부를 구분해야합니다. 현재 구분하기 전에 yes는 9개 있고 no는 5개 있습니다..

2021. 11. 3. 20:57

CatBoost 모형

그 이름 Cat가 categorical feature를 뜻하는데 categorical 변수에 최적화되어있다고 논문에서 주장하고 있습니다. “ Two critical algorithmic advances introduced in CatBoost are the implementation of ordered boosting, a permutation-driven alternative to the classic algorithm, and an innovative algorithm for processing categorical features “ 논문에서 언급하는 ordered boosting은 일반적인 boosting이 모든 데이터 row에 대해 gradient 업데이트 과정을 거쳤다면 Catboost는 다음..