목록ML & DL (19)
코딜기

랜덤 포레스트 (Random Forest)란 무엇일까요? 랜덤 포레스트는 분류, 회귀 문제에 모두 사용할 수 있는 강력한 모델입니다. 이전 포스팅에서 다뤘던 의사결정 나무를 여러개 사용하여 문제를 해결하는 방식으로 작동합니다. 랜덤 포레스트는 의사결정 나무가 여러개 모인 숲입니다. (의사결정 나무의 앙상블 모델) Decision Tree는 나무 하나로 예측을 했다면 Random Forest는 여러 나무를 통해 종합된 결과를 바탕으로 예측합니다. 과적합이 될 가능성이 높은 의사결정 나무의 단점을 보완한 모델입니다. 학습 데이터의 부분집합을 랜덤하게 만들어 의사결정 나무를 구축하는 배깅(Bagging) 계열의 트리 모델입니다. 분류 모델에서는 각 트리의 결과값의 다수결로 최종 분류가 이루어집니다. 회귀 모델..

의사결정 나무(Decision Tree)란 무엇일까요? 의사결정 나무(Decision Tree)는 분류, 회귀 문제에 모두 사용할 수 있는 강력한 모델입니다. 의사결정 나무는 입력 변수를 특정한 기준으로 분기해 트리 형태의 구조로 분류하는 모델입니다. 불순도 (Impurity, Entropy) 불순도란 정보 이론에서 말하는 얻을 수 있는 정보량의 정도를 뜻하고, 이는 분기된 하나의 범주안에 서로 다른 데이터가 얼마나 섞여있는지를 의미합니다. 하나의 범주에 여러 종류의 데이터가 속해있으면 불순도는 높아집니다. 데이터를 분기할 때 현재 노드보다 자식 노드의 불순도가 감소되도록 분기해야 합니다. 불순도를 수치적으로 나타낼 수 있는 함수가 불순도 함수이고, 지니계수와 엔트로피 계수가 있습니다. 1. 지니 계수 ..

서포트 벡터 머신(Support Vector Machine)이란 무엇일까요? 서포트 벡터 머신(이하 svm)은 분류, 회귀 문제에 모두 사용할 수 있는 강력한 모델입니다. 데이터를 구분 짓는 가장 올바른 결정 경계는 무엇일까요? 사실 '올바르다'라는 기준은 각 모델마다 다르겠지만 계속해서 새로운 데이터가 입력이 되었을 때 모두 비슷한 예측력을 갖게 하는 결정 경계가 올바른 결정 경계라고 할 수 있습니다. 바로 이 올바른 결정 경계를 정의하고, 만들어 주는 모델이 서포트 벡터 머신입니다. 그렇다면 최적의 결정 경계는 어떻게 만들 수 있을까요? 학습용 데이터를 통해 각 클래스 사이의 가장 근접한 벡터를 찾아내고, 이 두 벡터를 지나는 각각의 직선을 그립니다. 그려진 두 개의 직선이 평행하도록 만들어준 후 정..

데이터를 왜 train data / valid data / test data로 나눌까요? 경진대회에서는 보통 train data와 test data를 기본적으로 나눠서 제공합니다. train data로 모델을 학습시키고, 학습된 모델을 통해 제공받은 test data를 예측하여 제출하는 방식으로 진행됩니다. 1. train data와 test data의 쓰임 예측이 필요한 데이터를 모델에 적용시키려면 모델을 학습시킬 데이터가 필요한데 이를 train data라고 합니다. 학습된 모델을 가지고 예측을 하는데 예측 과정에서 쓰이는 데이터를 test data라고 합니다. train data에는 예측해야 하는 변수가 포함되어있지만 test data에는 포함되어있지 않는 것이 특징입니다. train data로 모..

로지스틱 회귀(Logistic Regression)란 무엇일까요? 분류 데이터에 선형 회귀모형을 적용시켰을 경우 종속변수의 특성이 무시당하는 경우가 생기기도 합니다. 이를 해결하기 위해 예측 확률을 종속변수의 값 증감에 따라 함께 증감하고, 0과 1 사이의 값을 갖는 확률로 변환하여 변수의 특성을 고려해줍니다. 로지스틱 회귀 모델은 Odds라는 상대적인 비율 개념을 이용해 선형 회귀 모델을 변형시킨 모델입니다. Odds 식에 자연로그 ln을 씌워 기존의 회귀식에서 Y위치에 치환해줍니다. 아를 로짓 변환이라고 합니다. 위 식을 Y에 대해 정리하면 시그모이드 함수(Sigmoid Function)가 됩니다. 시그모이드 함수 : S자 또는 시그모이드 곡선을 갖는 수학 함수 로지스틱 회귀모형 : 시그모이드 함수의..

범주형 변수는 왜 인코딩을 해야 할까요?? 범주형 변수를 분류 모델에 넣으면 모델은 데이터를 인식하지 못하고 에러가 발생합니다. 이를 해결하기 위해 범주형 변수를 수치형 변수로 인코딩 처리를 해줘야 합니다. 인코딩 방법으로 대표적으로 Label Encoding과 One-hot Encoding이 있습니다. Label Encoding n개의 범주형 데이터를 0 ~ n-1의 연속적인 수치 데이터로 표현합니다. 인코딩 된 데이터들 간의 차이가 수치적인 차이가 아니기 때문에 데이터의 범주가 3개 이상일 때는 주의해서 사용해야 합니다. 두 개의 범주일 때는 독립적인 의미로 사용이 가능합니다. 라벨 인코딩은 한번 실행시킬 때 단 하나의 컬럼만 실행이 가능합니다. 트리 결정 나무의 분류 모델에서는 범주가 3개 이상이어..
데이터 전처리 과정에서 결측치 처리는 왜 해야 할까요?? 데이터의 결측은 모델 학습과정에서 문제를 일으킬 수 있습니다. (결측치를 고려하여 예측을 하는 모델도 있습니다.) 이를 해결하기 위해 여러 방법으로 결측치 처리를 해줘야 합니다. 결측치 처리 방법으로 크게 제거(Deletion)와 대치(Imputation)가 있습니다. 이전 포스팅에서 결측치를 확인하는 방법과 제거를 통한 처리 방법을 포스팅했으므로 이어서 대치를 통한 처리 방법을 포스팅하겠습니다. 대치 (Imputation) 1. 평균을 이용한 대치 평균은 중심에 대한 경향성을 알 수 있는 척도입니다. 하지만 평균은 모든 관측치의 값을 모두 반영하므로 이상치의 영향을 많이 받기 때문에 주의하여 사용해야 합니다. 평균을 이용하기 때문에 수치형 변수만..

데이터 전처리 과정에서 결측치 처리는 왜 해야 할까요?? 데이터의 결측은 모델 학습과정에서 문제를 일으킬 수 있습니다. (결측치를 고려하여 예측을 하는 모델도 있습니다.) 이를 해결하기 위해 여러 방법으로 결측치 처리를 해줘야 합니다. 결측치 처리 방법으로 크게 제거(Deletion)와 대치(Imputation)가 있습니다. 결측치 확인 1. isna() 사용 데이터 프레임 내에 결측 값을 확인하여 그 결과를 True / False로 반환합니다. isna()를 따로 사용하기보다 sum()을 같이 사용하여 주로 결측치의 개수를 파악합니다. import pandas as pd # 데이터 프레임 개별값들의 결측 여부(True/False)를 알고 싶을 때 사용 pd.isna(data) # 컬럼별로 결측치 갯수를..

데이터 전처리 과정에서 스케일링은 왜 해야 할까요?? 수치형 변수의 크기(단위)가 변수마다 다르다면 종속 변수에 미치는 영향력이 제대로 표현되지 않을 수 있습니다. 이를 해결하기 위해 모든 변수의 범위를 조절해주는 과정이 스케일링입니다. 스케일링은 분포의 모양을 바꿔주진 않습니다. Scikit-learn에서는 여러 종류의 스케일링 함수를 제공하고 있지만 가장 많이 쓰이는 Min-Max Scaling과 Standard Scaling을 다뤄보겠습니다. Min-Max Scaling 변수의 범위를 바꿔주는 정규화 스케일링 기법입니다. (기본값은 0~1입니다.) 이상 값 존재에 민감합니다. 분류 모델보다 회귀 모델에 적합합니다. 보통 이미지쪽에서 쓰입니다. Scaling은 값을 조정하는 과정이기 때문에 수치형 변..