목록Data/Machine Learning (8)
짜리몽땅 매거진
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qwYdq/btsIb3TzXOw/kVcFQNF9v525UxmKw8kHw1/img.png)
하이퍼파라미터 튜닝은 머신 러닝 모델의 성능을 최적화하는 중요한 과정이다. 하이퍼파라미터는 모델 학습 전에 설정되는 파라미터로, 학습 과정 자체를 제어한다. 이러한 하이퍼파라미터의 적절한 조정은 모델의 성능을 크게 향상시킬 수 있다. 하이퍼파라미터 튜닝의 중요성하이퍼파라미터 튜닝은 모델의 성능을 최대화하고, 과적합을 방지하는 데 중요하다. 특히, 대규모 데이터셋과 복잡한 모델에서 하이퍼파라미터의 영향이 크기 때문에, 적절한 튜닝 과정을 거치는 것이 중요하다. 이 과정은 시간과 자원이 많이 소모되기 때문에, 효율적인 방법을 선택하는 것이 중요하다. car_evaluation 샘플 데이터셋을 활용해 랜덤포레스트 모델링을 한 뒤, 하이퍼파라미터 튜닝을 진행해보자.1. 모델링from sklearn.ensembl..
모델 성능 평가란, 실제값과 모델에 의해 예측된 값을 비교하여 두 값의 차이를 구하는 것으로 과적합을 방지하고 최적의 모델을 찾기 위해 실시한다. 머신러닝 회귀 모델 평가 방법회귀 모델의 평가 지표로는 MSE, RMSE, MAPE 등이 있고 이 값들은 오차이기 때문에 값이 작을수록 해당 모델이 우수한 성능을 가지고 있다는 것을 의미한다. 1. MAE (Mean Absolute Error)실제값과 예측값의 차이에 대한 절대값의 평균from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_scoremae = mean_absolute_error(y_test, y_pred)print(f"MAE: {mae}") 2. MSE (Mean Squa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bAAYBl/btsH9VIadjj/9Jb2Rtm7XK5sOukBf6YEo0/img.png)
Kmeans알고리즘은 머신러닝 비지도학습에 속하는 K-means 알고리즘은 쉽게 말해 데이터를 K개의 군집(Cluster)으로 묶는(Clusting) 알고리즘이다. 군집이란 쉽게 말해서 비슷한 특성을 지닌 데이터들을 모아놓은 그룹(Group)이다. 마찬가지로 군집화는 군집으로 묶는다는 의미로 해석할 수 있다. Kmeans알고리즘은 KNN알고리즘과 구분하는 것이 중요한데, 분류와 군집화의 차이점에 대해 간단히 살펴보자.분류분류는 지도학습 방법에 속하여 정답이 주어졌을 때 정답을 기반으로 데이터를 나누는 방법을 의미한다. 따라서 머신러닝에서 모델을 학습시킬 때 모델이 제대로 분류하는지를 평가하기 위해 정답을 제거하고 모델이 예측한 레이블과 실제 레이블을 비교하여 모델의 성능을 판단한다.군집화반면, 군집화는 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bSOSiM/btsH8FfazAz/tqK70bOyp5LtJzpxPFgn7K/img.png)
KNN 알고리즘은 대표적인 거리기반 분류 모델로 거리를 기반으로 분류하는 알고리즘이며 따라서 상대적으로 거리가 더 짧은 이웃이 더 가까운 이웃으로 취급된다. 즉, KNN 알고리즘은 어떤 새로운 데이터로부터 거리가 가까운 K개의 다른 데이터의 레이블(속성)을 참고하여 K개의 데이터 중 가장 빈도 수가 높게 나온 데이터의 레이블로 분류하는 알고리즘이다.KNN 모델 성능의 주요 이슈1) 데이터 간의 거리는 어떻게 측정하는가 (거리 측정 방법)2) K 값의 크기는 어떻게 설정할 것인가 (탐색할 이웃의 개수)1) 데이터 간의 거리는 어떻게 측정하는가어떤 계산법을 사용하느냐에 따라서 이웃의 선택기준이 달라진다.2) 적절한 K 값의 크기는 어떻게 설정할 것인가K 값이 너무 작으면, 민감도가 높아서 잘못 예측할 확률이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3qTAg/btsH7Y0NxKF/RMzaRI8mxFiqMNSQTiYBGk/img.png)
Feature Selection이란 모델링을 진행하기 전 전처리단에서 유의미한 변수들만 선택함으로써 모델의 성능을 개선하고 과적합 방지 등의 효과를 얻기 위해 사용하는 방법을 말한다. 여러 Feature Selection 기법들을 실습 코드와 함께 살펴보자. 1. Filter Method통계 기법을 사용하여 상관관계가 높은 변수나 성능이 높은 변수를 추출하는 방법 (1) VarianceThreshold분산이 낮은 데이터는 도움이 안된다고 판단하여 제거하는 방법으로 titanic 샘플 데이터를 활용해 실습을 진행했다.from sklearn.feature_selection import VarianceThreshold#피처 정리X=titanic.drop(['survived','alive','who','adul..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6dNK4/btsHOMZH6pr/VGzA6iSjAbtaQgksCmLbAk/img.png)
데이터 스케일링이란 데이터 값의 스케일(범위)를 조정해주는 것이다. 피처 별로 값의 스케일이 다르다면, 머신러닝이 제대로 작동하지 않을 수 있기 때문에 데이터 스케일링 작업을 해주어야 한다. 데이터 스케일링은 주로 회귀 모델에 적용된다. 1. Standard Scaler데이터의 평균을 0, 분산을 1이 되도록 즉, 표준 정규분포를 따르드록 스케일링한다.from sklearn.preprocessing import StandardScalerStandardScaler = StandardScaler()df_mm = StandardScaler.fit_transform(x) #스케일링 작업, x는 종속변수x_mm = pd.DataFrame(data= df_mm, columns=x.columns) #스케일링된 값으로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/viVAy/btsHpnfFK2a/Xqgnph833U5tz9zOnoZYrk/img.png)
보통 머신러닝 모델링 프로세스는 다음 사진과 같이 진행된다. 문제 정의 후 데이터를 수집하고, 탐색적 데이터 분석(EDA)까지 진행했다면 중요 피처를 파악하는 피처 선택(Feature Selection)에 돌입한다. 중요 피처를 파악했다면 본격적인 모델링을 시작할텐데, 이때 우선적으로 진행해야하는 것이 바로 데이터셋 분리이다. 머신러닝 모델링을 마치고 모델의 정확한 성능 평가를 위해서는 train 세트와 test 세트가 필요하다. 우선 샘플 데이터셋을 활용해 train 데이터와 test 데이터로 나누는 방법을 알아보자.1. 필요 모듈 importfrom sklearn.model_selection import train_test_splitfrom sklearn.ensemble import RandomFo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Lu02J/btsGiceNVr4/Eez8xiP3kHXP41tlLDKOB0/img.png)
KNN 알고리즘과 K-means 클러스터링과 같은 머신러닝의 기초적인 모델들은 모두 거리기반 측정을 바탕으로 시작한다. KNN 알고리즘의 경우 가까운 속성에 따라 분류한다고 했는데 '가깝다'는 것에는 기준이 필요하다. 나중에 KNN 알고리즘에 대해 자세히 다루겠지만, KNN 알고리즘은 거리기반 분류분석 모델로 거리를 기반으로 분류하는 알고리즘이며 따라서 상대적으로 거리가 더 짧은 이웃이 더 가까운 이웃으로 취급된다. 즉, KNN 알고리즘은 어떤 새로운 데이터로부터 거리가 가까운 K개의 다른 데이터의 레이블(속성)을 참고하여 K개의 데이터 중 가장 빈도 수가 높게 나온 데이터의 레이블로 분류하는 알고리즘이다. K-means 알고리즘에서 K는 묶을 군집의 개수를 의미하고 means는 평균을 의미한다. 단어 ..