[ML 06-1] 군집 알고리즘
·
AI/혼공파 머신러닝+딥러닝
타깃을 모르는 비지도 학습타깃을 모르는 사진을 종류별로 분류하려면 어떻게 해야할까? 타깃이 없을 때 사용하는 머신러닝 알고리즘을 비지도 학습(unsupervised learning)이라고 한다. 사람이 가르쳐 주지 않아도 데이터에 있는 무언가를 학습하는 것이다. 처음엔 데이터의 픽셀값을 이용해서 사진을 분류할 수 있겠다는 생각을 할 수 있을 것이다.과일 사진 데이터 준비하기다음은 사과, 바나나, 파인애플을 담고 있는 흑백 사진 데이터이다.이 배열의 첫번째 차원은 샘플의 개수를 나타내고, 두 번재 차원은 이미지 높이, 세 번째 차원은 이미지 너비이다. 각 픽셀은 넘파이 배열의 원소 하나에 대응한다. 즉 배열의 크기가 100 x 100이다.이 넘파이 배열은 흑백 사진을 담고 있으므로 0~255까지의 정숫값을..
[ML 05-1] 결정 트리
·
AI/혼공파 머신러닝+딥러닝
알코올 도수, 당도, pH를 이용해 화이트와인과 레드와인을 구분하는 task를 풀어보자.info() : 데이터프레임의 각 열의 데이터 타입과 누락된 데이터가 있는지 확인하는 데 유용.describe() : 열에 대한 간략한 통계를 출력. 최소, 최대, 평균값 등을 볼 수 있다. 여기서 알코올 도수와 당도, pH 값의 스케일이 다르니 이전에 했던 것처럼 사이킷런의 StandardScaler클래스를 사용해 특성을 표준화해야한다.점수가 높지 않다. 훈련 세트와 테스트 세트의 점수가 모두 낮으니 모델이 과소적합된 것 같다. 이 모델을 설명하기 위해 로지스틱 회귀가 학습한 계수와 절편을 출력해 보자.이렇게 보면 우리가 이 모델이 왜 저런 계수 값으로 학습했는지 정확히 이해하기 어렵다. 아마도 알코올 도수와 당도가..
[ML 04-2] 확률적 경사 하강법
·
AI/혼공파 머신러닝+딥러닝
경사 하강법은 경사를 따라 내려가는 방법을 말한다. 그럼 확률적이란 말은 무슨 뜻일까? 훈련 셋을 사용해 모델을 훈련하기 때문에 경사 하강법도 당연히 훈련 세트를 사용하여 가장 가파른 길을 찾을 것이다. 그런데 전체 샘플을 사용하지 않고 딱 하나의 샘플을 훈련 세트에서 랜덤하게 골라 가장 가파른 길을 찾는 것이다. 그다음 훈련 세트에서 랜덤하게 또 다른 샘플을 하나 선택하여 경사를 조금 내려가고 이런 식으로 전체 샘플을 모두 사용할 때까지 반복한다. 이처럼 훈련 세트에서 랜덤하게 하나의 샘플을 고르는 것이 확률적 경사 하강법이다. 모든 샘플을 다 사용했는데도 다 못내려왔다면 어떻게 할까? 훈련 세트에 모든 샘플을 다시 채워 넣는다. 그다음 다시 랜덤하게 하나의 샘플을 선택해 이어서 경사를 내려간다. 이렇..
[ML] 소프트맥스 회귀 구현하기
·
AI/ML
이번 챕터에서는 소프트맥스 회귀를 로우-레벨과 F.cross_entropy를 사용해서 구현해보겠습니다.앞으로의 모든 실습은 아래의 과정이 이미 진행되었다고 가정합니다.import torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optimtorch.manual_seed(1)x_train = [[1, 2, 1, 1], [2, 1, 3, 2], [3, 1, 3, 4], [4, 1, 5, 5], [1, 7, 5, 5], [1, 2, 5, 6], [1, 6, 6, 6], [1, 7, 7, 7]]y_..
[ML] 소프트맥스 회귀(Softmax Regression) 이해하기
·
AI/ML
앞서 로지스틱 회귀를 통해 2개의 선택지 중에서 1개를 고르는 이진 분류(Binary Classification)를 풀어봤습니다. 이번 챕터에서는 소프트맥스 회귀를 통해 3개 이상의 선택지 중에서 1개를 고르는 다중 클래스 분류(Multi-Class Classification)를 실습해봅시다.1. 다중 클래스 분류(Multi-class Classification)이진 분류가 두 개의 답 중 하나를 고르는 문제였다면, 세 개 이상의 답 중 하나를 고르는 문제를 다중 클래스 분류(Multi-class Classification)라고 합니다. 아래의 문제는 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이라는 4개의 특성(feature)을 가지고 setosa, versicolor, virginica라는 3개..
L05.1 User-free Models Practice
·
AI/추천 시스템 설계
last.fm 데이터셋● last.fm: 온라인 음악 Database, 추천 서비스● HetRec 2011 에서 데이터셋 공개    ○ 92,800 artists, 1892 users    ○ https://grouplens.org/datasets/hetrec-2011/!wget https://files.grouplens.org/datasets/hetrec2011/hetrec2011-lastfm-2k.zip!unzip hetrec2011-lastfm-2k.zip 데이터 준비● artists 정보 불러오기artists = {}with open('artists.dat', 'r') as f: print(f.readline()) for line in f: id, name, _, _ = l..
L04.1 Implicit Feedback Practice
·
AI/추천 시스템 설계
Instance Reweighting ● 각 instance 별로 가중치 부여하기 ○ 어떤 (negative/positive) instance가 중요한가? ● 가중치는 휴리스틱에 근거하여 결정 Bayesian Personalized Ranking ● Idea: 사용자가 아이템을 싫어할지 여부를 맞추는 대신, 덜 좋아하는 정도를 맞춘다면 어떨까? ● Goal: 각 사용자 별로 개인화된 ranking function을 예측하기 ○ 아이템 i와 j를 함께 비교 ○ i: 사용자 u가 이미 본 아이템 ○ j: 사용자 u가 안 본 아이템 ○ i가 j에 비해 더 높은 점수를 가지도록 학습 ● Basic scheme: ○ 원래 데이터셋은 positive 만 있음 (u, i) ■ 즉, 사용자가 아이템을 봤다는 정보 ○ ..
L03.2 Rating Prediction Practice
·
AI/추천 시스템 설계
데이터 준비 ● ml-latest-small: 소규모 데이터셋 ○ 100,000 ratings, 9000 movies, 600 users ● wget: url로부터 파일을 다운로드 받는 쉘 명령어 ● unzip: zip 압축 파일을 해제하는 쉘 명령어 !wget https://files.grouplens.org/datasets/movielens/ml-latest-small.zip !unzip ml-latest-small.zip ● ratings.csv 에서 각 열을 각각 users, items, ratings에 numpy array 형태로 저장 import numpy as np users = [] items = [] ratings = [] with open("ml-latest-small/ratings.c..
L03.1 Rating Prediction Practice
·
AI/추천 시스템 설계
데이터 준비 ● wget: url로부터 파일을 다운로드 받는 쉘 명령어 ● unzip: zip 압축 파일을 해제하는 쉘 명령어 !wget https://files.grouplens.org/datasets/movielens/ml-25m.zip !unzip ml-25m.zip ● ratings.csv 에서 각 열을 각각 users, items, ratings에 numpy array 형태로 저장 import numpy as np with open("ml-25m/ratings.csv", "r") as f: print(f.readline()) # skip column names users = [] items = [] ratings = [] for line in f: uid, mid, rating, timestam..
L02.1 Finding Similar Items Practice
·
AI/추천 시스템 설계
MovieLens에서 사용자의 영화 별점을 예측하는 프로그램을 만들어보자. 우선 데이터셋을 다운받는다. !wget https://files.grouplens.org/datasets/movielens/ml-25m.zip !unzip ml-25m.zip 이 데이터는 sparse 데이터 셋이다. 전체 데이터셋 크기는 user수 x movie수 인데, 실제로 rating이 매겨진 곳은 훨씬 적기 때문이다. 이 상황에서 우리가 피어슨 유사도나 자카드 유사도를 빠르게 계산하는 방법에 대해서 알아볼 것 이다. 장르가 유사한 영화 찾기 ● 영화 제목(movies)과 장르(genresets) 불러오기 ○ csv (comma separated values) 파일: 값들을 쉼표로 구분한 텍스트 파일 movies에는 titl..
doocong22
두콩이의 코딩일기