RandomForest의 크기 및 처리 시간 비교

개요



랜덤 포레스트를 사용한 예측의 정밀도에 관한 기사는 잘 나오지만 모델의 크기나 학습시·예측시의 시간에 대해 실려 있는 기사가 보이지 않았기 때문에 비교해 보았다.
이번에는 scikit-learn에 들어 있는 보스톤 데이터(레코드 수: 506, 컬럼 수: 13)를 사용하여 학습·예측을 실시한다.
RandomForest에서 잘 취급되는 파라미터의 n_estimators(나무 수)와 max_depth(최대의 나무의 깊이), 레코드수를 변화시켜 측정했다.
덧붙여 레코드수를 n=506, 5060, 50600으로 원래의 건수로부터 늘리고 있지만, 벌크 늘릴 때에는 각 값을 랜덤하게 10% 증감시켜 최대한 중복 데이터를 만들지 않게 하고 있다.

모델 크기





무작위 포리스트의 나무의 수와 모델의 크기는 단순히 비례한다는 것을 알 수 있습니다.
최대의 나무의 깊이와 모델 사이즈에 관해서는 깊이가 1개 커질 때마다 약 1.5배~2배가 되는 것을 알 수 있었다.
이것은 이분목의 최대 깊이가 1개 깊어질 때마다 노드의 수가 높게 2배가 되는 것과 레코드수가 많아질수록 분기가 늘어나는 것으로부터도 예상할 수 있다.

모델 작성 시 처리 시간




모델 작성의 처리 시간에 관해서는 나무의 수, 최대 깊이, 학습 데이터 사이즈 각각에 비례하고 있는 것 같다.

예측 시 처리 시간



예측시에는 n=5060으로 작성한 학습 모델을 사용하고, predict 함수를 사용하여 데이터를 예측할 때의 시간을 계측했다.

예측시의 처리 시간에 관해서도 나무의 수와 나무의 깊이에 대하여 처리 시간은 비례하고 있는 것을 알 수 있다.
한편으로 의외로 예측을 시키는 레코드수에 관해서는 일절 증가하지 않고, 시험에 1억 데이터 정도로 예측을 실시해도 처리 시간은 변하지 않았다.

마지막으로



사실은 컬럼수도 변화시키고 싶었지만 잘 하는 방법을 찾을 수 없었기 때문에 이번에는 스루했다.
이 결과는 당연히 데이터의 경향에 따라 달라질 것이라고 생각하기 때문에 참고까지 해 주었으면 한다.

좋은 웹페이지 즐겨찾기