Python을 이용한 SVM (2)

요구사항

  1. 이 과제는 제가 anomaly detection 데이터셋(캐글에 올라와있음)을 드립니다. 이것은 해당 결제가 사기인지 아닌지 판별하는 데이터셋이며, 실습코드를 활용하고, 또 본인이 여태 배운 내용을 활용하여 자유롭게 데이터를 가지고 연습해주시면 됩니다.

  2. 다만 이 데이터셋은 굉장히 imbalance한 데이터 셋입니다. 실제 사기를 치는 사례가 많지 않으므로 사기인 경우가 전체에 0.17 프로밖에 되지 않습니다. 따라서, 그냥 데이터를 트레이닝 시키면 무조건 사기가 아니라고 판별해 버릴 가능성이 높습니다. 또한, 그대로 트레이닝을 돌리게 되면 엄청나게 많은 데이터 양 때문에 트레이닝조차 힘들 것입니다. 그런데 실제로 정확도를 높이면서 트레이닝을 할 수 있는 방법이 있으니 고민해보세요.

우수과제 선정이유

confusion matrix를 쓴 이유 등을 구체적으로 적어줬고, weight를 줘보는 방법(원래 의도했던 방법)을 시도해보고 하이퍼 파라미터 튜닝도 exponential하게 함으로써 좋은 parameter를 잘 찾는 등 전반적으로 깔끔하고 군더더기없이 과제를 진행해 우수과제로 선정되었습니다.

In [2]:

In [3]:

In [4]:

In [5]:

Out[5]:

In [6]:

In [7]:

Out[7]:

In [8]:

Out[8]:

In [9]:

In [10]:

In [11]:

Out[11]:

In [12]:

Weight

svc의 class_weight를 통해 적게 관찰되는 경우에 weight를 준다

In [13]:

Out[13]:

In [14]:

Out[14]:

In [15]:

RandomUnderSampler

RandomUnderSampler를 통해 0, 1 사이의 대칭을 맞춰준다.

In [16]:

In [17]:

In [18]:

Out[18]:

In [19]:

In [20]:

Out[20]:

In [21]:

Out[21]:

In [22]:

In [23]:

Out[23]:

Undersampling으로 인해 weight의 여부가 결과에 변화를 주지 못했다.In [24]:

Out[24]:

In [25]:

In [26]:

Out[26]:

In [27]:

In [28]:

Out[28]:

In [29]:

Out[29]:

In [30]:

결론 모델 중 Recall Score가 가장 높으면서 다른 Score가 가장 높은 모델은 svc_optimal 였다.

Recall Score가 중요한 이유 기계가 실제 사기인 사건을 사기가 아니라고 판단했을 경우가 더 치명적이기 때문이다.

Last updated

Was this helpful?