목록Data/Machine Learning (15)
짜리몽땅 매거진
앱서비스를 운영할 때 유저는 피로를 느끼고 중도 이탈을 하거나 앱에 오랜기간 접속을 하지 않는 등 다양한 단계에서 이탈 유저가 발생한다. 사전에 이탈 유저를 예측하고, 어떤 원인으로 인해 이탈했는지 파악한다면 기업 입장에서 리스크를 최소화할 수 있다. 그래서 오늘은 머신러닝 모델을 활용해 이탈 유저와 일반 유저를 분류해보는 예측 모형을 개발해보고자 한다. 데이터셋은 유저 및 기능별 로그 데이터를 전처리한 데이터셋을 활용하였다.* 실제 기업 데이터로, 수치는 비공개 처리합니다. 1. 라이브러리 호출 및 데이터 불러오기import pandas as pdimport numpy as npfrom datetime import datetimefrom sklearn.preprocessing import Label..

정성데이터를 가공할 때, 텍스트 데이터에서 단어를 추출해야할 때 등 여러 케이스에서 자연어처리(NLP)를 해야하는 경우가 많다. 이때 초반에 진행해야하면서 기초적이지만 중요한 부분이 바로 '벡터화'이다. 텍스트 벡터화는 텍스트 데이터를 수치 데이터로 변환하는 과정으로, 머신러닝 모델이 텍스트를 이해하고 처리할 수 있게 하는 중요한 단계이다. 그 중 가장 널리 알려진 Count Vectorizer와 TFIDF Vectorizer를 다루고자 한다.1. Count VectorizerCountVectorizer는 텍스트 데이터에서 단어의 빈도를 세어 벡터로 변환하는 클래스이다.from sklearn.feature_extraction.text import CountVectorizer# 예시 리스트corpus= ..

머신러닝 모델을 개발하고 실제 운영에 도입하기에는 수많은 과정을 거치게 된다. AutoML은 머신러닝을 적용할 때마다 이러한 과정을 되풀이하면서 발생하는 비효율적인 작업을 최대한 자동화하여 생산성과 효율을 높이기 위하여 등장하였다. 특히, 데이터 전처리 과정에서부터 알고리즘 선택 및 튜닝까지의 과정에서 분석가의 개입을 최소화 하여 품질 좋은 모델을 효과적으로 개발할 수 있는 기술에 대한 연구가 오랫동안 진행되어 왔다. 그 중에서도 TPOT은 예측 모델링 작업을 위한 고품질 기계 학습 모델을 자동으로 발견하기 위해 널리 사용되는 AutoML 라이브러리다. Genetic programming으로 머신러닝 파이프라인을 최적화하는 파이썬 AutoML 툴fh, 수천 개의 가능한 파이프라인 중에서 가장 적합한 ..

데이터 분석가가 모델링을 진행하려면 EDA(탐색적 데이터분석)부터 변수 선택, 표준화, 학습까지 하나하나 코딩해야한다. 물론 숙련자라면 이 과정에 어려움이 없겠지만, 그래도 더 편하게 할 수 있는 방법이 있다면 좋지 않을까? Sweetviz 라이브러리는 EDA도구로 간단한 결측치 확인, 타겟에 대한 분석, 데이터 간 비교 등을 수행해야 할 때 자동으로 빠르게 직관적 탐색을 도와준다. import seaborn as snsimport sweetviz as svdf =sns.load_dataset('titanic')report =sv.analyze(df)report.show_html('sweetviz_titanic_report.html') 임의로 타이타닉 샘플데이터를 EDA 한다면 위 코드만으로 간단한 결과..

모델링을 할 때 데이터 '샘플링'을 해야한다는 말을 들어본 적 있을 것이다. 그렇다면 왜 샘플링을 해야할까? 통상적으로 예측하는 경우는 대부분 소수의 경우를 예측하는 경우가 많다. 예를 들어, 사기건, 비정상, 이탈 등등 기본적으로 소수의 이벤트를 예측하는 경우가 많다.금융사기 > 98명 정상 , 2명 사기우리는 그 2명을 예측그렇다면 샘플링을 하지 않으면 어떤 문제로가 발생할까? 우선 머신이 제대로 학습을 하기 어렵고, 정확도에 이슈가 생긴다. 예를 들면, 타이타닉데이터 1이 생존 0이 생존하지 않음일 때, 어디에 가중치를 두지 않고 9:1 상관없이 다 학습하면 90% 이상의 정확도가 나올 수 있다. 하지만 이 수치가 과연 정말 높은 수치일까?A모델 90%의 비중을 80% 정확하게 분류하고, 10% 비..

데이터 변환은 데이터를 다른 형태로 바꾸는 작업을 의미합니다. 데이터 변환은 다양한 목적을 가지며, 주로 아래와 같은 이유로 수행하게 된다.데이터 분포 변화: 데이터가 정규분포를 따르지 않을 때, 로그 변환, 제곱근 변환 등으로 데이터를 변환하여 정규분포에 더 가깝게 만든다. 이 과정을 통해 모델의 성능을 향상시킬 수 있다.이상치 영향 줄이기: 로그 변환과 같은 방법은 이상치=의 영향을 줄여서 모델이 이상치에 덜 민감하게 만든다.데이터 관계를 선형화: 비선형적인 관계를 선형으로 바꾸기 위해 데이터 변환이 사용된다. 예를 들어, 지수적인 증가를 보이는 데이터를 로그 변환을 통해 선형화할 수 있다.모델링을 진행할 때 성능을 향상시키기 위해 변환과 스케일링 처리를 동시에 수행하는 경우가 많은데 이 두 개의 과..

KNN 알고리즘과 K-means 클러스터링과 같은 머신러닝의 기초적인 모델들은 모두 거리기반 측정을 바탕으로 시작한다. KNN 알고리즘의 경우 가까운 속성에 따라 분류한다고 했는데 '가깝다'는 것에는 기준이 필요하다. 나중에 KNN 알고리즘에 대해 자세히 다루겠지만, KNN 알고리즘은 거리기반 분류분석 모델로 거리를 기반으로 분류하는 알고리즘이며 따라서 상대적으로 거리가 더 짧은 이웃이 더 가까운 이웃으로 취급된다. 즉, KNN 알고리즘은 어떤 새로운 데이터로부터 거리가 가까운 K개의 다른 데이터의 레이블(속성)을 참고하여 K개의 데이터 중 가장 빈도 수가 높게 나온 데이터의 레이블로 분류하는 알고리즘이다. K-means 알고리즘에서 K는 묶을 군집의 개수를 의미하고 means는 평균을 의미한다. 단어 ..

Kmeans알고리즘은 머신러닝 비지도학습에 속하는 K-means 알고리즘은 쉽게 말해 데이터를 K개의 군집(Cluster)으로 묶는(Clusting) 알고리즘이다. 군집이란 쉽게 말해서 비슷한 특성을 지닌 데이터들을 모아놓은 그룹(Group)이다. 마찬가지로 군집화는 군집으로 묶는다는 의미로 해석할 수 있다. Kmeans알고리즘은 KNN알고리즘과 구분하는 것이 중요한데, 분류와 군집화의 차이점에 대해 간단히 살펴보자.분류분류는 지도학습 방법에 속하여 정답이 주어졌을 때 정답을 기반으로 데이터를 나누는 방법을 의미한다. 따라서 머신러닝에서 모델을 학습시킬 때 모델이 제대로 분류하는지를 평가하기 위해 정답을 제거하고 모델이 예측한 레이블과 실제 레이블을 비교하여 모델의 성능을 판단한다.군집화반면, 군집화는 ..