TIL 90일차 : 데분의 꽃, k-means 클러스터링

2024. 3. 18. 18:24회고/TIL(매일)

 

✏️도전한 점


1. 오전, 오후 최종 프로젝트 팀회의

2. 튜터님 상담, 시계열 데이터 질문

3. 2시 30분~4시 클러스터링 상담 및 학습

4. 클러스터링, 시나리오 관련 팀회의

5. 머신러닝 이상치 학습 완료

 

01 시계열 데이터 머신러닝 알아본 내용 정리


 

시계열 데이터 예측 모델 (머신러닝)

01 시계열 데이터 머신러닝 알아보기 Prophet 모델이란? 1. 기본적으로 단변량 시계열 예측 모델이다. 즉, 기본 설정에서는 시간(ds)과 예측하고자 하는 변수(y)만을 사용하여 예측을 수행한다. 따라

specialda.tistory.com

 

02 대용량 데이터 등 정리


1. 머신러닝 관련 질문: 한 테이블 안에 x변수, y변수 모두 담아서 학습시켰는데, 너무 방대해서 년도 별로 쪼갠 데이터셋일 경우. 파이썬으로도 작업이 불가능할 정도로 많다면?

- 데이터 용량 자체를 줄일 방법이 있다. .info()하면 메모리 용량이 나오는데
예를 들어, 컬럼 별로 float64 > 32 > 16 줄이는 방법들이 있다.

2. 데이터 fit할 때 데이터프레임말고 다른 거 해볼 수도 있는데, 일단 저렇게 메모리 용량 줄여본다.

3. 대용량 데이터라면 데이터 수는?

 

- pandas는 1기가 미만 근데 10기가 가능. 데이터 행이라고 물어본다면 천만억 정도!!ㅋㅋ

 

03 매출 예측 모델 관련 정리


1. 전통적인 모델링을 한다면~
- 매출 말고 다른 것을 넣어라. 매출 넣으면 손으로 계산하는 거랑 같다고 본다.

- 서로 정보가 겹치니까 정확도가 떨어진다.
- 전년도 매출액 하나만 넣어도 예측값이 잘 나올 것이다.
- x변수는 y변수를 예측하기 위한 특성이라고 생각하면 쉽다.
- 기타 변수에는 사업장의 크기, 종업원, 브랜드 파워를 넣을 수 있다.
- 매출액 여러 개보다 하나를 넣는게 성능이 훨씬 좋게 나올 것이다.

2. 시계열 데이터로 접근한다면~
- 데이터셋 간단한 게 맞다. x변수에 시간 + y변수에 매출을 넣는다.

3. n년 뒤를 예측할거면 시계열로 하는 게 낫다.
- 현재 트랜드가 지속된다는 가정을 할 때,
- prophet 모형 학습하면 좋겠다. (시계열 관련 블로그 글 참고)

4. 가능하다면 둘 다 해볼 수도 있겠다.

 

04 클러스터링 관련 정리


빅데이터는 주관적인 개념이다.
도메인마다 회사마다 다르다.
게임업계는 밀리세컨 단위로 기록된다.
넥슨은 하루에 100테라바이트의 데이터가 생성된다.

군집분석을 추천드린다. 군집분석은 정답이 없는 비지도 학습이다.
추천하는 이유. 현업에서 많이 사용하는 이유가 있다.
전처리부터 모델링까지 모두 사이클을 경험할 수 있어서 추천한다.
군집분석이 경쟁력 있는 퍼포먼스가 된다.
데이터 유사성을 기준으로 n개의 군집으로 나눈다.

점들의 평균값이 중심값을 중심으로 같게 된다. 그럼 이제 안해도 돼.

1. merge, join, concat 등으로 하나의 데이터셋을 구축하고
2. 만들어진 하나로 군집분석을 하게 된다.

혼자서 하면 군집화 최소 세달 걸리는 작업이다.

군집분석
1. 피쳐선정하기/피쳐몇개로 할건지 중요하다.
2. 군집을 몇개로 나눌건지 초기에 결정하는게 가장 중요하다.

컬럼개수랑 k가 계속 변할거다.
여기의 개수를 유동적으로 생각해줘라.
내가 생각하는 이상값이 있을테니까.
그래프로는 참고만 한다. (가장 많이 꺾이는 값)
군집을 나누는데 걸리는 시간 = 적은게 더 좋음
distancemap도 서로 멀수록, 독립적일수록 좋음

<군집분석 과정>

1. 하나로 만들었을 때 컬럼값이 20개면
2. 20개로 다 안해도 돼
3. 굉장히 여러가지 실험이 필요하다.
4. 1~20개로 다 해보고
5. 잘 나뉘는지 봐야한다.
현업에서는 보통 3~5개로 선정하고 군집분석을 시작한다.

<PDF자료 설명 순서대로>
피쳐선정
피쳐선정시 상대도수를 확인하는 게 좋다.
군집분석 상관관계를 보고 소거할 수 있다.

표준화
표준화를 하는데 때로는 할 때 좋을 때도, 안할 때 좋을 때도 있다.
최근 일주일동안 접속일수랑 결제금액을 같이 본다면,
평균을 0점으로 맞춰주는 표준화 작업이 중요하다.
a는 1에서 7인데 b는 금액이라 1000만 이러면 표준화 해야 함.

차원축소
표준화 진행 후 컬럼들은 각각 저마다의 차원에 있음.
피쳐가 10개라면 피쳐마다 10개의 차원이 존재한다.
군집분석을 하려면 같은 차원에 존재해야 한다.
PCA n개의 차원에 있는 피쳐들을 2차원 또는 3차원으로 모아놔야 함.
2차원 또는 3차원으로 시각화를 진행하면 된다. = pca plot

시각화까지의 과정을 반복 하고 기록해야 함.
비중이 어떤지 잘 고민해야 한다. 기록한 걸 비교해보고 반복.
어떤 실험이 유의미했는지 잘 판단해야 한다.

<확실하게 k값, 피쳐값을 정해야 한다.>
<둘 중 하나라도 바뀌면 다시 시작~~>
<표준화과정까지 계속 반복하게 될거다>
<차후 모델 돌릴 걸 가정해서 매핑을 하는 것이다>

군집번호 매핑
이번에 한 클러스터링 번호랑 저번이랑 1번 이랑 1번이랑 같게하는 것
예전에 빨간그룹이 이번에도 빨간그룹이었으면 좋겠다!

이제 모델링 해야함.
높은 확률로 랜덤포레스트 할 것임. 왜죠? 분류/회귀 다 가능해서?
예측값을 마구잡이로 도출한 다음에 가장 많은 값을 도출해주는 것.

정확도 체크하시고 모델은 딱 하나다.
모델은 가장 많은 데이터를 가지고 생성한다. 그니까 날짜 최댓값으로
연초/연말/월초/월말 데이터는 튈 수 있으니까 보시고 실제로도 많이 튄다면 실무에선 소거한다.

17년~22년도 데이터를 훈련/테스트셋으로 구분한다.

게임업계에선 0.95가 넘어야 신뢰성이 있는 모델로 간주된다.
0.9까지만 나와도 이 모델은 사용할 수 있다고 판단된다.

최소 10만건 데이터를 가지고 군집 분석을 해야 한다.

- 클러스터링 캐글 데이터셋 치면 나오긴 한다.
- 이 모든 과정은 군집분석을 했을 때의 이야기다.
- 매핑을 안하면 모델을 만들 수 없다.
- 차후 모델 돌릴 걸 가정해서 매핑을 하는 것이다.
- 군집화 안한거보다 하면 분류피쳐 하나더 있어서 정확도 업됨.

<최종 프로젝트>

시계열 분석이 회귀분석이니까.
최종을 시계열로만해서 간다? 이건. 좀. 시간이 많이 남지 않나 싶음.
대표적인 ALIMA 주식데이터 분석
보면 파이썬 코드가 별로 없음.
조금 더 열심을 낸다면 클러스터링을 내주면 좋음.

이거를 군집별로 나눠서 어떤 결과를 도출하고 싶다면 군집분석이다.

1. 베스트는 군집별로 매출을 예측하면 된다.
2. 단순히 시계열로만 하면 시간이 남을 수 있다.
3. 군집을 한 다음에 시계열을 사용해서 매출예측을 비교해보면 짱!

군집별로 예측!!!!!!!!!!!!!!!!! 중요!!!!!!!!!!!!!!!!!!!!

근무했던 모든 회사에서 클러스터링을 담당했다.
군집분석은 데이터 분석의 꽃이다. 중니어 정도는 되야 포트폴리오에...
네트워크 분석을 한 친구가 있었는데 합격을 했다.

R로 해봤다가 SQL로 해보고 PY로 해보고 자동화하는 프로세스를 구축하고 회사를...

매출을 예측해서 맨날 어디로 데이터를 맨날 어디로 보낸다고? 입사
슬랙에 연결해서 api? 스케쥴을 걸어서 할 수 있음.

자유롭게 sql과 python을 넘나드는 분석가가 되기를...
데분가의 핵심적인 퍼포먼스다!!!

 

+ 유저 별로 군집화 한다음 특성 별로 그룹핑 된 유저들 마다를 타겟으로 액션을 취할 수 있음.