본문 바로가기

반응형

분류 전체보기

(369)
Public, Private Attributes 파이썬에서 클래스의 attribute에 대한 가시성은 공개 (public), 비공개 (private) 두 가지를 제공합니다. Attribute 이름 앞에 밑줄 두 개 (__)를 붙이면 비공개 필드가 되고 비공개 필드를 포함하는 클래스 안에 잇는 메소드에서는 해당 필드에 직접 접근할 수 있습니다. 하지만 클래스 외부에서 비공개 필드에 점 연산자 (.) 를 통해 직접적으로 접근하면 예외가 발생합니다. class MyObject: def __init__(self): self.public_field = 5 self.__private_field = 10 def get_private_field(self): return self.__private_field foo = MyObject() assert foo.publi..
변수 영역과 클로저 숫자로 이루어진 리스트를 정렬하되 정렬한 리스트의 앞쪽에는 우선순위를 부여한 몇몇 숫자를 위치시켜야 한다고 가정해봅시다. 이러한 경우에는 리스트의 sort 메소드에 key 인자로 도우미 함수를 전달하는 것으로 구현할 수 있고 도우미 함수는 주어진 리스트 원소에 대해 중요한 숫자 그룹에 들어있는지 체크합니다. def sort_priority(values, group): def helper(x): if x in group: return (0, x) return (1, x) values.sort(key=helper) numbers = [8,3,1,2,5,4,7,6] group = {2,3,5,7} sort_priority(numbers, group) print(numbers) 파이썬은 자신이 정의된 영역 밖에..
Pytorch LSTM 이번 포스트에서는 시계열 데이터에서 자주 쓰이는 'airline-passengers.csv' 데이터에 대해 Pytorch 프레임워크의 LSTM 모듈을 이용하여 시계열 예측을 수행해보도록 하겠습니다. Import libraries 먼저 필요한 라이브러리를 호출합니다. import torch import torch.nn as nn import numpy as np import pandas as pd import matplotlib.pyplot as plt from torch.autograd import Variable from sklearn.preprocessing import MinMaxScaler Load data 판다스의 'read_csv' 함수를 이용해 데이터를 읽습니다. csv 데이터의 첫번째 열은..
RecSys - Field-aware Factorization Machines 지난 포스트 [Machine Learning/기타] - RecSys - Factorization Machines (1) [Machine Learning/기타] - ResSys - Factorization Machines (2) [Machine Learning/기타] - RecSys - Factorization Machines (3), Pytorch 구현 Factorization Machines (FM)은 sparse한 데이터 상황에서 각 feature 간의 상호관계를 모델링하기 위해 Equation 1과 같이 각 feature의 잠재벡터를 (임베딩 벡터) 학습하고 feature의 선형결합과 잠재벡터의 내적으로 타겟을 예측했습니다. CTR (Click Through Rate)을 예측하기 위한 Table 1..
RecSys - Factorization Machines (3), Pytorch 구현 RecSys - Factorization Machines (1) ResSys - Factorization Machines (2) 이번 포스트에서는 Factorization Machines (FM)을 Pytorch 프레임워크로 구현해보려 합니다. 먼저 추천 시스템에서 자주 쓰이는 벤치마크 데이터셋 MovieLens 20M을 다운받습니다. MovieLens 데이터셋은 다양한 종류가 있으며 여러 유저의 여러 영화에 대한 평가와 장르, 태그와 같은 메타 데이터가 csv 파일로 존재합니다. 그중 MovieLens 20M 데이터셋은 13만여명 유저의 3만여개의 영화에 대한 2백만개의 5-star 레이팅으로 구성되어 있습니다. (Figure 1, ratings.csv) Load datasets 먼저 Pytorch의 ..
Pytorch - embedding 임베딩 (Embedding) 이라는 말은 자연어처리 분야에서 (NLP) 매우 많이 등장하는 단어로 이산적, 범주형인 변수를 sparse한 one-hot 인코딩 대신 연속적인 값을 가지는 벡터로 표현하는 방법을 말합니다. 즉, 수많은 종류를 가진 단어, 문장에 대해 one-hot 인코딩을 수행하면 수치로는 표현이 가능하겠지만 대부분의 값이 0이 되버려 매우 sparse 해지므로 임의의 길이의 실수 벡터로 밀집되게 표현하는 일련의 방법을 임베딩이라 하고 각 카테고리가 나타내는 실수 벡터를 임베딩 벡터라고 합니다. Pytorch, Tensorflow 딥러닝 프레임워크는 이러한 임베딩을 쉽게 할 수 있는 api 함수를 제공합니다. 임베딩을 할 전체 크기에 대해 각 카테고리 별로 지정한 차원을 가지는 임베딩 벡터..
ResSys - Factorization Machines (2) RecSys - Factorization Machines (1) Comparison to SVM SVM의 결과 $\hat{y} (x)$는 kernel $K$와 Equation 1으로 연관된, feature 공간 $R^n$ 에서 고차원 공간 $F$로 향하는 매핑함수 $\phi$와 모델 파라미터 $w$와의 내적 $$로 표현할 수 있습니다. 따라서 $K$를 어떻게 설정하느냐에 따라 입력 $x\in R^n$을 어떤 공간으로 매핑해서 hyperplane을 구할지 정해지게 되는데요, Linear kernel 먼저 가장 간단한 선형 커널 $K_l (x, z) := 1 + $ 를 생각해볼 수 있습니다. 이는 $\phi (x) := (1, x_1, ..., x_n)$ 와 같고 $\hat{y} (x)=$를 이용하여 Equ..
RecSys - Factorization Machines (1) 유튜브, 넷플리스, 이커머스 등의 플랫폼을 사용하다보면 연관된 영상과 제품이 여러 사용자의 다양한 데이터와 머신러닝 알고리즘에 기반하여 추천됩니다. 내가 이 플랫폼을 처음 사용한다거나 이러한 제품, 영상을 본 적이 없는데도 어떻게 새로운 컨텐츠를 추천할 수 있을까요? 일반적으로 추천 시스템에 (recommender systems) 사용되는 데이터는 Figure 1의 형태처럼 표현할 수 있을겁니다. 행이 유저가 되고 열이 컨텐츠가 되어 특정 인덱스의 행열 값은 유저의 컨텐츠에 대한 rating (score)가 되겠죠. 여기서의 추천 문제는 Figure 1의 데이터에 기반하여 어떤 유저가 어떤 컨텐츠를 얼마나 좋아할까를 예측하는 것입니다. 이러한 류의 문제는 기존의 행렬분해법 (Matrix Factoriza..

반응형