전세계적으로 Analytic Engineer를 뽑는 추세
통계의 기본정도는 알고 있으면 좋다.
1.
2. 많은 내용을 다루지만 deep하지는 않다.
3. 시야를 넓히기 위함.
통계 관련 둘러보기
ANOVA
분산을 통해서 평균이 다른지를 분석?
대표적인 가정 Assumption
: 정규성, 독립성, 등분산성 cf. 방법마다 다다름
정규성
modeling을 돌리고 나서 끝난 에러? '잔차'의 분포가 normal distribution을 따른다.
제일 중요하다.
독립성
관측칭의 순서에는 패터이 없다.
중요도 낮음
등분산성
각 집단의 분산 동일 →
비교적 덜 중요
"모델에 문제가 왜 발생했는지 분석할 수 있는 능력이 중요함 = 진단하고 고쳐라"
Remedy : Normality
QQplot으로 확인 하는 것이 가장 낫다고 생각
(순서 활용하여 만든 차트)
Kolmogorov
- 비교적 대표본에 적용
- 수십만 경우에는 적용 여부 잘 모르고 simulation 해봐야
가장 치명적 문제 발생하기 쉬움
Remedy : Independency
사례) 집값 예측이 어려운 이유 : 보통 집값이 오르면 같이 오름 > 공간적 자기 상관성 Auto-correlation
bias 문제 x, 비교적 문제가 치명적이지 않다.
동일한 가중치를 비교하면 안좋다라는 말을 해주고 싶음
잔차Residual에 대한 시계열 Time-series 모델링으로 해결할 수 있음
Remedy : Equal Variance
Homoscedasticity vs Heteroscedasticity
각 집단의 분산이 동일하다는 가정
가정이 어긋날시 2종오류의 위험이 증가
일반적으로 바틀렛 검정을 통해 진다
Skew를 잡아줌으로써 교정하는 경우가 많음. : log-transformation
(수학적 지식으로 증명할 수는 있지만 딱히)
Equal Variance : Welch-t test
t-검정에서는 굳이 이분산성을 해결하지 않고, 이분산에도 잘 작동하는 모델 사용하기도
Log변환의 효과
독립변수 x의 값에 따라 y값 변동 有, x값 변화에 따라 y값 분산 달라지는 것은 일반적
사후검정Post-hoc
뭔지 모르겟다? 일단 Anova
가정에 따라 다양한 방법이 있지만, Tucky 정도 가장 많이씀
실지럭 의의 Practical significance vs 통계적 의의 Statistical Significance
데이터가 통계적의미가 있다는 것과, 실질적으로 적용하기 유효한지는 다르다.
Regression과 R2
단순 선형 회귀의 검증
beta0는 없으면 안되지만 비교적 중요하진 않음
중요한 것은 beta1, t분포를 따른다.
모델 자체에 대한 검정은 F분포를 이용
양측검정이라는 가정하, t의 제곱=F
단순 선형 회귀 평가
SSR 모델이 설명한 것
SSE 모델이 모르겠다고 한 에러
SST y의 분산
F분포 : 통계적 유의성 확보 위해 분포를 보는 것
R2 : 직관적으로 현실적으로 쓸만한지 확인하는 것 (통계적 기반이 아님)
다르게 해석되어야한다
전체 모형에서 회귀선으로 설명 할 수 있는 정도, 설명변수로 반응 변수 설명
cf. p-value는 어렵다. 고전 통계학의 한계가 있음. > 신뢰구간을 많이 씀
통계는 근본적으로 확률을 찾는 거라, 오류의 가능성이 있고 그래서 설정한 신뢰구간을 참조하여 하는 것이 좋다.
underfitting vs balanced vs overfitting
Adjusted R2 수정계수 R2
변수를 넣을 때마다 R2는 무조건 올라서, 변수를 추가할 때마다 패널티 주는거라 생각하면 좋음
Negative R2 ?
머신러닝의 통계적 학습
딥러닝은 머신러닝 하위 분야 맞음,
그러나 데이터 타입에 따라 쓰이는 게 다르다
정형 데이터를 회귀분석 등 > 머신러닝
vison, 음성, 자연어 등 비정형 데이터 > 딥러닝
모든 함수를 표현할 수 있다는 것과 실질적으로 그러한가는 다르다
Prediction 예측만 잘맞추면 된다.
Inference 예측도 중요하지만, 어떠한 요인이 어떻게 영향을 미쳤는지 확인 (데이터간 인과관계 추론)
cf. 인과추론은 팬은 많은데 쓰기 힘든.. 쉽고 명확한 기법 쓰는게 편했다.
cf2. 머신러닝에서 inference 는 추론, 즉 예측값을 만드는 것을 의미하기도 <> 통계에서의 inference와 구분 필요
Data Split
머신러닝에서는 데이터를 쪼개서 쓴다. 쪼개야한다 비율
Train : Validation : Test
보통 : 70 : 15 : 15
데이터 엄청 많다 : validation 줄이기도
나누는 이유? overfitting
Cross Validation
Sampling
다양한 샘플링 방법
Stratified sample 층화추출
Systematic sample 원하는 방식으로 systematic. 유용함
Ensemble
머신러닝에서는 성능향상을 위해 무조건 하게 됨
Bagging, Boosting
성능을 많이 내야한다고 보면 필수
Stacking
ML vs Stats
Adjusted R2 vs Test R2
통계학은 머신러닝 급으로 데이터가 많지 않음
변수선택
step wise 좋은 것부터 넣고 쓸모없어진 것 같다하면 빼는 것 > 반복하면서 최적의 변수를 찾기
Feature selection
AIC , BIC
큰 기업일수록 예측에서 0.몇퍼센트 성능향상만 있어도 돈이 벌림
변수 수십만개 사용한 경우도 있음(물론 프로그램으로 프로젝트 별 변수를 자동을 생성해서 가능했음)
통계의 어려움 Collinearity
다중공산성
기준이 명확하지 않은 건 맞음
해석학 : 정리를 세우고 만들어가는 과정.
선형대수학 관점에서 공부하는 것이 필요. 이해하지 못하면 한계가 있음
선형대수학, 미적은 필수
진짜 잘하고 싶다하면 해석학
추천시스템
보통 user들은 명확한 반응이 잘 없음
cf. graph 인기많고 좋아하지만 관련 모델로 이득 본 경험이 적었음.
Two Stage
stage 1. 수백만개의 item에서 몇십만개의 item으로 추리고
stage 2. 이후 이를 기반으로 계산
1일차 : 실습코드
2일차 : 머신러닝 방법 중 통계가 있는 것을 볼려고 함
실습
지금까지는 마지막 열차가 아닐까?
Halucination이 너무 심함. 코드가 통계학적으로 틀린 경우가 너무 많음
ex) queory 쿼리
실무자로서 도움이 되는가?
gpt가 알아서 파라미터를 뽑지만 결과를 어디까지 신뢰할 수 있는가? data literacy 문제 발생
요새는 코드테스트도 라이브 코딩 해버리니 gpt 다 쓸 수는 없음
tqtm 좋음 : 데이터 진행속도 보는데 도움됨
참고) numpy는 ddof=0, pandas는 ddof=1 깎아줌. 자유도 추후 설명
assert는 테스트 용으론 좋지만, 개발용으론 쓰지마라
cf. 데이터 사이언티스트는 준개발자라고 보면 됨.
ex) air flow에게 맡겨놓거나 하는 등 응용은 많이하긴 함. 다만 관리면에선 엔지니어 분들이 진퉁이다
qqplot 해석
normality 망하면 equal variance 망함
Remedy
Q. Outlier의 제거?
주변 상황과 맥락을 봐야함. 또 직종과 포지션에 따라 다름 (ex 모바일 게임 실적에선 핵과금 유저를 집중관리)
얼마나 있는지 report를 시키기. 분별하는 코드를 사용.
z_score 활용
회사에서 의사결정 위해서 하는 것이다 > 조금 어긋낫다고 막 뭐하진 않을듯
데이터는 현상을 보여주는 것이지 왜 그런지는 추론하기 어려움
논리적 비약이 심함
입사를 할때마다 지표를 구함
여러번 다른 방법으로 구해서 오류가 있는지 검증함 > 정확성 검사 특히 분석가들에게는 중요함
2일차 맛보기
쓰고 계시는 책
https://wikidocs.net/book/7982
결론 :
현업에서도 전부를 알고 진행하지는 않으나, 알고 쓰면 좋은 것 같다.