목적

데이터 양을 절대적으로 줄여 모델 적합 시간을 줄이되, 정보손실을 최소화할 수 있는 방법론을 탐색한다.

 

샘플링 분류

1. Probability Sampling: 랜덤하게 데이터를 추출하는 방법, 모집단의 모든 구성원이 선택될 가능성이 있는 추출

 

1) simple random sampling: 랜덤한 숫자를 줘서 무작위 추출

- python 함수: pandas.sample

 

2) systematic sampilng: 어떤 체계를 주어 무작위 추출 (예시: 6번째마다 추출, 문제점: 데이터의 순서에 따른 정보가 담겨 있으면 안됨) 

- python 함수 (step size를 만들어 일정 구간의 데이터를 추출)

 

3) stratified sampling: 모집단을 n개의 그룹으로 나눠 임의로 k개의 데이터를 추출해서 합치는 방법

- python 함수: from sklearn.model_selection import  StratifiedSuffleSplit 

 

4) cluster sampling: 모집단을 여러개의 군집으로 나눠 군집 k개를 선택해 합치는 방법

- python 함수: cluster를 설정해 랜덤하게 추출 

 

위의 표본추출을 python코드로 구현한 예시

simple-random-sampling | Kaggle

 

simple-random-sampling

Explore and run machine learning code with Kaggle Notebooks | Using data from Credit_data

www.kaggle.com

 

2. Non-Probability Sampling : 랜덤하지 않게 데이터를 추출하는 방법

 

1) convience sampling: 데이터를 수집하기 좋은 위치나 시기에 샘플링함 ( 통계적 추론 불가)

2) purposive sampling: 목적에 가장 적합한 데이터라고 생각하는 샘플 선택 (모집단의 대표성이 떨어짐)

3) quota sampling:  

연구편향을 최소화하기 위해 샘플링 단계를 명확히 해야함. 대표 샘플이 부족한 경우 연구편향이 일어나거나 유효성에 영향을 미침.

 

유의할 점

1. 데이터 세트가 줄어든다고 잃어버린 정보량을 측정할 방법은 없음

 

 

 

1. k-최근접 이웃 알고리즘으로 다수의 clustering을 만든뒤 각 cluster별로 차이가 없다고 생각될때 하나의 cluster를 선택해서 학습

https://sci2s.ugr.es/pr

 

Prototype Reduction in Nearest Neighbor Classification: Prototype Selection and Prototype Generation | Soft Computing and Intell

 

sci2s.ugr.es

 

2. 밀도 보존 샘플링: 세트를 무작위로 선택하거나 층화된 그룹을 찾는 법

https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6360017 

 

IEEE Xplore Full-Text PDF:

 

ieeexplore.ieee.org

3. 가장 간단한 무작위 샘플링

- 이해하기 쉽고 실수하기 어려우며 프로세스에 편향을 도입할 가능성이 없음.

- 여러 샘플들을 실험해보고 전체 데이터 세트에 대해 다시 실행하여 성능 향상을 추정해보면 됨

- 단순 샘플링으로 데이터 개수를 늘려가면서 robustness를 찾는 법도 괜찮음

 

reference: https://stackoverflow.com/questions/36107725/what-are-effective-preprocessing-methods-for-reducing-data-set-size-e-g-remov

 

교육 속도와 정확도 대 예제 수의 장단점을 보여주는 그래프는 

https://github.com/szilard/benchm-ml

 

GitHub - szilard/benchm-ml: A minimal benchmark for scalability, speed and accuracy of commonly used open source implementations

A minimal benchmark for scalability, speed and accuracy of commonly used open source implementations (R packages, Python scikit-learn, H2O, xgboost, Spark MLlib etc.) of the top machine learning al...

github.com

 

 

https://www.marktechpost.com/2023/03/06/cleanlab-open-sources-activelab-a-novel-active-learning-method-for-data-labeling-to-improve-machine-learning-models/

 

Cleanlab Open-Sources ActiveLab: A Novel Active Learning Method For Data Labeling To Improve Machine Learning Models

Labeled data is essential for training supervised machine learning models, but mistakes made by data annotators can impact the model's accuracy. It is common to collect multiple annotations per data point to reduce annotation errors to establish a more rel

www.marktechpost.com

https://github.com/cleanlab/cleanlab

 

GitHub - cleanlab/cleanlab: The standard data-centric AI package for data quality and machine learning with messy, real-world da

The standard data-centric AI package for data quality and machine learning with messy, real-world data and labels. - GitHub - cleanlab/cleanlab: The standard data-centric AI package for data qualit...

github.com

https://github.com/cleanlab/examples/blob/master/active_learning_multiannotator/active_learning.ipynb

 

GitHub - cleanlab/examples: Notebooks demonstrating example applications of the cleanlab library

Notebooks demonstrating example applications of the cleanlab library - GitHub - cleanlab/examples: Notebooks demonstrating example applications of the cleanlab library

github.com

데이터가 추가됨에 따라 성능의 robustness를 보인다면 cut-off를 하는 방법

 

ADP) 3-2. 파이썬으로 표본 추출: 단순랜덤 추출법, 계통추출법, 집락추출법, 층화추출법 (tistory.com)

 

ADP) 3-2. 파이썬으로 표본 추출: 단순랜덤 추출법, 계통추출법, 집락추출법, 층화추출법

파이썬으로 표본 추출 (Sampling) 하기 단순랜덤추출법 (simple random sampling) 각 샘플에 번호를 부여하여 임의의 n개를 추출하는 방법으로 각 샘플은 선택될 확률이 동일하다. 추출한 element를 다시 집

lovelydiary.tistory.com

논문

Sample_size_estimation_and_sampling_tech (1).pdf
0.30MB
Sampling_Methods_and_its_Comparison_Data (1).pdf
0.49MB
comparison_of_sampling_techniques (1).pdf
0.30MB

마케팅 분석에서 자주 사용하는 A/B test는 

모집단에서 집단을 무작위로 추출해 하나의 변수 효과를 한쪽에는 주고, 다른 한쪽은 주지 않고 

두 군간의 차이를 보는것이다. 

 

테스트 반응이 있었는지 여부만 확인! 하는 것이 AB test의 기능이었다면

Uplifting modeling은 어떤 특징을 보이는 표본이 반응 하거나 하지 않았는지를 확인하는 점이 다르다. 

 

 

Uplifting의 4사분면

Uplifting의 사분면

1. 무관심: 어떻게 하던 무관심 ex) 휴면고객

2. 설득가능: 비용을 들여서라도 전환을 시키면 유리

3. 청개구리: 오히려 반대로 의심하는 경우

4. 잡은 물고기: 비용이 드는 행위는 자제

 

업리프팅은 변수 하나에 대해 두 군간의 차이를 본다. 변수가 많아지면 머신러닝으로~!

 

업리프팅 예시

 

 

'데이터분석 > 머신러닝' 카테고리의 다른 글

Multi-Armed Bandit(MAB)  (0) 2023.05.02
Sampling method  (0) 2023.04.11
자동화 시스템 구축을 위한 AutoML  (0) 2023.03.30
Decision tree  (0) 2022.06.29
LASSO 이해하기  (0) 2021.06.28

1. AutoML을 하는 이유? 

 

- 번거로운 수작업 자동화

- 머신러닝 장벽 완화(비전문가의 머신러닝 사용)

 

* 은행 입장: 분류된 person_id만 요구

 

2. 필요 point?

 

- 수천, 수만행의 데이터추출도 수초 내에 수행할 수 있도록 구현

 

'데이터분석 > 머신러닝' 카테고리의 다른 글

Sampling method  (0) 2023.04.11
다이렉트 마케팅에 사용되는 Uplifting modeling  (0) 2023.03.30
Decision tree  (0) 2022.06.29
LASSO 이해하기  (0) 2021.06.28
Sensitivity, Specificity, PPV, NPV  (0) 2021.04.26

예측 목적: 주어진 데이터 window로 앞으로 정해진 시간내의 값들을 예측하기

예를 들자면, 14개의 변수를 가진 row가 하루에 10분마다 기록된다면,  데이터는 하루당 144개의 관측치를 갖는다. 

이때 5일간의 데이터로 앞으로의 6시간을 예측한다고 가정한다면, 

모형을 학습하기 위한 window는 720(5일*144)개의 관측값을 포함하고 있다. 

이러한 구성을 많이 만들 수 있는 데이터 세트가 실험에 적합하다. 

 

학습이 잘 되기 위해

1. 학습하려는 window가 많아야함. 

2. time interval을 잘 주어야함. => 예를 들어, 10분마다 수집되는 데이터지만 데이터 

 

 

시계열을 바라보는 가장 자연스러운 문제 구도는 '각각의 timestep, t 에서 다음 event까지의 시간을 예측하는 것'이다. 

이를 TTE라고 부른다. 

 

그렇지만, 다음 event가 발생하지 않아서 누락된 데이터가 있을 수 있고 이를 censored data라고 한다. 

그럼 이런 censored data분석에 쓰이는 모델이 무엇이 있을까? 

 

sliding box model

TTE를 직접 예측하는 것 대신에, 특정 사건이 t(영역)시점에 발생할 것인지를 예측한다. 

영역내의 사건발생 유무와 확률을 예측할 수 있다. 

 

  • 장점: 단순함, 명확성, 작동원리 이해 쉬움과 유연성(Xgboost나 랜덤포레스트 등 char-level RNN까지 활용가능)
  • 단점: 예측이 유익하지 못함. 예시 -> '30일동안 이벤트가 발생하지 않는다면 예측된 확률이 과연 유효한가?'

sliding box model보다 더 신뢰도가 높고 해석가능한 결과를 얻을 수 있다.

WTTE-RNN

  • 이산형, 연속형 자료에 모두 적함 가능
  • censored data 학습 가능
  • 일시적인 feature와 시간에 따른 변화하는 공변량 이용가능
  • 장기간의 일시적 패턴 학습가능

https://github.com/YBIGTA/Deep_learning/blob/master/ML/wtte/%5B2017.08.12.%ED%86%A0%5DWTTE-RNN%20%EC%A0%95%EB%A6%AC%EC%9E%90%EB%A3%8C.md

시험장에 들어가면

1. OT(20분)하는 동안 선택지 선택

- 일경험 X, 학생 X => 취준생, 수업은 들은지 5년이상됨

- 어디사는가? 가족과 함께

- 공원,해변,영화,콘서트보기

- 요리하기

- 걷기, 조깅, 하이킹/트레킹, 자전거

- 국내여행, 해외여행, 집안에서의 여행

 

질문 난이도는? 5를 선택, 중간에 Q7쯤 난이도변경을 묻지만 똑같이 5선택

 

2. 본시험(40분)

자기소개 1문항

선택지에서 14문항(주제마다 대략 4-5개)

 

자기소개는 필수! 무조건 완벽구사

내소개 -> 나이 -> 가족 -> 성격 -> 최근 직업구하는 중 -> 쉬는 시간 -> 내 목표

 

오픽 특징 

1. 질문에 detailed description 혹은 look like이 나오면 무조건 묘사!

2. 답변의 마무리는 모두 나의 느낌

3. 과거와 현재를 비교하는 문제는 가장 어려운 문제유형이고 시제를 정확히 사용했는지를 체크하는 문제!

4. 모든 질문에 대답할 필요 X

5. 생각나지 않으때는 마무리는 I love ~ 

6. 말이 길어졌다면, anyway로 다시 본론으로 돌아오기

7. 질문이 나올때 about에 집중하기

8. 선호 및 이유는 현재시제

9. 기억에 남는 경험은 출제 빈도가 높다!

10. 롤플레이는 보통 빌리거나/구매하거나/초대하거나/초대당한다.

11. become interested in 이들어가면 계기를 묻는것 -> 답변 시제는 과거

12. 비교하는 두 대상을 현재로 답변 -> 유사점, 차이점, 본인 선호

13. 질문에 first가 있다면 계기를 묻는것

 

 

 

생존분석이란? 

잘 정의된 시점으로부터 event가 일어나기까지 걸린 시간을 분석하고 예측하는 분석이다. 

event는 주로 사망, 질병악화, 기계고장 등이 있다. 따라서, 시간과 수치값을 예측하는 것이기 때문에 회귀모델로 적용되나, 일반적인 통계 모형에 적용할 수 없는 생존분석만의 특징이 있다. 

 

- 생존 분석으로 연구 집단의 특이변화를 직관적으로 확인 가능하다. 

 

Censoring

  • Right censoring: 연구 종료 전 사망 혹은 연구 종료 후 생존
  • Left censoring: 연구 시작 전 질환을 이미 보유 혹은 측정한 생존 시간보다 실제 생존 시간이 더 긴 경우

생존분석 방법 1) Kaplan-Meier 추정방법

사건에 따른 사건 발생률을 계산하는 생존분석 방법이다. 

아래 그림은 survival plot으로 시간에 따른 생존율을 파악할 수 있고 

두 그룹간의 유의미한 차이를 보기위해 Log-Rank test혹은 willcoxon test를 수행한다.  

생존분석의 특징

1) 레이블은 최소 2개를 갖는다. 

=> 사건 발생까지의 시간과 사건 발생여부 

예시) 신장이식 환자에 대한 생존분석을 한다고 가정하고, 환자 10명이 있다. 10명 모두 수술받은 날짜를 알아내는 것(시작점)이 가능하지만, 계속 지켜보는 것은 불가능하다. 그렇지만 그들의 생존시간과 사망정보를 기록해야한다.

하지만, event발생 전에 종료된 데이터들을 censored data라고 부른다. 하지만 끝까지 관찰된 샘플은 uncensored data라고 부른다. 

대표적인 모델로 Cox-proportional hazard model이 있다. (아래 관련 링크 첨부)

https://chealin93.tistory.com/search/survival

모델을 평가하는 방법

생존 시간의 예측 정확도를 알고싶을때는, MSE를 사용하고 사망여부를 고려한 생존시간 예측정확도를 알고 싶다면 C-index를 사용한다.  

 


C-index란? 

 

1) 샘플들의 생존 시간을 오름차순으로 나열하고, 사건이 관찰된 각 샘플들보다 오래 생존한 샘플들의 개수를 모두 더한 총합

2) 샘플들을 예측된 생존시간의 오름차순으로 나열하고, 사건이 관찰된 각 샘플들보다 오래 생존할 것으로 올바르게 예측된 샘플들의 개수를 모두 더한 총합

1과 2의 비율로 나타난다. 

 

 

c-index는 0.0~1.0 사이의 값을 갖는다. 1.0에 가까울수록 정확히 예측한다고 해석하고, 0.5에 가까울수록 무작위로 예측한다고 평가한다. 해석이 AUROC(Area Under Receiver Operating Characteristic curve)와 비슷하여, c-index를 AUROC의 회귀분석용으로 확장한 것이라는 이야기도 있다.

고정효과(fixed effect)와 랜덤효과(random effect)로 이루어진 모형이다. 

 

1) 한명의 실험 대상자로부터 여러 결과를 얻는 겨우(longitudianl data에서 사용할 수 있는 선형 모형)

2) 군집으로 모일 수 있는 경우

 

고정효과란

모집단과 샘플 모두에서 고정되어있는 요인의 효과를 말한다. 샘플마다 모든 요인의 level이 동일하고 효과가 동일하다고 간주할 수 있다. 

 

랜덤효과란

어떤 변수가 모집단으로부터 sampling될떄 마다 level이 고정되어 있지 않아 효과가 샘플마다 다를 수 있는 효과를 말한다. 

 

고정효과와 랜덤효과 예시

예를 들어, 20명의 환자를 대상으로, 1,3,6,9,12개월마다 스트레스 점수를 측정할 경우, 21명의 환자는 모집단에서 임의로 추출되었기 떄문에 환자간에 시간에 따른 변화양상이 다르다면 환자효과를 random effect로 간주할 수 있다.

반면, 성별이나 계절은 random한것이 아니어서 fixed effect로 통제가 가능하다. 

 

mixed model analysis의 예제

예제1) 900명의 환자를 대상으로 5개의 multi center 데이터를 180개씩 조사해, 성별이 일정할때 기관별 혈압차이를 보고싶다면 

성별을 fixed effect, 센터를 random effect로 고려해 분석가능

 

예제2) 100명의 환자를 대상으로 피험자마다 혈압을 1주일 간격으로 3회 측정할 경우, 3 시점간에 혈압이 다른지 보고싶다면

시점을 fixed effect로 피험자를 random effect로 고려해 분석가능

 

예제3) 55세 이하의 환자를 대상으로 술을 마신후 1,3,6,9,12개월마다 스트레스 측정한다면, 나이와 시간을 fixed effect, 환자를 random effect로 놓고 분석가능

 

y = Xb + Zu + e

 

y는 형질을 관측한 값으로 이루어진 벡터이다.

b는 고정효과로 알려진 요인들의 벡터이다.

u는 임의효과라고 알려진 요인들의 벡터이다.

e는 잔차항의 벡터로 역시 임의효과이다.

 

출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jinp7&logNo=220954271225 

 

+ Recent posts