전체 글
[머신 러닝] 에이다 부스트 (AdaBoost)
Boosting 부스팅은 또다른 앙상블 기법입니다. 부스팅 역시 앙상블 기법이므로 여러 개의 모델을 씁니다. 부스팅은 일부러 성능이 안좋은 모델들을 사용합니다. Bagging과 마찬가지로 각 모델이 조금 다른 데이터를 써서 학습하는데, Bootstrap처럼 데이터를 임의로 만드는 게 아니라 먼저 만든 모델들이 어떻게 예측을 했냐에 따라 뒤에 만드는 데이터 셋이 결정됩니다. 또한, 모델들의 예측을 종합할 때 단순히 투표를 하는 게 아니라 성능이 좋은 모델의 예측을 더 반영합니다. 에다 부스트 (Adaboost) 에다 부스트에서도 수많은 결정 트리들을 만듭니다. 에다 부스트에서는 깊은 결정 트리가 아니라 루트 노드 하나와 분류 노드 두 개를 갖는 얕은 결정 트리를 사용합니다. 이런 식으로 하나의 질문과 그 ..
[머신 러닝] 랜덤 포레스트 (Random forest)
결정 트리와 앙상블 결정 트리는 이상적인 머신 러닝 모델이 되기에는 부정확합니다. 하지만 결정 트리를 응용하면 성능이 좋은 다른 모델들을 만들 수 있습니다. 결정 트리를 응용하는 대표적인 방법 중 하나는 앙상블(ensemble)이라는 방법이 있습니다. 앙상블은 하나의 모델을 쓰는 대신 수많은 모델들을 이용해서 예측을 한 후 여러 예측들을 합쳐서 종합적인 판단을 하는 것입니다. 랜덤 포레스트 랜덤 포레스트는 트리 앙상블 알고리즘 중 하나입니다. 랜덤 포레스트는 수많은 결정 트리를 임의로 만들고 다수결 투표로 결과를 종합하는 알고리즘입니다. 랜덤 포레스트에서 임의성을 더하는 요소에는 아래 두가지가 더 있습니다. Bootstrapping Bootstrapping은 갖고 있는 데이터 셋을 이용해서 조금 다른 데..
[머신 러닝] 결정 트리 (Decision tree)
결정 트리 결정 트리는 예/아니오로 답할 수 있는 어떤 질문들이 있고, 그 질문들의 답을 따라가면서 데이터를 분류하는 알고리즘입니다. 지니 불순도 (Gini Impurity) 결정 트리에서는 여러 질문들의 답을 따라가면서 데이터를 분류한다고 했는데요, 결정 트리를 만들 때 각 노드에 어떤 질문 또는 분류가 들어갈지를 어떻게 고를까요? 머신 러닝 프로그램이 결정 트리를 만들 때에는 경험을 통해 직접 정해나가야 합니다. 여러 데이터를 분류해보면서 각 위치에서 어떤 노드가 제일 좋을지를 결정하는 것입니다. 이를 위해서는 좋은지 안좋은지를 평가할 기준이 있어야 하는데요, 결정 트리에서는 이것을 지니 불순도(Gini Impurity)라고 합니다. 지니 불순도는 데이터 셋 안에 서로 다른 분류들이 얼마나 섞여있는지..
[머신 러닝] 그리드 서치 (Grid search)
하이퍼 파라미터 하이퍼 파라미터는 학습 전에 미리 정해줘야하는 변수 떠는 파라미터를 뜻합니다. Lasso 모델을 만들 때를 생각해보세요. alpha나 max_iter를 전달해줬었죠. 이 두 값은 모델이 학습해서 정하는 게 아니라 사람이 미리 정해줘야 했었죠. 이런 것들을 하이퍼 파라미터라고 합니다. 하이퍼 파라미터로 어떤 값을 사용하냐에 따라 모델의 성능이 크게 달라질 수 있습니다. 따라서, 모델의 성능을 최대한 높여주는 좋은 하이퍼 파라미터를 고르는 것이 굉장히 중요한데, 좋은 하이퍼 파라미터를 고르는 방법 중 하나인 그리드 서치를 알아보겠습니다. 그리드 서치 (Grid search) 그리드 서치는 꽤나 직관적인데, 우선 정해줘야 하는 각 하이퍼 파라미터에 넣어 볼 후보 값을 몇 개씩 정하고, 각 후보..
[머신 러닝] 테스트와 검증
홀드아웃 검증 (holdout validation) 홀드아웃 검증에서는 훈련 세트의 일부를 떼어내어 검증 세트(validation set)을 만듭니다. 검증 세트를 떼어내고 남은 훈련 세트에서 다양한 하이퍼파라미터 값을 가진 여러 모델을 훈련합니다. 그 다음 검증 세트에서 가장 높은 성능을 내는 모델을 선택합니다. 홀드아웃 검증 과정이 끝나면 이 최선의 모델을 전체 훈련 세트에서 다시 훈련해서 최종 모델을 만듭니다. 마지막으로 최종 모델을 테스트 세트에서 평가하여 일반화 오차를 추정합니다. 이 방법은 일반적으로 잘 작동하지만, 검증 세트가 너무 작은 경우 모델이 정확하게 평가되지 않을 것이고, 검증 세트가 너무 크면 검증 세트를 뗀 훈련 세트가 전체 훈련 세트보다 너무 작아지기 때문에 전체 훈련 세트에서..
[머신 러닝] 과소적합(underfitting), 과대적합(overfitting)
편향과 분산 직선 모델은 너무 간단해서 복잡한 곡선 관계를 학습하지 못한다는 한계가 있습니다. 모델이 너무 간단해서 데이터의 관계를 잘 학습하지 못하는 경우 그 모델은 편향이 높다 라고 합니다. 모델의 복잡도를 높여서 트레이닝 데이터의 관계를 완벽히 학습했다면 그 모델은 편향이 낮다 라고 할 수 있습니다. 그렇다면, 편향이 낮은 모델은 항상 편향이 높은 모델보다 좋을까요? 꼭 그렇지만은 않습니다. 각 모델이 처음 접하는 데이터인 테스트 데이터 셋에 대해서 모델의 성능을 평가해보면, 트레이닝 데이터의 관계를 완벽하게 나타내는 모델은 너무 트레이닝 데이터에 딱 맞춰서 학습되어있기때문에 처음 보는 테스트 데이터 셋에 대해서는 편향이 높은 모델보다 성능이 더 안좋을 수 있습니다. 이렇게 데이터셋별로 얼마나 일관..
[먹부림] 투고 샐러드 (TOGO SALAD) / 샐러드 맛집
TOGO 샐러드 명륜역점 원래 이 날 샐러드를 먹을 생각이 없었는데.. PCR 검사 하러 갔더니 보건소 점심시간이라 검사를 못받아서 밥먹으면서 기다리려고 찾아보다가 발견했다. 사실 별 기대를 안하고 들어갔지만 진짜 존맛이었다. 그리고 요즘 샐러드 가격이 고기는 쥐똥만큼 올려주고 치킨값을 받아먹는데 여기는 고기를 듬뿍 올려주고도 1국밥이었다. 대망의 투고 샐러드 메뉴판이다. 보통 메뉴판보면 고기 듬뿍 올라와있고 실제로 받아보면 쥐똥만큼 올라와있는데 여기는 진짜 저만큼 올라가있다. 그리고 시킬 때 드레싱을 고를 수 있는데 발사믹 / 오리엔탈 / 레몬 / 파인애플 / 분짜 중 하나를 고를 수 있다. 나랑 여자친구가 둘 다 고민하고 있으니까 사장님께서 친절하시게도 각자가 주문한 샐러드에 잘 어울리는 드레싱을 추..
[머신 러닝] 더 빠르게, 더 정확하게
데이터 전처리 데이터 전처리는 주어진 데이터를 그대로 사용하지 않고, 좀 가공해서 목적에 맞게 더 좋은 형태로 변형해주는 것입니다. Feature Scaling Feature Scaling은 입력 변수들의 크기를 조정해서 일점 범위 내에 떨어지도록 바꿔주는 것입니다. 예를 들어 연봉이랑 나이라는 입력 변수가 있다고 하겠습니다. 사람의 연봉은 몇천만원인것에 비해 사람의 나이는 몇십살밖에 안됩니다. 이렇게 너무 차이가 나는 게 모델 학습에 방해가 될 수 있기 때문에 Feature Scaling을 해서 입력 변수의 크기가 모두 일정 범위 내에 들어오도록 변형해주는 것입니다. Feature Scaling은 경사 하강법이 더 빨리 수행되도록 도와줍니다. 그 이유는 아래 사진을 참고하세요. 이미지 출처 Featur..