본문 바로가기
728x90
반응형

전체 글190

Model based Collaborative Filtering 추천시스템에서 널리 알려진 collaborative filtering(CF)는 주변 사용자들의 정보를 활용하여 추천을 하는 방법이다. 이번 장에서는 CF 알고리즘의 memory based 기반의 방법이 아닌 model based 로 하여금 CF 를 진행하는 방법에 대하여 알아보고자 한다. 아래의 그림은 model based CF 알고리즘에 대한 방법론들을 도식화 해놓은 그림이다. model based CF 방법들은 크게 클러스터링을 기반으로하는 알고리즘, 행렬 분해를 사용한 알고리즘, 그리고 성능이 가장 뛰어난 딥러닝 알고리즘으로 나뉘게 된다. 여기서 Matrix factorization 을 기반으로한 추천시스템의 알고리즘에 대해 알아보도록 한다. 먼저 기존의 memory based CF 추천시스템의 경.. 2021. 2. 4.
N으로 표현 (프로그래머스 Lv3 동적프로그래밍) 문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 입출력 예 Nnumberreturn 5 12 .. 2021. 1. 25.
가장 큰 수(프로그래머스 level2) def binary_change(x): b = '' while x > 0: y1, y2 = divmod(x, 2) x = y1 b += str(y2) return b[::-1] def solution(n): answer=0 one_count = binary_change(n).count('1') while n: n+=1 n_bin = binary_change(n) if one_count == n_bin.count('1'): answer = n break return answer 문제의 조건에 맞추어 함수를 작성였다. binary_change는 십진수를 이진수를 변환하는 코드. solution은 기존의 n 에서 1씩 더해서 이진수로 변환하여 '1'의 개수를 세고, 처음 n일 때의 이진수의 '1'의 개수와 동.. 2021. 1. 21.
소수찾기 (프로그래머스: level2) 소수를 찾는 방법은 결국 한 숫자 보다 작은 숫자들을 한번씩 죽 봐야한 다는 점에서 시간이 오래걸린다. 더군다나 여러개의 숫자들에 대해 각각 소수인지 판별하려면 시간이 많이 걸린다. ㅎ ㅎ def solution(numbers): answer = 0 #1. 가능한 숫자 조합을 추출. def case(numbers): from itertools import permutations num_list = list(numbers) length = len(num_list) basket = set() for i in range(1,length+1): permute = list(permutations(num_list,i)) for j in permute: n = int(''.join(j)) if n > 1: baske.. 2020. 12. 27.
Momentum과 Adagrad를 쉽게 이해해보자! 이전에 gradient descent 방식의 계산량이 많아 시간이 많이 소요된다는 한계점을 해결하는 방법인 Stochastic Gradient descent 방식과 mini-batch gradient descent 방식에 대해 알아보았다. data-science-hi.tistory.com/164 Stochastic Gradient Descent 를 쉽게 이해해보자. 이전에 GD(Gradient Descent) 를 간단한 회귀분석 예제를 들어 GD로 학습하는 과정을 거쳐 parameter 를 추정하는 연습을 통해 GD 를 이해해 보았다. data-science-hi.tistory.com/163 gradient descent(경사하.. data-science-hi.tistory.com 기존의 SGD 방식에다.. 2020. 12. 16.
Stochastic Gradient Descent 를 쉽게 이해해보자. 이전에 GD(Gradient Descent) 를 간단한 회귀분석 예제를 들어 GD로 학습하는 과정을 거쳐 parameter 를 추정하는 연습을 통해 GD 를 이해해 보았다. data-science-hi.tistory.com/163 gradient descent(경사하강법) 를 쉽게 이해해보자. 이번 장에서는 gradient descent 방법에 대해 직관적이고, 쉽게 이해해보고자 한다. 우선 gradient descent 라는 뜻을 생각해보자. 직역을 하면 경사하강법인데, 경사를 내려간다 라는 의미로 받아들이 data-science-hi.tistory.com 이번 장에서 알아볼 SGD(Stochastic Gradient Descent)는 GD 에 시간비용 단점을 보완할 확장판이다. GD 의 문제점. 이전.. 2020. 12. 16.
gradient descent(경사하강법) 를 쉽게 이해해보자. 이번 장에서는 gradient descent 방법에 대해 직관적이고, 쉽게 이해해보고자 한다. 우선 gradient descent 라는 뜻을 생각해보자. 직역을 하면 경사하강법인데, 경사를 내려간다 라는 의미로 받아들이면 된다. 예를 들어 우리가 산 어딘가에 낙하했다면, 우리가 집을 찾아가기 위해 산을 내려가는 과정을 생각하면 된다. 수학적인 관점에서 보면은 gradient descent 는 최소가 되는 지점을 찾는다라고 생각해볼 수 있다. gradient 라는 정보를 가지고 어떤 시도를 해보면서 최소가 되는 지점을 찾아가는 과정이다. gradient 는 y=ax+b 라는 1차식에서 a 에 해당하는 기울기라고 보면 된다. 우리는 이 a 라는 gradient 정보를 가지고 최소값을 찾는 것이다. 어떤 최소.. 2020. 12. 14.
Ensemble Methods 이번장에서는 앙상블 기법에 대해 알아본다. 앙상블로 학습한다는 것은 일종의 meta learning algorithm이다. 즉 데이터가 주어지면 바로 모델링을 하는 것이 아니라, 여러 모델들을 결합해서 보다 나은 성능을 얻는 최종적인 모델을 만들기 위한 방법론에 해당한다. 여러개의 모델을 합쳐서 최종적으로 예측을 하기 때문에 중점적으로 고려해야하는 것은 어떻게 서로 다른 모델들을 주어진 데이터를 이용해서 만들어낼 것인가와 각 모델의 결괏값을 병합할 것이냐가 있다. 앙상블 모델을 설계하기 위한 방법에는 여러 방법이 존재한다. 1) bayesian voting parametric한 방법으로 데이터를 분석한다면 데이터에 대한 분포를 가정한다. 예를 들어 선형회귀 같은 경우는 설명변수와 종속변수사이의 관계가 선.. 2020. 11. 29.
Expectation Maximization 이번 장에서는 EM 알고리즘에 대해서 알아본다. objective function 이 주어졌을 때, 최적화 문제를 푸는 방법은 다양하다. EM 알고리즘의 경우는 maximum likelyhood 나 posteriori(MAP) 설정되어 있는 목적함수의 parameter를 찾는 방법이다. 매 step마다 해를 변경해가면서 최적의 parameter를 찾아간다. EM 알고리즘의 경우는 서로 다른 step을 번갈아가면서 해를 찾아간다. 그 step은 E와 M으로 나뉜다. E는 Expectation의 E 이고, M은 Maximization의 M 이다. 기댓값을 찾는 과정과 최댓값을 찾는 과정을 반복하는 것이다. E step 은 parameter를 고정시켜 놓고 likelyhood값의 기댓값을 구한다. M step.. 2020. 11. 24.
728x90
반응형