본문 바로가기

Machine Learning

(12)
[알고리즘] 임베딩과 손실함수 선택하기 #4 알고리즘은 크게 분류(Classification)과 회기(Regression)으로 나눌 수 있다. 이러한 알고리즘을 사용하여 데이터를 학습하고, 서비스하기 위해서는 임베딩 작업과 손실함수를 선택하는 것이 필수다. 다만 임베딩을 위한 인코딩 방법이나 손실함수의 종류가 다양하기 때문에 Case에 따라 선택방법을 정리해 본다. "Classification vs Regression" 분류와 회기는 N개의 입력값을 M개로 출력값으로 변환한다는 점에서 유사하다. 하지만, 분류는 출력값(y1, y2 ... ym)을 "0~1" 사이값으로 출력하며, 모든 출력값의 합이 "1"된다. 즉 분류 알고리즘의 출력값은 확률값으로 이해해도 무방하다. 이와는 다르게 회기 알고리즘의 출력값(y1, y2 ... ym)은 범위가 없는 연..
[알고리즘] Merge를 통한 데이터 Filtering & Mapping #3 "데이터프레임 병합", pd.merge() 활용! A와 B 두 개의 데이터 소스가 있다. 예를 들어 A는 1일 동안 우리 회사의 "과자"를 구매한 고객들의 정보이고, B는 1일 동안 "음료"를 구매한 고객들의 정보라고 하자. 이때 과자와 음료를 구매한 고객이 추가로 구매할 상품이 무엇인지 알고 싶다면? 이 경우 Classifcation 알고리즘을 사용해서 추가 상품을 예측하는 모델을 만들 수 있다. 또한 모델 학습을 위한 학습 데이터, "과자와 음료를 구매한 고객 정보와 그 고객이 추가 구매한 상품 정보"가 필요하다. 따라서, 1일 동안 과자를 구입한 고객과 음료를 구입한 고객 정보를 합쳐서 하나의 데이터셋을 만들어야한다. 생성할 수 있는 데이터는 3가지로 구분할 수 있다. 과자와 음료를 모두 구매한 고..
[알고리즘] 알고리즘을 활용한 AI모듈 개발 방법 #2 알고리즘 개발? 알고리즘을 활용한 모듈 개발? 어찌되었든 내가 생각하는 최선의 개발환경을 구성하는 방법을 정리했었다. https://jarikki.tistory.com/47?category=959329 [알고리즘] 로컬 개발 환경 구축 #1 머신러닝과 딥러닝 알고리즘을 활용하는 방법과 알고리즘을 탑재한 AI모듈을 개발하는 방법을 정리한다. AI모듈 개발에 필요한 구성 요소를 나름대로 정리해 보았다. AI 모델 개발을 위한 구성요 jarikki.tistory.com 이제 실제 AI 서비스를 위한 모듈 개발 방법에 대해 나름의 방법론을 정리해 본다. AI 서비스를 개발하기 위해 우리는 Keras, Pytorch 등 다양한 프레임워크를 사용할 수 있다. ML 프레임워크의 사용 방법과는 별개로 어떻게 하면 조금..
[알고리즘] 로컬 개발 환경 구축 #1 머신러닝과 딥러닝 알고리즘을 활용하는 방법과 알고리즘을 탑재한 AI모듈을 개발하는 방법을 정리한다. AI모듈 개발에 필요한 구성 요소를 나름대로 정리해 보았다. AI 모델 개발을 위한 구성요소 실행모듈 : 알고리즘을 활용하여 Training을 하거나, Surving(예측, 추론 등)을 하기 위한 로직을 담당하며, 학습모듈, 예측모듈, 유틸리티모듈로 구성됨 모델 : 회기분석, 클러스터링 등 개발 목적에 적합한 Algorithm Libraray 또는 Package 모음으로 구성(예: KcElectra, Kmeas, BERT 등) 데이터 : 모델 학습 또는 예측을 위해 Trainig, Test, Validation 또는 Surving에 사용할 원본 데이터(정형/비정형 데이터) (참고) 유틸리티 모듈이란 원본 ..
[알고리즘] 컨볼루션 신경망(CNN, Convolution Neural Network) CNN은 이미지(영상)를 분석하기 위한 패턴을 찾아 이를 직접 학습하고, 학습한 패턴을 이용하여 이미지를 분류한다. CNN은 Convolution Layer, Pooling Layer(Sub Sampling), Fully Connected Layer 를 사용하여 사람의 시각처리방식을 모방한 딥러닝 학습 모델이며, 이미지(영상) 분류에 적합한 딥러닝 모델이다. Convolution Layer는 이미지의 특징점을 찾기 위해 사용되고, Pooling Layer는 이미지 처리에 필요한 가중치와 연산량을 줄이기 위해 사용되며, Fully Connected Layer는 이미지를 분류하기 위해 사용된다. 1. Convolution Layer 컨볼루션 레이어는 입력 이미지를 특정 Filter(Kernel)를 이용하여 ..
[알고리즘] SVM(Support Vector Machine) 경계로 공간을 나누기 위한 방법을 제공하는 SVM은 분류에 적합한 머신러닝 지도학습 모델이다. SVM은 서포트벡터를 이용하여 결정경계를 정의하고 데이터를 분류하는 학습방법으로 어떻게 결정경계를 설정하는지가 가장 중요한 성능 결정사항이다. 용어정의 결정경계(Desicion Boundary) : 분류를 위한 기준 선 Support Vectors : 결정경계와 가까이 있는 데이터들 Margin : 결정경계와 서포트벡터 사이의 거리 Hard Margine : 이상치(outlier)를 허용하지 않는 마진 Soft Margin : 이상치(outlier)를 허용하는 마진 파라메터 C : scikit-learn에서 SVM 모델의 이상치 허용 값 설정(C값이 클수록 hard margin) 커널(Kernel) : 결정경계..
[알고리즘] 주성분 분석(PCA) PCA(Principal Component Analysis), 주성분 분석이란 차원 축소 방법의 하나로써 많은 Feature(특성)로 구성된 다차원 데이터-셋의 차원을 축소하여 불필요한 Feature를 제거하여 새로운 데이터-셋을 생성하는 방법이다. 객체의 모든 특성이 학습을 위해 모두 필요하지도 않고, feature 가 증가할 수록 오히려 예측 신뢰도가 저하되거나 Overfitting이 발생할 가능성이 높기 때문에 이를 방지하고 시각화, 노이즈 제거, 모델 성능을 향상 하기 위해 PCA를 사용할 수 있다. PCA 원리 2차원의 데이터-셋을 1차원으로 줄이는 방법은 x, y 좌표로 구성된 2차원 데이터를 1차원의 선으로 사영(Projection)하는 것이다. 좌표 공간에는 서로 다른 방향의 수많은 선이 ..
AI란 인공지능, 머신러닝, 딥러닝에 대한 사내 세미나가 매 주 진행된다. 연구소의 구성원들이 각자 학습한 내용을 공유하는 자리로 이제 시작하는 만큼 기본적인 내용 부터 차근차근 학습하며 정리할 수 있는 좋은 기회인 것 같다. 세미나를 통해 얻은 지식들을 잊지 않도록 조금씩 정리해 본다. Artificial Intelligence 인공지능의 개념은 1956년 다트머스 회의에서 존 매카시라는 분이 '인공지능'이라는 용어를 처음으로 사용하면서 '인텔리전트한 기계를 만드는 과학과 공학'이라는 개념으로 알려지게 된다. 지금까지 인공지능은 단순히 제어 프로그램을 탑재하는 형태에서 지식을 활용한 탐색과 추론을 통해 고정적인 패턴을 정의한 형태를 지나 사람의 지도 아래 데이터를 학습할 수 있는 알고리즘을 적용한 형태로 발전..