Python(52)
-
Day 26 - 머신러닝 7 > XGBoost
이번 글에서는 머신러닝 알고리즘 중 XGBoost에 대해 다룰 것이다. XGBoost는 현재 가장 인기 있는 모델이자 성능이 검증된 부스팅* 모델로, 트리 기반 모델이기 때문에 종속 변수의 데이터 타입에 관계 없이 사용할 수 있으며 이미지/자연어를 제외한 표로 정리된 데이터의 경우 거의 모두에서 활용 가능하다. XGBoost는 또한 변수 종류가 많고 데이터가 클수록 더 뛰어난 성능을 보여주기도 한다. 하지만, 복잡한 모델이기 때문에 설명력이 떨어지고 하이퍼 파라미터 튜닝이 까다롭다는 단점이 있다. *부스팅: 순차적으로 트리를 만들어 이전 트리보다 더 나은 트리를 만들어내는 알고리즘이다. XGBoost 실습을 스피드 데이팅 커플 성사 데이터셋을 통해 진행했다.
2022.11.15 -
Day 25 - 머신러닝 6 > 랜덤 포레스트 (Random Forest)
이번 글에서는 머신러닝 알고리즘 중 랜덤 포레스트에 대해 다룰 것이다. 이제는 본격적으로 사람이 해석하거나 설명하기 어려운 알고리즘의 단계까지 도달했다. 랜덤 포레스트는 기본적으로 결정 트리를 확장한 것이라고 이해하는게 좋을 것 같다. 랜덤으로 생성된 무수하게 많은 트리를 앙상블 기법*을 통해 예측하는 알고리즘으로, 결정 트리의 오버피팅 문제를 해결할 수 있다. 트리모델이기 때문에 아웃라이어에 영향을 받지 않으며 종속변수의 데이터 타입에 관계 없이 사용할 수 있고, 데이터의 선형/비선형 관계를 구별하지 않는다는 장점이 있다. 다만, 속도가 느리고 모델 해석이 어렵다는 단점이 있다. 이 모델 해석의 경우에는 앙상블 기법을 사용하는 모델의 경우에는 공통적으로 적용되는 단점이라고 할 수 있다. *앙상블 기법:..
2022.11.14 -
Day 23/24 - 머신러닝 5 > 결정 트리 (Decision Tree)
이번 글에서는 머신러닝 알고리즘 중 하나인 결정 트리에 대해 정리할 것이다. 결정 트리는 각 변수의 특정 지점을 기준으로 데이터를 쪼개가면서 예측 모델을 만드는 알고리즘으로, 트리 기반 모델의 기본 모델이다. 다른 트리 기반 모델에 비해 예측력과 성능이 떨어지지만 다른 모델을 이해하기 위해 필요하며, 시각화에 용이하다. 종속변수의 데이터 타입에 관계 없이 사용 가능하며, 아웃라이어에 영향을 거의 받지 않는다는 장점이 있지만, 트리의 깊이가 너무 깊어지면 오버피팅이 발생할 위험성이 크다는 단점이 있다. Kaggle의 Salary 데이터를 활용하여 실습을 진행했다. 결정 트리의 장점과 단점을 너무나 잘 알 수 있는 실습이었다. 설명력이 높고 시각화에 유용하다는 장점도 확인했고, 오버피팅 문제가 일어나기 쉽다..
2022.11.12 -
Day 22/23 - 머신러닝 4 > 나이브 베이즈 (Naive Bayes)
이번 글에서는 머신러닝 모델 중 나이브 베이즈에 대해 다룰 것이다. 나이브 베이즈는 조건부 확률 기반의 분류 모델로, 스팸 필터링을 위한 대표적인 모델이라고 한다. 나이브 베이즈의 경우 속도가 빠르면서 작은 데이터셋으로도 잘 예측한다는 장점이 있지만, 모든 독립변수가 각각 독립적이라고 전제한다는 단점이 있다. 현실 세계에서 이런 데이터는 드물기 때문에 나름 치명적인 단점이라고 할 수 있겠다. 나이브 베이즈 실습은 SMS Spam Collection 데이터를 통해 진행했다. 나이브 베이즈 모델 자체의 개념은 조건부 확률의 개념만 명확히 알고 있으면 쉬우나, 언어데이터를 벡터화하는 과정이 전처리에서 추가된다는 점을 잘 알아두어야 겠다. 또한 아무래도 영어가 이런 분석에 있어 연구가 많이 진행되어 더 쉬운데,..
2022.11.09 -
Day 22 - 머신러닝 3 > KNN(K - Nearest Neighbors) (2)
이번 글에서는 Titanic 데이터를 활용해 KNN 모델링 연습문제를 푼 과정을 정리할 것이다. 이 연습문제 과정은 강사님의 도움을 받지 않고 수행했다. 이후 데이터 전처리를 진행했다. 그 후 세가지 스케일링 작업을 각각 수행했다. 마지막으로 KNN 모델 학습 후, 모델 평가를 진행했다. Titanic 데이터를 4번째 다루어보는데, 데이터 전처리는 항상 중요하다는 걸 다시 한 번 생각하게 되었다. PassengerId컬럼을 없애지 않고 진행한 것과 없애고 진행한 것의 결과가 달랐기 때문이다. 한 편, 서로 다른 머신러닝 방법임에도 로지스틱 회귀와 KNN 모델의 정확도가 거의 비슷하게 나왔다는 것이(KNN이 살짝 높긴 하다) 흥미로웠다.
2022.11.09 -
Day 22 - 머신러닝 3 > KNN(K - Nearest Neighbors)
이번 글에서는 머신러닝 알고리즘 중 KNN에 대해 다룰 것이다. KNN은 선형관계를 상정하지 않은 데이터셋에서도 활용할 수 있는 거리기반 머신러닝 모델로, 다중분류 문제에 적용 가능하다. KNN의 풀네임을 보면 유추할 수 있듯, KNN은 K개의 가장 가까운 데이터에 의해 결과값을 예측하는 알고리즘이다. 이 K값은 사용자가 지정할 수 있다. K개의 데이터를 하나하나 고려하여 예측하는 알고리즘이다보니, K의 값이 크고 데이터셋의 크기가 클 수록 속도가 느려진다. 따라서 작은 데이터셋에 적합하다. 또한 이상치에 취약하다는 단점이 있다. KNN 알고리즘 실습을 wine classification 데이터를 통해 진행했다.
2022.11.09