728x90
반응형

데이터사이언스 72

PyTorch 4 - 협업필터링

PyTorch를 활용한 협업필터링¶ 이번 포스팅에서는 행렬분해를 사용한 추천시스템 문제를 풀어보려 한다. 그리고 더 일반적인 산경망 모델을 사용해 해당문제를 풀어보겠다. MovieLens 데이터셋은 영화 추천에 자주 활용되는 유명한 데이터셋이다. 이 데이터셋에는 영화 추천 시스템 내의 별점 5점 만점의 평점데이터와 자유 텍스트 태깅 정보가 들어있다. 총 9125개의 영화에 대한 100004개의 평점과 1296개의 태그가 기록되어 있다. 영화 데이터는 https://grouplens.org/datasets/movielens/ 에서 내려받을 수 있다. In [3]: # wget을 사용해 데이터를 내려받는다 !wget http://files.grouplens.org/datasets/movielens/ml-la..

PyTorch 3 - 데이터 로더, 신경망

DataLoader와 스토캐스틱 경사하강법¶ 딥러닝은 하나의 중요한 알고리즘으로 많이 발전하게 되었다. 바로 스토캐스틱 경사하강법이다. 기존의 경사하강법은 한 epoch에 모든 데이터셋을 한번에 학습시킨다. 스토캐스틱 경사하강법은 이 큰 데이터셋을 여러개로 나누고, 나눠진 데이터의 서브셋 마다 학습을 시킨다. 이것을 기존 경사하강법의 근사치로 보면 될것이다. 이 하나의 서브셋을 배치 또는 미니배치라고 부른다. In [101]: import torch from torch import autograd, nn, optim import torch.nn.functional as F import numpy as np def lin(a,b,x): return a*x+b # 가짜 데이터 생성 def gen_fake_d..

PyTorch 2 - 로지스틱 회귀

PyTorch를 활용한 로지스틱회귀¶ 로지스틱회귀는 주어진 데이터를 0이나 1값으로 분류하는 선형 분류 모델이다. In [176]: import torch from torch import autograd, nn, optim import torch.nn.functional as F import numpy as np In [177]: lin = lambda a, b, x : a*x + b def gen_fake_data(n, a, b): x = np.random.uniform(-20, 20, (n, 2)) x2_hat = lin(a,b, x[:,0]) y = x[:,1] > x2_hat return x, y.astype(int) # 분류문제에 맞는 가짜 데이터를 생성한다 x, y = gen_fake_data..

PyTorch 1 - 텐서

PyTorch 기본¶ 먼저 PyTorch의 주요 패키지들을 가져온다. torch는 PyTorch의 최상위 패키지이고, Numpy와 비슷하지만, Tensor라는 N차원벡터를 GPU위에서 다룰 수 있는 패키지이다. torch.autograd는 경사하강법 및 미분을 자동으로 해주는 패키지이다. torch.nn은 여러 많이 사용되는 신경망들의 구현체를 가지고있는 패키지이다. torch.optim은 SGD나 Adam을 비롯한 여러가지 최적화 함수들을 가지고있는 패키지이다. PyTorch 텐서¶ 위에서 언급한 것 처럼 텐서는 N차원벡터들을 의미한다. 아래는 PyTorch에서 텐서를 어떻게 사용하는지 보여주는 코드이다. In [2]: import torch from torch import autograd, nn, o..

머신러닝 공부 8 - 분류 문제

머신러닝 본 포스팅은 Andrew Ng교수의 Machine Learning 코세라 강좌를 정리한 내용입니다. https://www.coursera.org/learn/machine-learning 분류문제 X를 입력데이터, Y를 출력이라고 할 때, Y가 이산의 값인 문제를 분류문제라고 한다. 다음과 같은 예제들이 있다: 이메일이 스팸인지 아닌지 분류 온라인 거래가 사기인지 아닌지 분류 종양이 악성인지 양성인지 분류 이런 분류문제에서는 y값이 1이면 Positive, 0 이면 Negative로 분류하게 된다. 유방암예제) 악성종양예제를 살펴보자 위 데이터셋에 대한 출력값은 0/1로 나뉜다. 이런 데이터셋에서는, 회귀문제와 같이 데이터셋과 알맞는 직선을 그리면 안된다. 이런 문제를 푸는 방법은, 어떠한 임계값..

머신러닝 공부 7 - 정규방정식

머신러닝 본 포스팅은 Andrew Ng교수의 Machine Learning 코세라 강좌를 정리한 내용입니다. https://www.coursera.org/learn/machine-learning 정규방정식 정규방정식 이란 특정 선형 문제에서 파라미터값인 θ를 더 쉽게 풀 수 있게 만들어주는 방법이다. 지금까지의 경사하강법에서는, Global Minimum을 찾기 위해 많은 스텝들을 밟아야 했다. 하지만 정규방정식은 이것을 분석적으로 풀 수 있게 해준다. 경사하강법의 많은 반복을 하기보다, 분석적으로 θ값의 해를 구하면 한번에 구할 수 있다는 말이다. 예제) 변수가 많지 않은 아래 2차 방정식 수식을 보자. 위의 수식을 minimize하려면 미분 값을 구한 다음, =0을 하고 θ로 풀면 된다. 하지만 많은..

머신러닝 공부 6 - 경사하강법 트릭

머신러닝 본 포스팅은 Andrew Ng교수의 Machine Learning 코세라 강좌를 정리한 내용입니다. https://www.coursera.org/learn/machine-learning 경사하강법이 더 좋은 성능을 내기 위해서 취하는 몇가지 트릭이 있다. 특성 스케일링 특성 스케일링이란, 여러 특성이 있는 문제에서, 여러 특성들이 비슷한 스케일에 있게 만들어 주는 기술이다. 여러 특성을 비슷한 스케일로 맞춰준다면, 경사하강법이 더 빠르게 끝날 수 있다. 예제) 특성 $x_{1}$과 $x_{2}$가 있다. $x_{1}$ = 집의 크기 (0 - 2000 feet^2) $x_{2}$ = 방의 수 (1 - 5) 이전 강의에서 위와 같은 그래프를 기억할것이다. 만약 특성1과 특성2의 스케일이 차이가 많이..

머신러닝 공부 5 - 다중 선형 회귀

머신러닝 본 포스팅은 Andrew Ng교수의 Machine Learning 코세라 강좌를 정리한 내용입니다. https://www.coursera.org/learn/machine-learning 다중 선형 회귀 기존의 선형회귀에서는 하나의 입력 x값과 예측값 y값이 존재했다. 집값 예측 예제로 다시 돌아가보자. 현실 세계의 문제에서는 집의 크기만이 집값을 결정하지 않는다. 아래의 표를 보면, 집값은 크기 외에도, 방의 숫자, 층의 숫자, 연식 등의 정보들이 모두 가격에 영향을 줄 수 있다는 것을 보여준다. 앞선 포스팅에서 이야기 하였듯이, 이런 여러 변수들을 $x_{1}, x_{2}, x_{3}$와 같은 방식으로 표기하도록 하겠다. 몇가지 변수들을 더 정의해보면: n은 특성의 갯수를 의미한다. 위의 예제..

머신러닝 공부 4 - 경사하강법

머신러닝 본 포스팅은 Andrew Ng교수의 Machine Learning 코세라 강좌를 정리한 내용입니다. https://www.coursera.org/learn/machine-learning 문제설정 J라는 함수가 있다고 하자, 우리는 이 함수를 minimize하는 알고리즘을 만들고자 한다. 먼저 θ0 과 θ1에 초기값 을 설정한다 그리고 θ0 과 θ1 가 minimum에 닿을 때 까지 J( θ0, θ1)를 감소시키고, θ0 과 θ1값을 갱신한다. 경사하강법 과정 설명 이 함수를 minimize하고자 한다고 하자. 먼저 θ0 과 θ1에 초기값 을 설정하고 시작한다. 가장 위의 그래프의 점이 θ0 과 θ1 의초기값이고, 내가 거기에 서있다고 가정해보자. 여러 방향을 살핀 뒤 한발을 밑으로 딛고 내려간다..

머신러닝 공부 3 - 비용함수

머신러닝 본 포스팅은 Andrew Ng교수의 Machine Learning 코세라 강좌를 정리한 내용입니다. https://www.coursera.org/learn/machine-learning 비용함수 다음과 같은 학습데이터가 있고, 가설함수가 있다. 이 때, θ는 파라미터, 즉 매개변수라고 한다. 이 매개변수들은 어떻게 결정될까? 가설함수 h0(x) = θ0 + θ1x 에 대해서 다음의 값들을 대입했을때: h(x) = 1.5가 된고, 가로의 직선이 된다. 같은 가설함수에 대해서 다음의 값들을 대입했을 때: h(x) = 0.5x가 되고, 대각선의 직선이 된다. 선형회귀 선형회귀는 다음과 같은 데이터에 가장 알맞는 직선, 즉 θ0 과 θ1 를 찾아내는 것이다. 이 때 이 직선은 학습데이터 (x,y)에 대..

728x90
반응형