Loading...
2021. 12. 6. 21:04

의사결정나무(decision tree)의 생성 원리

데이터가 무작위로 섞여있는 상태를 생각해봅시다. 이럴 때 우리는 무작위로 선을 그어 빨간색 데이터와 파란색 데이터를 구분하고자 합니다. 어떻게 그어야 가장 잘 분류를 했다고 말할 수 있을까요? 그러니까 빨간색과 파란색을 어떤 선을 그어서 구분을 해야 가장 잘 구분을 했다고 말할 수 있을까요? 직관적으로 한쪽 영역에는 순수하게 파란색만 존재하고 다른쪽 영역에는 순수하게 빨간색만 존재해야겠죠? 무작위로 섞여있는 불순물한 상태(impurity)에서 순수한 데이터들만 존재하도록 (purity) 영역을 구분하는 것이 데이터를 잘 분류한 것입니다. 다른 말로는 불확실하게 데이터가 섞여있는 상태에서 누구라도 확실하게 빨간색과 파란색을 알아볼 수 있도록 만드는 작업이 분류라는 것입니다. decision tree는 이러..

2021. 12. 2. 23:12

Pandas 기초 7편

1. groupby key별로 데이터를 각각 split하고 각각에 함수를 적용하여 결과를 합침 df.groupby((묶는 기준이 되는 열))[(적용받는 열)].(함수) 2개 이상의 열로 묶어낸 경우 리스트를 사용해서 넣어야한다 2. hierarchical index 두 줄 이상의 index를 가지는 dataframe unstack()으로 두줄의 index를 행과 열로 둔 matrix 형태로 바꿔줌 stack()을 하면 다시 원래 데이터프레임으로 되돌아옴 3. reset_index reset_index를 이용하여 index를 다시 데이터프레임의 변수로 만든다 4. swaplevel() swaplevel()하면 index level을 변경함 index level 기준으로 여러 기본 연산 수행이 가능 5. g..

2021. 11. 3. 20:57

CatBoost 모형

그 이름 Cat가 categorical feature를 뜻하는데 categorical 변수에 최적화되어있다고 논문에서 주장하고 있습니다. “ Two critical algorithmic advances introduced in CatBoost are the implementation of ordered boosting, a permutation-driven alternative to the classic algorithm, and an innovative algorithm for processing categorical features “ 논문에서 언급하는 ordered boosting은 일반적인 boosting이 모든 데이터 row에 대해 gradient 업데이트 과정을 거쳤다면 Catboost는 다음..

2021. 11. 1. 19:33

Gradient boosting 모형

기존 boosting이 model의 정확성을 점점 개선하는 방식으로 진행되었다면 gradient boosting은 그 이름에서도 알 수 있듯이 loss function을 정의하고 이것을 줄여나가는 방식으로 model을 학습해나갑니다. loss function은 딥러닝에서도 자주 사용하듯이 실제값과 예측값의 차이로 정의합니다. 예시 그림을 보면 이해하기 쉬울 것이라고 생각합니다. 위 그림에서 weight를 예측하는 model을 만든다고 합시다. 실제값과 예측값의 차이인 loss function을 최소로하는 최초 예측은 모든 weight의 평균값으로 예측하는 것이 제일 간단합니다. 여기서 평균은 71.2라고 합니다. 예측한 값과 실제 값들의 차이(이것을 residual 혹은 loss라고 부릅니다)를 각 ro..

2021. 11. 1. 19:25

Adaboost 모형

boosting 알고리즘 중에 여러개의 model을 만들어 voting시킨다는 것이 조금 이상하다는 생각이 들 수도 있을 것 같습니다. boosting에서 말한 알고리즘 중 두 번째 알고리즘이 Adaboost인데요. 조금 더 구체적이지만 아주 간단하게? 설명하자면 다음과 같습니다. 전체 train data에서 random하게 data를 뽑습니다. random하게 data를 뽑은 sample로 하나의 model A를 학습합니다. 참고로 Adaboost에서 사용한 model A는 random forest가 완전한 tree를 사용하던 것과는 조금 다르게 두 개의 leaf만 가지는(1번만 분기하는) stump라는 tree를 사용합니다. 학습한 A로 전체 train data에 대해 validation을 수행합니다..