728x90
반응형

데이터사이언스 72

추천시스템 - (3) 추천의 분류

추천시스템 추천의 분류 추천시스템을 고안할 때는 다음 8가지 분류를 고려해 고안한다: 추천의 도메인 추천의 목적 추천의 맥락 추천의 제안자 개인화의 정도 개인정보와 신뢰도 인터페이스 추천 알고리즘 추천의 도메인 무엇이 추천이 되고있는가? 기사인가, 물건인가, 상품인가? 사람을 추천하는 중인가? 연속적인 무언가 (음악 플레이리스트) 인가? 오래된 아이템을 대하는 방법 어떤 도메인에서는 새로운 아이템을 추천하는데에 관심이 있고 (영화나 책 등), 어떤 도메인에서는 오래된 아이템을 추천하는데에 관심이 있다 (음악, 상품 등) 추천의 목적 상품을 사거나 무언가를 소비하게 하는것 사용자/고객을 교육하는 것 상품이나 컨텐트의 커뮤니티를 형성하기 위한 것 추천의 맥락(Context) 추천이 이루어질 때 사용자는 무엇..

추천시스템 - (2) 선호도

추천시스템 서론 비개인적추천이란 사용자의 선호도가 고려되지 않은 추천이다. 이번에는 개인적추천과 비개인적추천 모두에 사용되는 데이터가 어떻게 발생되고 모아지는지에 대해서 이야기 한다. 추천을 하기 위해서는, 사용자가 어떤것을 좋아하는지에 대한 데이터와 어떤것들이 연관성이 있는지에 대한 데이터가 필요하다. 많은 시스템들에서 이러한 데이터들은 어떠한 방식으로든 사용자에게서 모은다. 어떤 데이터가 모아지는지, 그 데이터들이 어떤 의미인지에 대해서 알아보려 한다. 선호도 모델 선호도는, 사용자가 액션 영화를 좋아하는지, 또는 어떤 물건들이 연관성이 있는지와 같은 방대한 범위의 데이터이다. 사용자들은 선호도를 나타내기 위해 어떤 행위를 하는가? 사용자들은 선호도를 나타내기 위해서 명시적으로 평점을 매기거나 물건을..

추천시스템 - (1) 개요

추천시스템 추천시스템의 역사 정보검색 정보검색 분야는 방대한 양의 문서들에 대해 질문할 수 있는 시스템이 필요해서 만들어졌다. 초반에 이 분야가 발전하게 된것은 컴퓨터 회사들의 많은 소송때문이었다. 같은 기술이 도서관의 카탈로그와, WWW의 페이지들의 색인을 만드는데 쓰인다. 사람들은 다이나믹하게 카탈로그를 조회할 수 있기를 원하기 때문에 실시간으로 조회하는 기능이 필요했다. 많이 쓰이는 방식중 하나는, 문서들의 단어들의 빈도수를 사용해 랭킹을 매겨주는 TFIDF라고 하는 방법이다. 정보 필터링 정보검색의 반대되는 추정에서 시작 사람들은 기사를 검색할 때, 주제에 맞는 모든 기사를 원하는 것이 아니라 나와 연관있는 것 또는 내가 관심있는 것만 원한다. 정보의 필요는 정적이지만, 컨텐트 베이스는 동적이다...

선형대수 - (6) 영공간 (Null Space)

영공간(Null Space) A의 영공간은 $N(A)$라고 표현한다. 모든 원소가 $Ax = 0$를 만족하는 벡터의 집합 $N(A) = \{x|Ax = 0\}$ 벡터 공간으로서의 증명 덧셈에 대해 닫혀있다. $Ax_1 = 0$과 $Ax_2 = 0$에 대해, $x_1 + x_2 \in N(A)$를 만족한다. $A(x_1 + x_2) = Ax_1 + Ax_2 = \mathbb{0} + \mathbb{0} = \mathbb{0}$ 스칼라 곱에 대해 닫혀있다. $Ax = 0$와 $c$에 대해, $cx \in N(A)$를 만족한다 $A(cx) = cAx = \mathbb{0}$ 원점이 포함된다. x가 0이면 Ax는 항상 0이 된다. 예제) 다음 연립 방정식을 풀어본다. $\begin{cases} u + w = 0..

선형대수 - (5) 벡터공간

연립방정식에서 하나의 해가 아닐 때미지수의 갯수가 방정식의 갯수보다 많을 때 푸는 방법을 다룬다. 즉 무수히 많은 수의 해를 가질 때의 경우와 해가 없는 경우를 다루게 된다. 이 때 무수히 많은 해를 가질 때의 해를, 벡터공간이라고 하는 것으로 표현하는 방법을 알아본다. 예를 들어 다음과 같은 연립방정식이 있을 때, $\begin{cases} 2u + v + w = 5 \\ 4u - 6v = -2 \end{cases}$ 무수히 많은 해에 대한 표기를 어떻게 할것인가를 알아본다. 이 무수히 많은 해의 집합을 공간이라고 표현한다. 벡터 공간 (Vector Space)공간이란 원소들을 갖는 일종의 집합이다. 이 공간은 원소들의 덧셈과 스칼라 곱셈으로부터 닫혀있는 집합이다. 어떤 임의의 벡터들 $x, y \in..

선형대수 - (4) 역행렬과 전치행렬

역행렬 (Inverse Matrix)역행렬이란, n x n행렬 A에 대해 어느쪽에서 곱하든 Identity Matrix가 되는 행렬을 말한다. $A_{n\,x\,n}A^{-1} = A^{-1}A = I$ 위와 같이 교환법칙이 성립하는 것이 중요한 조건이다. n x n행렬이라고 해서 모든 행렬이 역행렬을 가지는 것은 아니다. $Det(A) \neq 0$ 일 때에만 역 행렬이 존재한다. (Det에 대해서는 추후에 다룰 예정) 역행렬의 특징A에 대해: 역행렬 $A^{-1}$는 가우스 소거법 뒤에 n pivot이 있을 때에 존재한다. n pivot들이란, 대각선의 값들이 0이 아니라는 의미 역행렬 $A^{-1}$는 두개 이상 존재할 수 없다 = Unique하다. 역행렬 $A^{-1}$가 존재한다면, $x = A..

선형대수 - (3) LU 분할

가우스 소거법과 선형 결합가우스 소거법에서 일정 계수를 곱해주고 특정 행을 빼는 행위는, 선형변환으로 표현할 수 있고, 이 선형변환은 행렬로 표현될 수 있다. 다음과 같은 연립방정식이 표현된 행렬이 있다. $\begin{bmatrix} 2 \quad 1 \quad 1 \\ 4 \quad -6 \quad 0 \\ -2 \quad 7 \quad 2 \end{bmatrix}$ 가우스 소거법의 첫번째 단계를 진행하면, 첫번째 행에 계수를 곱해 두번째 행에서 빼주는 것이다: (2) - 2 * (1) 이를 진행하면 다음과 같은 행렬이 나온다: $\begin{bmatrix} 2 \quad 1 \quad 1 \\ 0 \quad -8 \quad 2 \\ -2 \quad 7 \quad 2 \end{bmatrix}$ 이는 ..

선형대수 - (2) 가우스 소거법

연립 방정식과 행렬 다음과 같은 연립 방정식이 있다고 하자: (선형방정식은 1차식의 변수들만 존재하는 것이다.) $\begin{cases} x + 2y = 3 \\ x + 5y = 6 \end{cases}$ 위는 1번식에 4를 곱하고 2번식을 빼면, 3y = 6이 되고, y = 2라는 답이 나온다. 그리고 이를 대입해 x로 풀어내면, x = -1이라는 답을 얻을 수 있다. 위의 직선을 평면에 표현하면, x와 y는 두개의 직선의 교점임을 알 수 있다. 이를 컬럼벡터와 행렬을 통해 표현해 풀 수 있다. 위의 문제를 행렬과 벡터로 표현하면 다음과 같이 표현할 수 있다. $\begin{bmatrix} 1 \quad 2 \\ 4 \quad 5 \end{bmatrix} \begin{bmatrix} x \\ y \e..

선형대수 - (1) 선형성

선형성 (Linearity) f(x)는 x라는 변수에 대한 함수이다. f는 또한 연산(operation)이다. f가 선형성을 가지려면 두가지 조건을 만족해야 한다. 1. Superposition (중첩) $f(x_1 + x_2) = f(x_1) + f(x_2)$ 만약 $x_1$과 $x_2$를 함수에 적용하기 전에 더한 것과, 함수에 각각 적용한 뒤 더한 것의 결과가 같으면, 중첩의 조건을 만족하는 것이다. 2. Homogeneity (동질성) $f(a x) = a f(x)$ 만약 x에 상수 a를 곱한 값에 함수를 적용한 것이, 함수에 적용한 뒤 상수 a를 곱해준 결과와 같으면, 동질성의 조건을 만족하는 것이다. 위를 하나의 수식으로 표현하면 다음과 같이 표현할 수 있다. $f(a_1 x_1 + a_2 x..

PyTorch 5 - 딥러닝 기반 협업필터링

딥러닝 기반 협업필터링¶ 이번 포스팅에서는 신경망을 기반으로 한 협업필터링을 구현해본다. 신경망 기반 협업필터링은, 기존의 MF기반 협업필터링과는 조금 다르다. MF기반은 벡터끼리의 내적곱을 활용하지만, 신경망 기반은 비선형 활성함수(relu)를 사용하게 된다. In [43]: # 패키지 import from pathlib import Path import pandas as pd import numpy as np In [44]: data = pd.read_csv('./ml-latest-small/ratings.csv') data.head() Out[44]: userId movieId rating timestamp 0 1 1 4.0 964982703 1 1 3 4.0 964981247 2 1 6 4.0 9..

728x90
반응형