목록분류 전체보기 (408)
오답노트
DBSCAN k-means 에서는 k 값을 알아야만 제대로 데이터들을 분리할 수 있었다. 하지만 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)은 k값을 몰라도 데이터를 분류해 낼 수 있다. DBSCAN 절차 (출처 : http://primo.ai/index.php?title=Density-Based_Spatial_Clustering_of_Applications_with_Noise_%28DBSCAN%29) 임의의 한 점으로 부터 시작 반경 범위내에 최소 포인트 수가 존재하는지 확인 존재한다면 포인트들을 중심으로 다시 원을 그려 최소 포인트 수 확인 2~3 반복 존재하지 않으면 군집에 포함되지 않은 점으로 이동하면 1~4 반복 어느 ..
웹 크롤링 강의는 전반적으로 만족스러웠다. 강사님께서는 웹크롤링뿐만 아니라 파이썬에 대한 팁들도 조금씩 주시고, 친절하긴 하지만 조금 사무적인 분으로 인식하고 있었는데, 잠깐씩 쿨다운으로 조금의 유머를 선보이곤 하셨다. 덕분에 좋은 환기가 되었고 수업에 집중도도 올라갔다고 생각한다. AI에 대해 관심을 막 가지기 시작했을 때는 어떻게 웹에 있는 자료들, 특히 이미지나 문구같은 것들을 학습시킬 수 있는지 의문이였다. Python에 다 라이브러리로 제공하고 있었고 조금의 웹 지식이 있으니 금방 이해가 됐다. 그러나 배운 것을 토대로 다른 웹페이지에 크롤링을 실습하려고 하니 뜻대로 잘 되진 않았다. 배울 때와 실습을 다르다는 걸 다시 한번 느끼는 때였다. 데이터 처리 강사님께서는 원격으로 수업을 진행하다보니 ..
k-means (출처 : https://stanford.edu/~cpiech/cs221/handouts/kmeans.html ) k-means는 데이터를 좌표평면에 위치시킨 후 임의의 위치에 k개 점을 찍는다. 그리고 각 데이터들은 k개의 점들중에 가장 가까운 점에게 군집된다. 그 후 k 개의 점은 군집된 데이터들의 중심 위치로 재위치 시킨다. 그리고 다시 데이터들이 k개의 점들중 가장 가까운 점에게 군집되는 과정을 중심 위치의 변화가 거의 없을 때까지 반복한다. 위 과정이 걸리는 시간은 매우 빠르지만 k는 모델링을 할 때 우리가 정해줘야한다. (비지도인데 지도를 해야한다니..) k 값 선정 방법 Inertia value를 통해서 k 값을 유추해 볼수있다. Inertia value는 군집화가 된 후, 각..
Gradient Boost Gradient Boost는 Boosting 기법에서 모델을 Dicision Tree를 사용하는 알고리즘이다. xgboost Gradient Boost를 모델링할 수 있는 라이브러리이다. 간단하게 불러오는 방법과 hyper parameter를 알아보자 from xgboost import XGBClassifier model = XGBClassifier(n_estimators = 5,max_depth=3,learning_rate = 0.3) pred = model.predict(x_val) print(classification_report(y_val, pred)) ''' precision recall f1-score support 0 0.71 0.72 0.72 769 1 0.70 ..
Boosting 부스팅은 여러 모델을 결합해서 오차를 줄이는 모델을 구성하는 방식이다. 모델의 개수에 따라 성능과 예측 결과가 달라진다. (출처 : https://towardsdatascience.com/boosting-algorithms-explained-d38f56ef3f30) 위 사진은 부스팅의 원리를 설명하고 있다. 우선 모델1은 train 데이터를 받아 학습한다. 그리고 실제값과 예측값의 차이를 모델2의 실제값으로 사용한다. 모델2는 train 데이터를 받아 학습하고, 모델1에서 나온 결과와 예측값의 차이를 모델3의 실제값으로 사용한다. 이 과정을 계속 반복하여 모델들의 예측값을 모두 더한 값을 최종 예측값으로 한다. 모델의 개수는 Hyper Parameter로 지정할 수 있고, 모델의 개수가 ..
Random Forest Bagging 알고리즘에서 모델에 Dicision Tree를 사용한 것이 Random Forest다. 기존 Dicision Tree는 모든 Feature들 중에서 Information gain이 제일 높은 Feature를 선택했다. 하지만 Random Forest에서는 무작위로 선택된 n개의 Feature들 중에서 Information gain가 제일 높은 Feature를 선택한다. Information gain가 상대적으로 낮은 Feature도 모델링 된다는 것을 의미한다. 이 때 무작위로 선택하는 n의 개수가 작을 수록 더 랜덤한 모델이, 클 수록 대부분 비슷한 모델이 만들어진다. RandomForestClassifier(Regressor) from sklearn.ensemb..
앙상블 여러 개의 모델을 학습시켜 그 모델들의 예측 결과로 더 정확한 모델을 반드는 방법이다. Bagging (Bootstrap Sample Aggergating) Bagging 이라는 단어는 Bootstrap Sample Aggergating의 줄임말이다. Bootstrap Sample은 train 데이터에서 여러 개의 샘플 데이터로 나누는 것을 의미한다. 그리고 여러 개의 샘플 데이터를 각각의 모델을 사용해 학습한다. 여러 개의 모델에서 예측된 결과들을 평균(투표)을 구하는 것이 Aggergating이다. (출처 : https://www.geeksforgeeks.org/ml-bagging-classifier/)
복잡도 모델의 복잡도는 train 데이터의 패턴을 반영하는 정도이다. 알고리즘 마다 복잡도를 조절하는 방법은 다르다. 모델의 복잡도가 높다고 무조건 성능이 좋은 모델이라고 할 수 없다. 과적합 복잡도가 높아질 수록 과적합이 나타나기 쉽다. 그렇다고 복잡도가 너무 낮으면 접합도가 너무 낮아 예측을 제대로 못 할 가능성이 크다. 즉 적절한 적합도를 찾아야 성능이 좋은 모델을 만든다고 볼 수 있다. 그렇다면 어떻게 해야 적절한 적합도를 찾을 수 있을까? 위 그래프는 복잡도가 증가함에 따라 train과 validation 데이터에 대한 Accuracy 변화량을 표현한 그래프이다. 복잡도가 커짐에 따라 train 데이터의 Accuracy는 1에 가까워져 더 정확한 예측을 하지만, validation 데이터의 Ac..
Learning Curve Cross Valdation을 통해서 모델 성능 편차를 줄였다면, 모델 예측에 대한 오차를 줄여야한다. 이 때 데이터를 늘리는 것으로 오차(Bias)를 줄일 수 있다. (출처 : https://www.geeksforgeeks.org/using-learning-curves-ml/) 위 그래프는 KNN 알고리즘으로 범주형 데이터를 예측했을 때 데이터의 크기와 Accuracy에 대한 관계를 나타내는 그래프이다. 데이터의 크기가 어느정도 충족되면 Accuracy가 더 이상 증가하지 않는다는 것을 보여주고 있다. 즉, 데이터가 많다고 좋은 것이 아닌 적절한 데이터의 양으로도 충분히 신뢰성이 높은 Accuracy를 얻을 수 있다. 또, Accuracy가 낮다고 판단되면 데이터를 추가하여 ..
k-fold Cross Validation 모델링을 할 때, 데이터 셋을 train과 test로 나누고, train 데이터는 다시 train 과 validation 데이터로 나눠서 모델링한다. k-fold Cross Validation은 train을 k개로 나누고 차례대로 validation으로 선택하고 성능을 평가한다. 이렇게 k 개의 Accuracy 평균을 측정한다. Cross Validation은 Accuracy의 편차를 많이 줄여준다. Accuracy 편차가 줄어든다는 의미는 모델의 성능의 신뢰도가 올라간다는 의미다. k 값은 보통 5 ~ 10 사이에서 많이 사용된다. from sklearn.model_selection import cross_val_score from sklearn.tree im..