欲速不達

일을 급히 하고자 서두르면 도리어 이루지 못한다.

Fantastic AI, Fantastic World
728x90
반응형

ML 8

[ML basic] GNN : Graph Neural Networks

1. Graph란? 그래프(Graph)란, 꼭지점(node)들과 그 노드를 잇는 선(간선, edge)들을 사용하여 데이터를 표현하는 자료구조이다. edge에 따라 다음과 같은 종류로 나뉘어진다. 방향 유무 directed / undirected 가중치 유무 weighted / unweighted [ Graph를 사용하는 이유 ] 관계, 상호작용과 같은 추상적인 개념을 다루기에 적합하다. 복잡한 문제를 더 간단한 표현으로 단순화할 수 있다. 소셜 네트워크, 바이러스 확산, 유저-아이템 상호작용 등을 모델링할 수 있다. Non-Euclidean Space의 표현 및 학습이 가능하다. 흔히 다루는 이미지, 텍스트, 정형데이터는 격자 형태의 데이터로 표현 가능하다. SNS 데이터, 분자(molecule) 데이터..

[ML basic] Bias & Variance

1. 정의 일반적으로, bias는 모델을 통해 얻은 예측값과 실제 정답과의 차이의 평균을 나타낸다. 즉, 예측값이 실제 정답값과 얼만큼 떨어져 있는지를 나타낸다. 만약 bias가 높다고 하면 그만큼 예측값과 정답값 간의 차이가 크다고 말할 수 있다. $$Bias[\hat{f}(x)]=E[\hat{f}(x)-f(x)]$$ variance는 다양한 데이터 셋에 대하여 예측값이 얼만큼 변화할 수 있는지에 대한 양(Quantity)의 개념이다. 이는 모델이 얼만큼 flexibility를 가지는 지에 대한 의미로도 사용되며, 분산의 본래 의미와 같이 얼만큼 예측값이 퍼져서 다양하게 출력될 수 있는 정도로 해석할 수 있다. $$Var[\hat{f}(x)]=E[(\hat{f}(x)-E[\hat{f}(x)]^{2})]..

[RecSys] kNN Collaborative Filtering : scikit-surprise 라이브러리 / MovieLens Data

!pip install scikit-surprise scikit-surprise 패키지는 Collaborative Filtering 관련 머신러닝 라이브러리이다. kNN 뿐만 아니라 MF 등의 알고리즘도 제공하지만 여기서는 kNN 알고리즘만 사용했다. - Reader, Dataset from surprise import Reader, Dataset reader = Reader(rating_scale=(0.5, 5.0)) data = Dataset.load_from_df(ratings_df[['userId', 'movieId', 'rating']], reader) - train_test_split from surprise.model_selection import train_test_split # train..

[논문] BPR: Bayesian Personalized Ranking from Implicit Feedback

BPR: Bayesian Personalized Ranking from Implicit Feedback은 Model-based Collaborative Filtering의 하나로, Implicit Feedback 데이터를 활용해 Matrix Factorization를 학습할 수 있는 방법이다. Bayesian 추론에 기반하고 있으며, Implicit data를 사용해 서로 다른 아이템에 대한 유저의 선호도를 반영하도록 모델링하고 추천하게 된다. 본 논문에서 추천이란, user가 선호할 만한 item 목록 (Personalized Ranking)를 예측하는 것을 말한다. Personalized Ranking의 대표적인 방법으로는 Matrix Factorization과 k-Nearest Neighbor이 있..

[논문] Collaborative Filtering for Implicit Feedback Datasets

기존의 추천시스템은 두 가지 방법론이 주류를 이룬다. 1) Content Based Approach 2) Collaborative Filtering Content Based Approach은 영화를 추천할 때 우선 영화를 장르에 따라 분류하고, 특정 장르를 좋아하는 사람에게 해당 장르의 영화를 추천해주는 방식이다. 하지만 이 방식은 각각의 Content (영화 등)의 profile(장르, 배우 등의 속성)을 구성하는 전단계가 필요하고 Overspecialization, 유저의 Content Profile을 벗어나는 추천을 하기 어렵다. 그렇기 때문에 분류된 장르에 대해서만 추천이 가능하므로 유저에게 새로운 장르를 추천하거나 하는 등의 행동으로 이어지지는 않게 된다는 문제점이 있다. Collaborativ..

[ML] Transfer Learning and Hyper Parameter Tuning

머신러닝 이론을 공부하고 실제 문제를 머신러닝으로 해결하려고 할때, 직면하는 문제 중 하나가 '미리 학습된 모델들이 많은데, 그 모델을 활용할 수 없을까'이다. 만약 다른 사람들이 학습시켜놓은 머신러닝 모델들을 활용할 수 없고 backbone 모델 정도만 불러와서 매번 새로 학습하거나 한다면 AI 분야가 이렇게까지 발전할 수 없을 것이다. Transfer Learning은 이러한 문제를 해결하기 위해 미리 학습된 모델(Source Model)을 내가 풀려는 문제의 데이터로 학습한다는 뜻이다. 간단하게 남이 만든 모델에 내가 가진 데이터를 학습시킨다는 말인데, 쫌 더 자세히 알아보자. 1. Transfer Learning : 전이학습 Transfer learning은 우선 Source Task를 지정해야 ..

[Pytorch] Parameter : 매개변수 / Buffer

1. Parameter란 정의로는 매개변수, 머신러닝에서는 모델이 사용할 수 있는 매개변수를 모델 내부에서 저장하는 것을 말한다. 일반적인 변수 지정 방식으로는 모델에서 반복적으로 로드할 수 없기 때문에 torch.nn.parameter.Parameter를 사용하여 torch 내부에 저장한다. 2. 모델 내부에서 Parameter 사용 import torch from torch import nn from torch.nn.parameter import Parameter class Model_Param(nn.Module): def __init__(self, in_features, out_features): super().__init__() self.W = Parameter(torch.ones((out_fea..

[Scala & Vector & Matrix] 스칼라와 벡터와 행렬

1. Scala (스칼라) 일반적으로 스칼라라고 하면 벡터 공간(Vector Space)의 세 요소 중 하나로 물리학에서는 '방향을 가지지 않은 크기만 존재하는 물리량'이다. 수학에서 또한 방향을 가지지 않은 하나의 값을 가지는 단위이며 일반적인 수라고 볼 수 있다. 2. Vector (벡터) 벡터는 숫자를 원소로 하는 리스트 / 배열(list / array)이다. 또 벡터는 벡터공간 안에서 한 점을 의미하며, 원점으로부터 상대적 위치를 가지고 있으며 이를 원점에서의 벡터로의 방향으로 볼수 있다. 특징 벡터는 공간에서의 한 점 원점으로부터 상대적 위치를 표현 숫자(스칼라)를 곱해주면 길이가 변함 숫자(음수)를 곱하면 길이는 그대로 원래방향과 정반대방향이 됨 같은 모양의 벡터는 덧셈, 뺄셈, 성분곱(Had..

728x90
반응형