문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
def solution(n):
answer = ''
for i in range(n):
if i % 2 == 0:
answer += '수'
else:
answer += '박'
return answer
머신러닝 3회차
01. 앙상블 모델이란?
"여러 명의 전문가가 모여 의견을 내는 것이 한 명의 전문가보다 더 나은 결과를 낸다"는 지혜를 머신러닝에 적용한 것입니다. 마치 중요한 의료 결정을 내릴 때 여러 의사의 의견을 종합하는 것처럼, 여러 모델의 예측을 결합하여 더 나은 결과를 얻는 방법입니다.
배깅 - 원래 데이터에서 여러 번 샘플링하여 다양한 데이터셋을 만들고 독립적으로 모델을 학습
마치 여러 의사가 각자의 경험을 바탕으로 독립적인 진단을 내리는 것과 비슷합니다 ex) 랜덤 포레스트
부스팅 - 이전 모델이 잘못 예측한 데이터에 더 많은 가중치를 두어 순차적으로 모델을 개선합니다. 마치 의사가 이전의 잘못된 진단으로부터 배워 진단 능력을 향상시키는 것과 유사합니다. ex) XGBoost, LightGBM(LGBM)
앙상블 모델의 장점
- 더 안정적이고 강건한 예측 가능
- 과적합 위험을 줄일 수 있음
- 더 높은 예측 성능을 얻을 수 있음
앙상블 모델의 단점
- 학습과 예측에 더 많은 시간과 자원이 필요
- 모델이 복잡해져서 해석이 어려워질 수 있음
- 적절한 앙상블 방법과 파라미터 선택이 중요 (하이퍼 파라미터 튜닝 필요할 수 있음)
결정 트리란?
결정 트리는 의사결정 규칙을 나무 형태로 도표화한 것으로, 우리가 일상적으로 하는 의사결정 과정과 매우 유사한 방식으로 작동합니다. 마치 스무고개 게임처럼 일련의 질문들을 통해 최종 결론에 도달하는 방식입니다.
조건에 따라 데이터가 왼쪽 또는 오른쪽 가지로 분리됨
트리는 불순도(지니 계수나 엔트로피)가 가장 크게 감소하는 방향으로 특성과 분할 기준을 선택하면서 성장하며, 이 과정은 특정 종료 조건(최대 깊이, 최소 샘플 수 등)에 도달할 때까지 반복
- 결정 트리 장단점?
- 장점 : 모델의 의사결정 과정을 시각적으로 표현할 수 있어 해석이 쉽다
- 단점 : 과적합되기 쉽다
- 해결 방법 : 가지치기(pruning)와 같은 기법을 사용합니다.
- 불순도?
- 각 노드에서 데이터가 얼마나 섞여있는지를 측정하는 지표
랜덤 포레스트란?
랜덤 포레스트는 여러 개의 결정 트리(Decision Tree)를 생성하고, 이들의 예측을 종합하여 최종 결정을 내리는 앙상블 모델
원본데이터에서 무작위 샘플로 학습 / 여러 전문가의 의견을 종합하는 것과 같은 효과
랜덤 포레스트 작동 원리
1. 부트스트랩 샘플링 (Bootstrap Sampling) - 원본 데이터에서 복원 추출로 여러 개의 학습 데이터셋을 생성
- 예를 들어, 10,000명의 대출 데이터가 있다면, 각 트리는 5,000개의 무작위 샘플(중복 허용)로 학습
- 이 과정에서 일부 데이터는 여러 번 선택되고, 일부는 선택되지 않을 수 있음
2. 특성의 무작위 선택 (Random Feature Selection) - 각 분기점에서 가용한 모든 특성이 아닌 일부 특성만 고려합니다
- 예를 들어, 총 20개의 특성(소득, 나이, 신용점수 등) 중 무작위로 5개만 선택하여 최적 분할을 찾습니다
- 이를 통해 각 트리가 서로 다른 관점에서 데이터를 바라보게 됩니다
3. 개별 트리의 학습 - 각 트리는 서로 다른 데이터와 특성으로 학습되므로, 다음과 같이 다양한 기준으로 판단할 수 있습니다:
4. 앙상블 예측 (Ensemble Prediction)
- 분류 문제: 각 트리의 예측을 투표로 결정 (예: 100개 트리 중 65개가 '상환가능' 예측) ⇒ 상환가능
- 회귀 문제: 각 트리의 예측 평균 사용 (예: 상환 확률 평균 65%)

랜덤 포레스트 장단점
* 장점
- 과적합 위험이 낮음
- 특성 중요도 쉽게 계산
- 이상치에 강건
- 대규모 데이터셋에서도 잘 작동
* 단점
- 계산 비용과 자원 요구량
- 모델의 복잡성과 해석의 어려움
- 하이퍼파라미터 튜닝의 복잡성
부스팅(Boosting)이란?
머신러닝에서 부스팅은 약한 학습기들을 순차적으로 학습시켜 강한 학습기를 만드는 방법
’순차적 학습’ (Sequential)
- 첫 번째 검사: 전압 테스트에서 불량품 발견
- 두 번째 검사: 첫 검사를 통과한 제품 중 온도 문제 발견
- 세 번째 검사: 이전 검사들을 통과한 제품 중 크기 불량 발견
- 이런 식으로 각 단계마다 이전 단계를 통과한 제품의 다른 문제점을 발견
이처럼 부스팅도:
- 첫 번째 모델이 잘못 분류한 데이터에 집중
- 두 번째 모델은 이전 모델의 실수를 보완
- 각 모델이 서로 다른 관점에서 문제를 해결
부스팅 모델 종류
- AdaBoost (Adaptive Boosting)
- 가장 초기의 부스팅 알고리즘으로, 핵심 알고리즘은 잘못 분류된 데이터에 더 높은 가중치를 부여
- 이전 모델의 오류에 가중치를 부여하고, 다음 모델은 이 가중치가 높은 데이터에 집중하는 방식
→ 어려운 문제를 여러 번 반복해서 푸는 것과 같은 원리
* 실수한 부분을 중점적으로 학습
* 모델 결합 - 더 좋은 성능을 보인 모델에 높은 가중치 부여
2. Gradient Boosting Machine (GBM)
- AdaBoost의 아이디어를 더욱 일반화시킨 알고리즘으로, 경사하강법의 원리를 부스팅에 적용했습니다XG Boost (eXtreme Gradient Boosting)
- GBM의 성능과 속도를 대폭 개선한 알고리즘으로, 기존 GBM의 기본 원리를 유지하면서도 여러 가지 혁신 기능이 추가된 모델입니다.
3. XG Boost (eXtreme Gradient Boosting)
- GBM의 성능과 속도를 대폭 개선한 알고리즘으로, 기존 GBM의 기본 원리를 유지하면서도 여러 가지 혁신 기능이 추가된 모델입니다.
4. LightGBM (Light한 GBM) ⇒ LGBM
- GBM 모델의 파생 모델로, 리프 중심 트리 분할(Leaf-wise tree growth) 방식을 사용한다는 점이 가장 큰 특징 (효율성과 속도)

1) 하이퍼 파라미터 최적화란 - 모델의 외적인 요소로 사용자에 의해 결정되는 값 , 모델에 가장 적합한 하이퍼 파라미터를 찾는것
2) Cross Validation(교차 검증) - 모델의 예측 성능을 평가하기 위해 데이터를 훈련 세트와 검증 세트로 나누어 여러 번 테스트
- 모델의 성능을 보다 정확하게 추정
3) Grid Search - 간단하고 광범위하게 사용되는 알고리즘 , 범위를 넓게 가져갈수록, Step을 작게 설정할 수록 최적해를 찾을 가능성이 높이지지만 시간이 오래 걸림
4) Random Search - 범위내에서 랜덤하게 선택
- 기본적으로는 더 빠르고 효율적이기 때문에 GridSearch보다 권장되는 방법
- Grid Serach보다 속도가 빠르지만 optimzed solution이 아닐 수 있음
5) 모델 저장하기
통계학 4회차


정규성 검정 필요성
대부분의 통계 검정(t-test, ANOVA 등)은 데이터가 정규분포를 따른다는 전제 하에 수행됩니다.
따라서, 검정을 수행하기 전 반드시 정규성 검정을 통해 해당 전제가 만족되는지 확인해야 합니다.
- 가장 널리 사용되는 정규성 검정 방법
- 귀무가설: 데이터가 정규분포를 따른다

비모수 검정
개념
정규분포를 가정하기 어려울 때 쓰는 검정 방법
즉,
원래 t-test나 ANOVA 같은 모수 검정은
데이터가 정규분포를 따른다
이런 조건이 필요함.
근데 그 조건이 안 맞으면
→ 비모수 검정을 사용함.
쉽게 말하면
모수 검정
- 데이터가 정규분포라고 가정하고 분석
- 예: t-test, ANOVA
비모수 검정
- 정규분포가 아니어도 쓸 수 있는 방법
- 보통 순위(rank) 나 부호를 이용해서 비교함
정규성 같은 모수 검정의 조건이 안 맞으면, 그 대체 방법으로 비모수 검정을 쓴다.

Mann-Whitney U Test
개념
서로 독립인 두 집단을 비교하는 비모수 검정
즉, 정규분포를 가정하기 어려울 때
독립표본 t-test 대신 쓰는 방법
사용 예
- 공정 A와 B의 품질 점수 비교
- 남성과 여성의 만족도 비교 등
- p < 0.05 → 두 집단의 중앙값(또는 분포) 차이가 통계적으로 유의미
- 위 예시에서 p = 0.0286일 경우 → A와 B의 결과는 다르다
한 줄로 대응시키면
독립표본 t-test → Mann-Whitney U
대응표본 t-test → Wilcoxon
ANOVA → Kruskal-Wallis


- 분산분석
t-test는 "2개"의 평균
ANOVA란? - 모수집단
개념 설명:
- *분산분석(Analysis of Variance, ANOVA)은 세 개 이상의 집단(그룹) 간의 평균에 통계적으로 유의미한 차이가 있는지를 검증하는 데 사용되는 통계 기법입니다.

F-값 (F-statistic)
개념
집단 간 차이가 집단 안의 흔들림보다 얼마나 큰지 보는 값
1. 집단 간 분산
- A, B, C 그룹 평균끼리 얼마나 차이 나는지
2. 집단 내 분산
- 같은 그룹 안에서 데이터가 얼마나 퍼져 있는지
F값이 크면
- 집단 간 차이는 큼
- 집단 내 흔들림은 상대적으로 작음
- 그래서 집단 평균이 다를 가능성이 큼
분자(집단 간 분산) ↑
분모(집단 내 분산) ↓
→ F값 커짐
F값이 작으면
- 그룹끼리 평균 차이가 별로 없거나
- 같은 그룹 안 데이터 흔들림이 큼
- 그래서 유의한 차이가 없을 가능성이 큼

일원 분산분석 (One-Way ANOVA)
개념
3개 이상 집단의 평균이 같은지 다른지 확인하는 검정
이미지를 보고 귀무가설 H0이라는것과 유의수준이 0.05라는것을 알 수가 있다
임계값 Fα=2.84F 즉 기각 기준선으로
- 계산한 F값이 2.84보다 작으면 → 귀무가설 유지
- 계산한 F값이 2.84보다 크면 → 귀무가설 기각
실제로 3.232와 임계값은 2.84로 3.232 > 2.84 즉 귀무가설 기각
1) 두 집단 비교
t-test
- 독립표본 t-test : 서로 다른 두 집단 비교
- 대응표본 t-test : 같은 집단의 전/후 비교
2) 세 집단 이상 비교
ANOVA
- 3개 이상 집단 평균 비교
t-test의 귀무가설 H0
두 집단의 평균은 같다
대립가설 H1H_1
두 집단의 평균은 같지 않다
해석 기준
- p-value < 0.05 → 세 집단 중 적어도 한 곳의 평균이 다르다 (귀무가설 기각)
- p-value ≥ 0.05 → 평균 차이가 유의하지 않다 (귀무가설 유지)

사후분석이란?
ANOVA나 Kruskal-Wallis에서 집단 간 차이가 있다고 나온 뒤, 정확히 어떤 집단끼리 차이가 나는지 확인하는 추가 분석
필요이유 : 예를 들어 A,B,C 세 집단을 ANOVA로 비교했는데
결과가 p < 0.05나왔다면 알 수 있는 인사이트는
세 집단 중 적어도 하나는 다르다
근데 이걸로는 아직
- A와 B가 다른지
- A와 C가 다른지
- B와 C가 다른지는 모름.
- 그래서 사후분석을 해서
어떤 집단끼리 차이가 나는지 확인

ANOVA의 전제 조건
- 정규성 :각 그룹의 데이터가 정규분포를 따른다
- 등분산성(Levene’s test): 각 그룹의 분산이 서로 유사하다
- 독립성: 각 그룹 간의 표본은 서로 독립적이어야 한다
만약 전제 조건이 충족되지 않는다면 비모수 검정인 Kruskal-Wallis 검정을 사용할 수 있습니다.

공분산 (Covariance)
개념
두 변수가 함께 어떻게 움직이는지 보는 값
즉,
x가 변할 때 y도 같이 늘어나는지 / 반대로 움직이는지
공분산 > 0 = x가 증가할 때 y도 증가
* 예 : 공부시간 ↑ → 점수 ↑
공분산 < 0 = x가 증가할 때 y는 감소
* 예 : 불량률 ↑ → 수율 ↓
공분산 ≈ 0 = 둘 사이 뚜렷한 방향성이 x 즉 거의 관계가 없거나 약하
공분산은 두 변수가 같은 방향으로 움직이는지, 반대 방향으로 움직이는지를 나타내는 값이다.

상관계수
개념
두 변수가 얼마나 같이 움직이는지, 그리고 그 관계가 얼마나 강한지를 나타내는 값
① 강한 +상관
- 점들이 오른쪽 위로 쭉 모임
- x가 커질수록 y도 큼
- 상관계수 +1에 가까움
② 약한 +상관
- 증가 방향은 맞는데 퍼져 있음
- 양의 상관은 있지만 약함
③ 강한 -상관
- x가 커질수록 y가 작아짐
- 상관계수 -1에 가까움
④ 약한 -상관
- 감소 방향은 보이는데 약함
⑤ 무상관
- 점들이 막 흩어져 있음
- 선형 관계 거의 없음
⑥ 비선형 관계
- 관계는 있는데 직선 형태가 아님
- 그래서 피어슨 상관계수로는 잘 안 잡힐 수 있음
| 종류 | 특징 | 사용 상황 |
| 피어슨 상관계수 (Pearson) | 연속형 변수 간 선형관계 분석, 정규성 가정 | 예: 온도와 결함률 |
| 스피어만 순위 상관계수 (Spearman) | 서열형 변수나 비선형 관계에 사용, 정규성 불필요 | 예: 만족도 순위, 등급 평가 |
| 켄달 타우 (Kendall Tau) | 소규모 데이터나 순위 일관성 평가에 적합 | 예: 순위 데이터의 신뢰성 검토 |
| 항목 | 상관관계 (Correlation) | 인과관계 (Causation) |
| 의미 | 두 변수 간에 함께 움직이는 경향이 있음 | 한 변수가 다른 변수에 영향을 미침 |
| 예시 | 키와 몸무게, 아이스크림과 익사 사고 | 흡연과 폐암, 운동과 체중 감소 |
| 관계 방향 | 방향성 없음 (A↔B) | 방향성 있음 (A→B) |
| 증명 방법 | 통계량(상관계수)로 확인 가능 | 실험·통제·이론적 근거 필요 |
| 위험 | 혼동 변수(confounding)에 의해 잘못된 해석 가능 | 과학적 설계와 추가 검증 필요 |

회귀분석
개념
한 변수의 값을 다른 변수로 예측하거나, 변수 간 영향을 수식으로 나타내는 방법
즉, x가 변하면 y가 얼마나 변하는지 직선 식으로 설명
예를 들어
- 공부시간(x)
- 시험점수(y)
가 있으면
공부시간이 늘면 점수는 얼마나 오를까?
를 식으로 나타내는 게 회귀분석
예:
y = ax + b
- a : 기울기 → x가 1 증가할 때 y가 얼마나 변하는지
- b : 절편 → x가 0일 때 y 값
상관분석
두 변수가 관련 있는지 확인
회귀분석
한 변수가 다른 변수에 어떤 영향을 주는지 / 얼마나 예측 가능한지 확인

단순 선형회귀
개념
독립변수 1개로 종속변수 1개를 예측하는 가장 기본적인 회귀분석
즉,
x 하나를 보고 y를 예측
예:
- 공부시간(x)으로 시험점수(y) 예측
- 온도(x)로 불량률(y) 예측
- 파란 선 : 데이터를 가장 잘 설명하는 회귀선
- 주황 점 : 실제 관측값
- 파란 점 : 회귀선이 예측한 값
- 잔차 : 실제값과 예측값 사이 차이
즉 회귀분석은 이 잔차가 최대한 작아지도록 직선을 찾는 과정
| 항목 | 의미 |
| 절편 | X=0일 때 Y값 |
| 기울기 | X가 1만큼 증가할 때 Y가 얼마나 변하는지 |
| R² | 모델이 데이터를 얼마나 잘 설명하는지 (0~1 사이) |
| 잔차 | 실제값과 예측값의 차이 |
| p-value | 회귀계수가 통계적으로 유의한지 판단 |

다중 회귀분석
개념
독립변수 여러 개를 이용해서 종속변수 1개를 예측하는 회귀분석
즉, y값 하나를 예측할 때 x를 하나만 쓰는 게 아니라 여러 개 같이 쓰는 것
단순 선형회귀는 집 크기 > 집값을 좌우 변수 1개로 예측했지만 실제로는 면적, 역과의 거리, 인프라 등등 여러 요인이 영향을 줌
그래서 여러 독립변수를 같이 넣어서 예측하는게 다중회귀

머신러닝 심화 1회차
-
- 새로운 공정 예측 모델 개발 완료 → 정확도 95% 달성!
- 현업 부서의 질문: ‘성능이 좋은 것은 알겠는데, 대체 모델이 뭘 보고 불량이라고 판단했나요?’
- 결과만큼 중요한 것이 ‘모델의 판단 이유’현업의 단골질문: 왜?
Feature Importance란?

- 모델의 해석력 확보
- 수많은 변수 중 모델의 의사결정에 가장 큰 영향을 미친 변수의 순위를 매김.
- AI의 논리와 내부 과정을 이해.
- 비즈니스 인사이트 도출
- 알려지지 않았던 새로운 불량 요인이나 핵심 지표 발견.
- 현장의 업무 프로세스를 근본적으로 개선할 수 있음.
- 데이터 경량화
- 중요도가 낮은 쓸모 없는 변수들을 과감히 제거하여 모델 경량화.
- 연산 효율 상승및 과적합(Overfitting) 방지
산출 원리

1) 선형 모델
- 선형 회귀, 로지스틱 회귀 등 선형 모델.
- 회귀계수를 가장 기본적인 feature importance로 사용.
2) 트리 기반 모델
- Random Forest, XGBoost 등 트리기반 모델.
- 핵심 원리: 불순도 감소.
- 데이터를 분할할 때, 정상과 이상을 가장 확실하게 갈라 놓는 변수에 높은 점수.
- Ex) ‘습도’ 기준 분할 → 여전히 정상/이상이 섞여있으면 → 낮은 중요도.
- Ex) ‘압력’ 기준 분할 → 정상/이상이 완벽히 분리됨 → 높은 중요도
Loss Function (손실 함수): "현재 모델이 얼마나 틀렸나?"
Gradient Descent (경사 하강법): "오차를 줄이려면 어느 방향으로 가야 하나?"
# 협업 및 프로젝트 관리 가이드 정리
1. 프로젝트 협업 가이드
팀 공유 드라이브 및 환경 구축
- 협업의 핵심은 모든 팀원이 동일한 경로에서 동일한 파일을 보는 것이다.
- 구글 드라이브에 팀 공유 폴더를 만들고, 모든 팀원에게 편집 권한을 부여한다.
- 폴더 안에는 `data`, `notebooks` 등 작업 목적에 맞게 하위 폴더를 나누어 관리한다.
- 분석 데이터(CSV 등)는 미리 `data` 폴더에 업로드해 두고 공통 경로로 사용한다.
효율적인 협업 방식
- 전처리, EDA, 모델링처럼 역할을 분담해 각자 다른 파일에서 작업하면 협업 효율이 높아진다.
- 전처리 결과를 저장하면 다음 팀원이 그 결과 파일을 이어받아 분석할 수 있다.
- 코랩의 댓글 기능을 활용하면 특정 코드 셀에 질문이나 피드백을 남기며 소통할 수 있다.
협업 시 주의사항
- 여러 명이 같은 코랩 파일을 동시에 수정하면 코드가 꼬이거나 오류가 날 수 있어 파일을 나누어 작업하는 것이 좋다.
- 중요한 작업이 끝날 때마다 사본 저장을 통해 백업본을 만들어야 한다.
- 작업 후에는 런타임 세션을 종료해 자원을 정리하는 습관이 필요하다.
2. 프로젝트 관리 가이드
결과물 중심의 관리
- 프로젝트 관리는 단순히 “진행 중”이라고 표시하는 것이 아니라 실제 결과물 기준으로 관리해야 한다.
- 노션 데이터베이스를 활용하면 단계, 상태, 담당자, 결과물 링크, 진척도를 한눈에 정리할 수 있다.
- 전처리 코드, EDA 노트북, 모델링 결과처럼 완성된 산출물을 기준으로 진척률을 기록하는 것이 중요하다.
마일스톤 설정
- 프로젝트를 단계별 목표로 나누어 관리하면 전체 진행 상황을 파악하기 쉽다.
- 예를 들어 데이터 확보, 전처리 완료, 모델 성능 검증, 최종 보고서 완성과 같이 큰 목표를 마일스톤으로 설정한다.
- 각 마일스톤이 끝날 때마다 결과물이 남아야 프로젝트 진행 상황을 명확하게 확인할 수 있다.
결과물 중심 기록의 장점
- “거의 다 됐다” 같은 주관적인 표현 대신, 코드 업로드나 보고서 작성 여부처럼 객관적으로 소통할 수 있다.
- 진척이 멈춘 구간을 빠르게 파악해 피드백이나 지원을 받을 수 있다.
- 프로젝트 종료 후에는 노션 기록 자체가 작업 과정과 결과를 보여주는 포트폴리오 자료가 된다.