목록Machine Learning/Pytorch (25)
elevne's Study Note

딥러닝을 구성하는 요소들을 표로 정리하자면 아래와 같다. 구분 구성 요소 설명 층 입력층 데이터를 받아들이는 층 은닉층 모든 입력 노드부터 입력 값을 받아 가중합을 계산하고 이 값을 활성화 함수에 적용하여 출력층에 전달하는 층 출력층 신경망의 최종 결과값이 포함된 층 가중치 노드와 노드 간 연결강도, 입력 값이 연산 결과에 미치는 영향력을 조절하는 요소 바이어스 가중합에 더해 주는 상수로, 하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절하는 역할을 함 가중합, 전달함수 가중치와 신호의 곱을 합한 것 함수 활성화 함수 신호를 입력받아 이를 적절히 처리하여 출력해주는 함수 손실 함수 가중치 학습을 위해 출력 함수의 결과와 실제 값 간의 오차를 측정하는 함수 위에서 활성화 함수, 손실 함수에..

이전에 알아본 K-means Clustering 은 거리기반으로 군집을 분석한 것이라면, DBSCAN (Density-Based Spatial Clustering of Applications with Noise) 은 일정 밀도 이상을 가진 데이터를 기준으로 군집을 형성하는 방법을 사용한다. K-means Clustering 과는 다르게 사전에 클러스터의 수를 알지 못할 때 사용하면 유용하며, 노이즈에 영향을 받지 않고, 주어진 데이터에 이상치가 많이 포함되었을 때 사용해도 좋다. K-means Clustering 에 비해 연산량이 많지만, K-means Clustering 이 잘 처리하지 못하는 오목하거나, 볼록한 부분을 처리하는데 유용하다고 한다. DBSCAN 을 진행할 때는 우선 엡실론 내 점 개수를..

비지도학습은 지도학습처럼 레이블이 필요한 것이 아니라, 정답이 없는 상태에서 훈련을 시킬 수 있는 방식이다. 비지도학습은 크게 Clustering 과 Dimensionality Reduction 으로 구분할 수 있다. Clustering (군집화) 은 각 데이터의 유사성을 측정한 후 유사성이 높은 데이터끼리 같은 집단으로 분류하는 것이고, Dimensionality Reduction 은 차원을 나타내는 특성을 줄여서 데이터를 줄이는 방식이다. 이러한 비지도학습의 다양한 알고리즘들에 대해서 하나씩 다시 공부하였고, 이번에는 K-means Clustering 에 대해서 복습해보았다. K-means Clustering 은 데이터를 입력받아 소수의 그룹으로 묶는 알고리즘이다. K-means Clustering ..

지난 시간에 이어 몇 가지 지도학습 기법에 대해서 더 알아보았다. 3. 결정트리 결정트리는 데이터를 분류, 결과값을 예측하는 분석 방법으로, 결과 모델이 트리 구조를 띄기 때문에 결정트리라고 불린다. 결정트리는 데이터를 1차로 분류한 후 영역의 순도(범주 내에서 같은 종류의 데이터만 모여있는 상태)는 증가하고 불순도(서로 다른 데이터가 섞여있는 상태)와 불확실성을 감소하는 방향을 학습을 진행한다. Decision Tree 에서 순도를 계산하는 방법에는 아래 두 가지 방법을 많이 사용하게 된다. Entropy: 확률 변수의 불확실성을 수치로 나타낸 것으로, 엔트로피가 높을수록 불확실성이 높다는 의미이다. 엔트로피의 값이 0 일 때 순도가 가장 높고, 0.5 일 때 순도가 최소값이 되는 것이다. Gini I..

SKlearn 라이브러리를 활용하여 간단하게 다양한 머신러닝 알고리즘을 활용해볼 수 있다. 1. KNN KNN(K-nearest neighbor) 은 새로운 입력을 받았을 때 기존 클러스터에서 모든 데이터와 인스턴스 기반 거리를 측정한 후 가자 많은 속성을 가진 클러스터에 할당하는 분류 알고리즘이다. 즉, 과거 데이터를 저장해두고 필요할 때마다 비교를 수행하는 방식을 채택한 것이다. 모델을 생성할 때 K 값을 지정해주어야 하는데, 모델은 새로운 데이터가 유입될 때 가장 가까운 K 개의 데이터를 선택하여 가장 많이 뽑힌 클러스터로 해당 데이터를 분류하게 된다. Sklearn 에서 자주 사용되는 예제 iris dataset 으로 이를 간단하게 테스트해볼 수 있다. 데이터 링크: https://raw.gith..

저번 시간에 데이터를 전부 준비해두었으니, 이제 모델을 작성할 차례였다. 아래와 같이 모델 클래스를 정의해주었다. class Model(nn.Module): def __init__(self, embedding_size, output_size, layers, p=0.4): super().__init__() self.all_embeddings = nn.ModuleList([nn.Embedding(ni, nf) for ni, nf in embedding_size]) self.embedding_dropout = nn.Dropout(p) all_layers = [] num_categorical_cols = sum((nf for ni, nf in embedding_size)) input_size = num_cate..

파이토치를 사용하여 간단한 분류 및 회귀 모델을 개발하는 방법에 대해 살펴보았다. 아래 링크에서 제공하는 car_evaluation.csv 데이터를 다운받아 진행하였다. 데이터는 7 개의 컬럼으로 이루어져있다. 링크: https://raw.githubusercontent.com/gilbutITbook/080289/main/chap02/data/car_evaluation.csv price (가격) maint (자동차 유지비) doors (자동차 문 수) persons (수용 인원) lug_capacity (수하물 용량) safety (안전성) output (차 상태: unac / acc / good / very good 으로 나누어짐) 필요한 라이브러리들을 import 한 뒤 데이터를 불러와보았다. imp..

저번 시간에 모델을 만들어 보는 코드까지 알아보았다. 이번에는 모델에 넣어줄 수 있는 파라미터들에 대해 알아보았다. 파라미터들로는 손실함수, 옵티마이저, 스케줄러, 메트릭을 넣어주어야 했다. 손실함수: 학습하는 동안 출력과 실제 값 사이의 오차를 측정한다. BCELoss: 이진 분류 CrossEntropyLoss: 다중 클래스 분류 MSELoss: 회귀 모델 옵티마이저: 데이터와 손실함수를 바탕으로 모델의 업데이트 방법을 결정한다. step() 메서드를 활용하여 전달받은 파라미터들을 업데이트하며, zero_grad() 메서드를 활용하여 옵티마이저에 사용된 파라미터들의 기울기를 0으로 만든다. 스케줄러를 활용하여 에포크에 따른 학습률을 조절할 수 있다. optim.Adadelta, optim.Adagrad..