[ML] Feature Engineering
·
AI/ML
Feature Engineering머신러닝 알고리즘을 작동하기 위해 데이터에 대한 도메인 지식을 활용하여 특징(feature)를 만들어내는 과정이다.머신러닝 모델을 위한 데이터 테이브르이 컬럼(특징)을 생성하거나 선택하는 작업.모델의 성능을 높이기 위해 모델에 입력할 데이터를 만들기 위해 주어진 초기 데이터로 특징을 가공하고 생성하는 전체 광정. 특징 선택(Feature Selection)특징 랭킹 또는 특징 중요도라고도 불린다.분류 모델 중 Decision Tree 같은 경우는 트리의 상단에 있을 수록 중요도가 높으므로 이를 반영하여 특징 별로 중요도를 매길 수 있다. 회귀 모델의 경우 forward selection과 backward elimination 같은 알고리즘을 통해 특징을 선택한다. 특징 ..
[ML 06-1] 군집 알고리즘
·
AI/혼공파 머신러닝+딥러닝
타깃을 모르는 비지도 학습타깃을 모르는 사진을 종류별로 분류하려면 어떻게 해야할까? 타깃이 없을 때 사용하는 머신러닝 알고리즘을 비지도 학습(unsupervised learning)이라고 한다. 사람이 가르쳐 주지 않아도 데이터에 있는 무언가를 학습하는 것이다. 처음엔 데이터의 픽셀값을 이용해서 사진을 분류할 수 있겠다는 생각을 할 수 있을 것이다.과일 사진 데이터 준비하기다음은 사과, 바나나, 파인애플을 담고 있는 흑백 사진 데이터이다.이 배열의 첫번째 차원은 샘플의 개수를 나타내고, 두 번재 차원은 이미지 높이, 세 번째 차원은 이미지 너비이다. 각 픽셀은 넘파이 배열의 원소 하나에 대응한다. 즉 배열의 크기가 100 x 100이다.이 넘파이 배열은 흑백 사진을 담고 있으므로 0~255까지의 정숫값을..
[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..
[ML] 원-핫 인코딩(One-Hot Encoding)
·
AI/ML
이번 챕터에서는 범주형 데이터를 처리할 때 레이블을 표현하는 방법인 원-핫 인코딩에 대해서 배워봅시다. 1. 원-핫 인코딩(One-hot encoding)이란? 원-핫 인코딩은 선택해야 하는 선택지의 개수만큼의 차원을 가지면서, 각 선택지의 인덱스에 해당하는 원소에는 1, 나머지 원소는 0의 값을 가지도록 하는 표현 방법입니다. 예를 들어 강아지, 고양이, 냉장고라는 3개의 선택지가 있다고 해보겠습니다. 원-핫 인코딩을 하기 위해서는 우선 각 선택지에 순차적으로 정수 인덱스를 부여합니다. 임의로 강아지는 0번 인덱스, 고양이는 1번 인덱스, 냉장고는 2번 인덱스를 부여하였다고 해봅시다. 이때 각 선택지에 대해서 원-핫 인코딩이 된 벡터는 다음과 같습니다. 강아지 = [1, 0, 0] 고양이 = [0, 1..
[ML 04-1] 로지스틱 회귀
·
AI/혼공파 머신러닝+딥러닝
어떤 박스에 들어간 생선의 크기, 무게 등이 주어졌을 때 7개 생선에 대한 확률을 출력하려는 문제를 풀려고 한다. 이에 대해 k-최근접 이웃은 주변 이웃을 찾아주니까 이웃의 클래스 비율을 확률이라고 출력하면 되지않을까?라는 아이디어를 활용할 것이다. import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv_data') fish.head() 이 데이터 프레임에서 Species열을 타깃(정답값)으로 만들고 나머지 5개 열은 입력 데이터로 사용할 것이다([3]실행). 그리고 [5]실행 부분에서 훈련 세트와 테스트 세트로 나눈다. StandardScaler클래스를 사용해 훈련 세트와 테스트 세트를 표준화 전처리해주고 훈련 세트의 통계 값으로 테스트 세트도..
[ML 03-3] 특성공학과 규제 - 릿지(Ridge), 라쏘(Lasso)
·
AI/혼공파 머신러닝+딥러닝
이전 글에서 특성을 길이만 보니 일직선으로만 그래프가 그려서 성능이 좋지않아 길이를 제곱한 특성도 넣었더니 더 잘 예측하는 것을 확인할 수 있었다. 근데 여전히 훈련 셋보다 테스트 셋의 점수가 높았다.(underfitting) 이 문제를 해결하려면 제곱보다 더 고차항을 넣어야 할 것 같은데 얼만큼 더 고차항을 넣어야 할지모르고 수동으로 이렇게 고차항을 넣기도 힘들다. 그래서 가지고 있는 특성끼리를 서로 곱해서 또 다른 새로운 특성을 만드는 작업을 할 수 있다. 이 예제에서는 농어의 길이뿐만 아니라 농어의 높이와 두께도 함께 사용햇다. 그리고 3개의 특성을 각각 제곱하여 추가하고 각 특성을 서로 곱해서 또 다른 특성을 만들었다. 즉 '농어 길이 x 농어 높이'를 새로운 특성으로 만들 것이다. 이렇게 기존의..
[ML] 로지스틱 회귀(Logistic Regression)
·
AI/ML
일상 속 풀고자하는 많은 문제 중에서는 두 개의 선택지 중에서 정답을 고르는 문제가 많습니다. 예를 들어 시험 점수가 합격인지 불합격인지 정상메일인지 스팸메일인지 이렇게 둘 중 하나를 결정하는 문제를 이진 분류(Binary Classification)라고 합니다. 그리고 이진 분류를 풀기 위한 대표적인 알고리즘으로 로지스틱 회귀(Logistic Regression)가 있습니다. 로지스틱 회귀는 알고리즘의 이름은 회귀이지만 실제로는 분류(Classification) 작업에 사용할 수 있습니다. 1. 이진 분류(Binary Classification) 학생들이 시험 성적에 따라서 합격, 불합격이 기재된 데이터가 있다고 가정해봅시다. 시험 성적이 x라면, 합불 결과는 y입니다. 이 시험의 커트라인은 공개되지 ..
[ML] 커스텀 데이터셋(Custom Dataset)
·
AI/ML
1. 커스텀 데이터셋(Custom Dataset) 앞서 사용했던 torch.utils.data.Dataset과 torch.utils.data.DataLoader 외에 torch.utils.data.Dataset을 상속받아 직접 커스텀 데이터셋(Custom Dataset)을 만드는 경우도 있습니다. torch.utils.data.Dataset은 파이토치에서 데이터셋을 제공하는 추상 클래스입니다. Dataset을 상속받아 다음 메소드들을 오버라이드 하여 커스텀 데이터셋을 만들어보겠습니다. 커스텀 데이터셋을 만들 때, 일단 가장 기본적인 뼈대는 아래와 같습니다. 여기서 필요한 기본적인 define은 3개입니다. class CustomDataset(torch.utils.data.Dataset): def __in..
[ML] 미니 배치와 데이터 로드(Mini Batch and Data Load)
·
AI/ML
1. 미니 배치와 배치 크기(Mini Batch and Batch Size) 다중 선형 회귀에서 사용했던 데이터를 상기해봅시다. x_train = torch.FloatTensor([[73, 80, 75], [93, 88, 93], [89, 91, 90], [96, 98, 100], [73, 66, 70]]) y_train = torch.FloatTensor([[152], [185], [180], [196], [142]]) 위 데이터의 샘플의 개수는 5개입니다. 전체 데이터를 하나의 행렬로 선언하여 전체 데이터에 대해서 경사 하강법을 수행하여 학습할 수 있습니다. 그런데 위 데이터는 현업에서 다루게 되는 방대한 양의 데이터에 비하면 굉장히 적은 양입니다. 만약, 데이터가 수십만개 이상이라면 전체 데이터에 ..
doocong22
'ML' 태그의 글 목록