일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C#
- generic
- Python
- loop
- bash
- TypeScript
- machine learning
- security
- vuetify
- VUE
- 앙상블
- Clone
- webpack
- nginx
- C++
- vue.js
- JavaScript
- git
- BOJ
- leetcode
- type
- 보안
- property
- npm
- scss
- var
- AI
- docker
- condition
- dotenv
- Today
- Total
목록Development/Machine Learning (8)
ice rabbit programming
지난 글에서 앙상블 중 Bagging까지 정리했었다. 앙상블 - 부스팅(Boosting) 부스팅은 여러 개의 약한 모델을 합쳐서 강한 모델을 만드는 기법이다. 랜덤 포레스트 알고리즘이 사용된다. 랜덤 포레스트는 입력 변수에 대해서 복원 추출을 하는 알고리즘으로, 의사 결정 트리와 Bagging 알고리즘이 결합된 형태이다. 여러 개의 나무(트리)로 숲을 생성하는 의미이다. 1. 데이터 SET에서 Bootstrap을 통해 N개의 훈련 데이터 SET을 생성한다. 2. 생성한 N개의 의사 결정 트리를 학습한다. 3. 학습된 트리들의 예측 결과값의 평균 또는 다수결 투표 방식으로 결합한다. 이러한 절차를 거치고, 변수의 중요성(어떤 변수가 중요한지)을 파악할 수 있고 과적합을 방지할 수 있다는 특징을 가진다. A..
의사 결정 트리(Decision Tree)는 복잡하고 이해하기 어려운 모델들을 시각적으로 쉽게 이해할 수 있도록 해준다. 이진 트리(Binary Tree)와 비슷한 컨셉으로 생각하면 되는데, root node부터 출발해서 질문에 따라 분기되어 terminal node까지 연결된다. root node에는 모든 데이터가, terminal node에는 예측값이 들어 있다. 의사 결정 트리는 회귀, 분류 모두에 적용이 가능하다. 의사 결정 트리 - 회귀 위에서 아래로 갈수록 데이터의 구역을 나눈다. 특정 구역에 데이터가 있으면, 그 데이터의 예측값은 해당 구역의 평균값이 된다. 구역은 RSS(데이터 실제값과 예측값의 오차 제곱의 합)가 최소화 되는 구역을 선택 위에서부터 내려오면서 순간마다 최선의 선택(Gree..
차원 축소(Dimensionality Reduction)는 변수가 매우 많을 때 데이터를 압축하는 컨셉이다. 즉, 데이터를 압축하고 학습 속도를 개선하기 위함이다. 차원이 높을 때 발생하는 현상 중 하나로는 차원의 저주가 있다. 차원이 높을수록 학습에 요구되는 데이터의 개수가 증가되는데, 만일 고차원일 때 적은 개수의 데이터로 표현하게 되면 과적합(Overfitting)이 발생할 수 있다. 이러한 차원의 저주 발생을 방지하고, 학습 속도 및 성능 향상을 위해 차원 축소가 사용된다. 아래 두 가지 방법이 있다. 주성분 분석(Principle Component Analysis) PCA는 고차원 데이터를 가장 잘 설명할 수 있는 주성분을 찾는 방식이다. 즉, 차원을 축소하면서도 원본 데이터의 특징을 가지고 있..
이전 글들에서 회귀, 분류 등 지도 학습을 다루었었다. 이번 포스팅부터는 정답이 없는 데이터가 주어지고, 숨겨진 구조를 파악하는 비지도 학습(Unsupervised Learning)에 대해서 다룰 것이다. 이번 글은 군집, 클러스터링에 대해 다룰 것이다. 클러스터링은 크게 두 가지로 나눌 수 있다. 하드 클러스터링 : 특정 개체가 집단에 포함되는지 여부(포함or미포함) ex) K-means Clustering 소프트 클러스터링 : 특정 개체가 얼마나 포함되는지 속하는 정도로 표현 ex) GMM 클러스터링의 목표는 군집 간 유사성 최소화, 군집 내 유사성 최대화라고 할 수 있다. 즉, 다른 군집 간 데이터끼니를 최대한 서로 비슷하지 않게 하고 같은 군집 내의 데이터끼리는 서로 비슷하게 하는 것이 목적이다...
이전 글에서 SVM과 나이브 베이즈 분류에 대해서 다루었다. 이번 글에서는 KNN 기법을 정리하고 회귀 때와 마찬가지로 평가 기법에 대해서 작성하려고 한다. KNN KNN(K-Nearest Neighbor)는 기존 데이터 중에 가장 가까운 K개 이웃의 정보로 새로운 데이터를 예측하는 분류 기법이다. KNN은 한 가지 가정을 두고 분류하는데, 유사 특성 데이터는 유사 범주에 속하는 경향이 있다는 것을 전제로 한다. 예를 들자면 기존 데이터의 분류를 마치고, 새 데이터를 이전에 분류했던 기준에 따라 분류하는 경우라고 볼 수 있겠다. KNN을 아래와 같은 특징을 가진다. 직관적이고 복잡하지 않다. 해석도 꽤 쉬운 편에 속한다. K 값에 따라 성능이 크게 좌우된다. 딱히 학습이랄 것이 없는 Lazy Model이..
이전의 두 글에서 회귀에 대해서 다루었었다. 이번에는 지도학습의 다른 종류인 분류(Classification)에 대해서 다룰 것이다. 분류는 X에 따라 Y를 분류하는 것으로, 주어진 입력 값이 어떤 클래스에 속할지에 대한 결과 값을 도출하는 것이다. 즉, 어떠한 기준에 따라 0 또는 1의 값을 보내는 모델이다. 여기서 어떠한 기준을 결정 경계(Decision Boundary)라고 부르는데, 데이터를 분류하는 기준 값으로 0인지 1인지를 결정하는 기준 값이다. 보통은 확률 0.5를 기준으로 나눈다. 회귀의 분류에의 적용 이전에 다루었던 회귀를 분류에 적용할 수 있는 방법이 있는데, Logistic Regression이다. 회귀는 이론적으로 무한대의 값을 가질 수가 있으므로(선은 무한하니까), 분류에 사용하..
지난 글에서 회귀 분석의 모델에 대해서 간단하게 다루었고, 과적합에 대해서 얘기하며 포스팅을 마무리했었다. 이번 포스팅에서는 과적합 방지 기법부터 시작하여, 회귀 알고리즘을 평가하는 것에 대해 다루도록 하겠다. 과적합 방지 우선 과적합(Overfitting)을 방지하는 방법부터 시작할 것이다. 과적합은 지난 글에도 언급했듯이 모델이 훈련 데이터에 과도하게 맞추어져 있어, 일반성이 떨어지는 경우이다. 일반성을 증가시키기 위해 모델의 복잡성을 줄이거나 랜덤성을 높이는 것이 목적인데, 크게 두 가지를 꼽을 수 있다. 첫 번째로는 교차 검증(Cross Validation)이다. 훈련용 데이터와 별개의 테스트 데이터, 검증 데이터로 나누어 성능을 평가하는 방식이다. 일반적으로는 k-fold 교차 검증을 많이 사용..
현재는 AI와는 꽤 거리가 먼 직무를 맡고 있고, 그나마 있는 경험은 학부생 시절에도 관련 수업을 한두 개 들은 정도였다. 12월 한 달 동안 AI의 기초에 관한 강의를 수강할 기회가 있어, 배운 내용들을 정리 및 공유하기 위해 포스팅을 시작하려 한다. 일전에 한 달 정도 포스팅했던 typescript와 비슷할 것 같다. 다만, 지식 공유도 목적에 있기는 하지만 전문가가 아니고, 개념적인 내용 정리에 초점을 맞출 생각이기에 그림 등 시각 자료가 다소 부족하고, 코드가 부족할 수 있다. 프로그래밍에 종사하고 있지만 AI 관련 지식이 없는 사람으로서, 이해한 내용을 최대한 쉽게 정리하려고 했다는 장점이 있지만 좀 더 전문적이고 세세한 설명을 원하시는 분들은 다른 글을 찾아보심이 좋을 것이라 생각된다. 머신러..