분류 전체보기 (8) 썸네일형 리스트형 Bayesian Statistics (2) Bayes' Theorem(베이즈 정리) Bayes' Theorem은 조건부 확률을 이용하여 사전 정보와 관측된 데이터를 통해 우리가 원하는 사후 확률을 계산하는 방법을 제공합니다. 수식으로 표현하면 다음과 같습니다. Bayes' Theorem을 사용하면 사전 정보와 관측된 데이터를 이용하여 모수에 대한 확률적인 추정을 할 수 있습니다. 이는 우리가 가지고 있는 사전 지식과 관측된 데이터를 모두 고려하여 추정치를 계산할 수 있음을 의미합니다. 이 내용을 조금 더 생각해 보면, 아래와 같이 표현할 수 있습니다. 데이터가 주어졌을 때 모수의 확률(Posterior)은 ①모수가 참일 때 데이터가 관찰될 확률과 ②모수가 거짓일 때 데이터가 관찰될 확률 중 모수가 참인 경우의 비율로 표현이 가능합니다. 이를 다시 상호 배타적 사건에서 i개의 사건으로 확.. Bayesian Statistics (1) Bayesian vs Frequentist 최근 회사 업무에서 데이터 예측 업무를 맡게 되었습니다. 며칠 동안 EDA를 통해 데이터 특성을 파악하다 보니 대학 시절 들었던 Bayesian Statistics의 개념이 떠올랐습니다. 현재 업무에 적용해 볼 가치가 있다고 판단하였고 기본 개념이해를 위해 블로그에 글을 쓰게 되었습니다. Bayesian Statistics 설명에 앞서 통계와 불확실성(Uncertainty)에 대해 설명해보겠습다. 통계란 Data를 활용하여 내릴 수 있는 다양한 결론중 어떤 결론이 가장 타당한지 따져보는 방법 중 하나입니다. Data 관찰을 통해 얻어진 결론이다 보니 항상 불확실성을 가지고 있습니다. 이때 이 불확실성을 해석하는 관점에 따라 Frequentist와 Bayesian으로 나뉘게 됩니다. 불확실성(Uncerta.. DFS/BFS DFS와 BFS는 그래프 순회 알고리즘 중 가장 기본적인 것들입니다. 이 두 알고리즘은 그래프의 노드를 탐색하거나, 그래프 내의 경로를 찾는 데 사용됩니다. 1. 깊이 우선 탐색 (DFS): 시작 노드에서 출발하여 한 방향으로 최대한 깊이 들어가면서 탐색합니다. 다음 분기로 넘어가기 전에 해당 분기를 완전히 탐색합니다. 스택(Stack) 또는 재귀 함수를 사용하여 구현할 수 있습니다. 재귀적인 방식으로 구현할 때는 Backtracking을 이용하여 더 이상 진행할 수 없는 경우 이전 단계로 돌아갈 수 있습니다. 탐색 속도는 BFS에 비해 느릴 수 있습니다. 목표 노드가 깊은 곳에 있을 경우에 유리합니다. 2. 너비 우선 탐색 (BFS): 시작 노드로부터 거리가 가까운 노드부터 탐색을 진행합니다. 레벨 순.. 무료 사진, 영상 복구 (testdisk, photorec) 지난주 강릉 여행 때 찍은 사진을 백업하기 위해 SD카드를 맥북에 연결했다. 그런데 sd카드에 무슨 문제라도 있는 것인지 사진이 모두 사라져 있었다. ㅜㅜ 다시 카메라에 sd카드를 넣어보아도 사진은 하나도 안 보이고... 절망하며 인터넷을 뒤져 봤다. DiskDrill, EaseUS가 추천글이 있어 이걸로 살릴 수 있겠다 생각했고, 복구를 위한 스캔을 진행했다. 스캔을 진행하며 몇몇 사진이 복구되는 것을 확인한 뒤 복구를 실행하니... 비용이 드네...? 들어봤자 1~2만원 하겠지라고 생각했지만, 무려 13만원!! 여행의 추억을 생각하면 결코 큰 비용은 아니지만 그래도 미리보기로 다 보이는 사진을 되살리는데 이렇게 큰 비용이 든다는 게 받아들여지지 않았다. 그렇게 고민을 하다 미리보기로 어느 정도 복구된.. Binary Search Binary Search 알고리즘이란 정렬된 데이터 리스트에서 목표값 또는 목표값이 있는 위치를 빠른 시간에 찾는 분할 정복 알고리즘 중에 하나 Process 배열 A와 목표 Tartget을 찾는다고 가정 현재 탐색 구간의 가운데 인덱스를 구한다. l = 첫번째 인덱스, h = 마지막 인덱스 mid = (l + h) / 2 A[mid] 값과 Target 값을 비교한다. 1. A[mid] == Target 목표값을 찾음 2. A[mid] Target h = mid - 1로 검색범뤼를 조정 목표값을 찾을 때 까지 위의 과정을 l > h까지 반복한다. def bin_search(A, target): l = 0 h = len(A)-1 .. Heap(Priority Queue) Heap이란? 최댓값과 최솟값을 빠르게 찾기 위한 자료구조 특징 완전 이진 트리 부모 노드의 우선순위가 자식 노드의 우선순위보다 높다. 형제 노드 사이에는 우선순위가 없다. Time Complexity push: O(log N) pop: O(log N) Heapq module Python의 List를 min heap처럼 다룰 수 있게 해주는 module from heapq import heappush, heappop, heapify pq = [] # 우선순위(min)에 맞게 push for i in range(3): heappush(pq, i) # 우선순위(min)가 가장 높은 원소를 pop for i in range(3): heappop(pq) # 우선순위(max)에 맞게 push for i in ra.. Hash Hash란? Hash Table로 Key와 Value를 매핑해서 Data를 저장하는 자료구조 Python에서는 Dictionary 자료형이 Hash에 해당 사용하면 좋은 상황 List를 쓸 수 없을 때 List는 int를 활용해서만 Index로 Data에 접근 가능하다. Index가 int가 아닌 str, tuple등을 활용하기 위해서는 Dictionary를 사용 빠른 접근이 필요할 때 Key를 활용해 바로 Data에 접근이 가능해 대부분의 시간복잡도가 O(1)이다. Default Dict Dictionary의 Value를 모든 Key에 대해 기본 값을 설정해준다. from collections import defaultdict DD = defaultdict(int) # 기본 값을 0으로 설정 DD = .. 복잡도(Complexity) 안녕하세요? 소프트웨어 역량 테스트를 통과하기 위해 노력 중인 직장인 여러분, 반갑습니다. 최근에 제가 준비하고 있는 사내 소프트웨어 역량 테스트에서는 "복잡도(Complexity)"가 중요한 것 같아 기록을 남겨보려 합니다. 제가 이미 취득한 단계에서는 크게 신경 쓰지 않아도 통과했지만, 이제는 복잡도를 고려하며 코드를 작성해야 한다고 하더군요. 이 블로그에서는 복잡도를 시작으로 소프트웨어 역량 테스트를 통과하기 위한 소소한 팁들에 대해 공유하고자 합니다. 앞으로 함께 발전하며 더 나은 성과를 이끌어내기를 기대합니다. Time Complexity: 시간 복잡도(연산 횟수) Big-O표기법: 알고리즘의 최악의 실행 시간을 표기 특징 상수항 무시: O(N+4) → O(N) 계수 무시: O(2N) → O(N.. 이전 1 다음