Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[이수현] 3주차 제출합니다. #15

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
20 changes: 20 additions & 0 deletions suhyeonx/Week_1/answer1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Question Set

**1. 모델이 훈련데이터에서의 성능은 좋지만 새로운 샘플에서의 일반화 성능이 나쁘다면 어떤 문제가 있는 건가요? 해결책 세 가지는 무엇인가요?**

훈련 데이터에 과대적합 되었기 때문. 단순화하기, 훈련 데이터 더 많이 집어넣기, 훈련 데이터 잡음 줄이기.


**2. 데이터의 불균형한 특성을 고려할 때, StratifiedKFold 교차 검증을 적용하는 과정에서 발생할 수 있는 문제점은 무엇이며, 이를 어떻게 해결할 수 있을까요?**



**3. 정확도를 분류기의 성능 측정 지표로 선호하지 않는 이유를 작성해주세요. (Precision과 Recall이라는 키워드를 써서 작성해주세요)**

데이터가 불균형하면 정확도가 굉장히 높아지는 등 지표로 사용하기 적합하지 않다. 그래서 정밀도precision, 재현율recall 등의 다른 지표를 사용한다.


**4. 경사하강법을 사용하여 모델을 학습할 때, 조기 종료 규제가 무엇을 의미하며, 이 규제가 왜 필요한지에 대해 설명해주세요.(예측오차와 과대적합이라는 키워드를 써서 설명해주세요)**

검증 오차가 최소에 도달하는 즉시 훈련을 멈추는 것을 말한다. 경사하강법의 에포크가 증가할수록 검증에 대한 오차가 줄어들었다가 다시 늘어난다.
다시 늘어나는 것은 모델이 훈련 데이터에 과대적합되었다는 것이다.
105 changes: 105 additions & 0 deletions suhyeonx/Week_1/week1-chap1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
### 용어
머신러닝: 데이터에서 학습하도록 컴퓨터를 프로그래밍하는 과학(또는 예술)
데이터 마이닝: 대용량의 데이터를 분석해 숨겨진 패턴을 발견하는 것

### 요약
- 머신러닝이란?
- 머신러닝이 왜 유용한지
- [[머신러닝 시스템의 분류]]
- 지도 학습 vs 비지도 학습
- 준지도 학습, 자기 지도 학습
- 온라인 학습과 배치 학습
- 사례 기반 학습과 모델 기반 학습
- [[머신러닝 프로젝트의 형태]]
- [[머신러닝의 주요 도전 과제(문제&해결법)]]
- [[머신러닝 평가와 튜닝]]

[[선형 분류 알고리즘]]
[[전이 학습transfer learning]]
### 연습문제

① 머신러닝을 어떻게 정의할수 있나요?
일반적인 정의:
명시적인 프로그래밍 없이 컴퓨터가 학습하는 능력을 갖추게 하는 연구 분야
공학적인 정의:
어떤 작업 T에 대한 컴퓨터 프로그램의 성능을 P로 측정했을 때 경험 E로 인해 성능이 향상됐다면, 이 컴퓨터 프로그램은 작업 T와 성능 측정 p에 대해 경험 E로 학습한 것이다.
<font color="#c0504d">머신러닝은 데이터로부터 학습할 수 있는 시스템을 만드는 것. 어떤 작업에서 주어진 성능 지표가 더 나아지는 것을 의미.</font>

② 머신러닝이 도움을 줄 수 있는 문제 유형 네 가지를 말해보세요.
- 기존 솔루션으로는 많은 수동 조정과 규칙이 필요한 문제
- 전통적인 방식으로는 해결 방법이 없는 복잡한 문제
- 유동적인 환경
- 복잡한 문제와 대량의 데이터에서 인사이트 얻기

③ 레이블된 훈련 세트란 무엇인가요?
분류가 된 훈련 세트 ex) 스팸 이메일 샘플, 스팸이 아닌 이메일 샘플
<font color="#c0504d">각 샘플에 대해 원하는 정답(레이블)을 담고 있는 훈련 세트</font>

④ 가장 널리 사용되는 지도 학습 작업 두 가지는 무엇인가요?
분류, 회귀

⑤ 보편적인 비지도 학습 작업 네 가지는 무엇인가요?
군집 알고리즘, 시각화, ~~이상치 탐지~~, <font color="#c0504d">차원 축소</font>, 연관 규칙 학습

⑥ 사전 정보가 없는 여러 지형에서 로봇을 걸어가게 하려면 어떤 종류의 머신러닝 알고리즘을 사용해야 하나요?
강화 학습

⑦ 고객을 여러 그룹으로 분할하려면 어떤 알고리즘을 사용해야 하나요?
군집 알고리즘, 계층 군집 알고리즘
<font color="#c0504d">군집 알고리즘(비지도 학습) -> 분류 알고리즘(지도 학습)</font>

⑧ 스팸 감지의 문제는 지도 학습과 비지도 학습 중 어떤 문제로 볼 수 있나요?
지도 학습

⑨ 온라인 학습 시스템이 무엇인가요?
작은 묶음 단위로 데이터를 주입하는 방식
<font color="#c0504d">온라인 학습 시스템은 배치 학습 시스템과 달리 점진적으로 학습할 수 있습니다. 이 방식을 사용하면 변화하는 데이터와 자율 시스템에 빠르게 적응하고 매우 많은 양의 데이터를 훈</font>
<font color="#c0504d">련시킬 수 있습니다.</font>

⑩ 외부 메모리 학습이 무엇인가요?
메인 메모리에 들어갈 수 없는 큰 데이터셋에서 모델을 훈련 시킬 때.
실시간 시스템(온라인) 수행이 아님. <font color="#c0504d">온라인 학습 기법 사용</font>

⑪ 예측을 하기 위해 유사도 측정에 의존하는 학습 알고리즘은 무엇인가요?
사례 기반 학습

12) 모델 파라미터와 학습 알고리즘의 하이퍼파라미터 사이에는 어떤 차이가 있나요?
모델 파라미터는 훈련을 하고 훈련 세트에 맞는 모델의 값을 찾아낼 때 쓰임. <font color="#c0504d">(ex 선형 모델의 기울기)</font>
하이퍼파라미터는 훈련 전에 미리 지정되고 훈련하는 동안에 상수로 남아있다. 학습 알고리즘 자체의 파라미터.<font color="#c0504d"> (ex 적용할 규제의 정도)</font>

⑬ 모델 기반 알고리즘이 찾는 것은 무엇인가요? 성공을 위해 이 알고리즘이 사용하는 가장 일반적인 전략은 무엇인가요? 예측은 어떻게 만드나요?
<font color="#c0504d">(</font>비용 함수를 최소화하는<font color="#c0504d">)</font> 최적의 모델 파라미터 찾기.
가장 일반적인 전략 - 좋은 예측을 위해 더 많은 특성을 사용하거나/ 좋은 훈련 데이터를 더 많이 모으거나/ 더 강력한 모델을 선택
<font color="#c0504d">일반적으로 훈련 데이터에서 시스템의 예측이 얼마나 나쁜지 측정하고 모델에 규제가 있다면 모델 복잡도에 대한 페널티를 더한 비용 함수를 최소화함으로써 시스템을</font>
<font color="#c0504d">훈련시킵니다.</font>
예측은 새로운 데이터에 모델을 적용해 만든다.

14) 머신러닝의 주요 도전 과제는 무엇인가요?
모델을 선택해 어떤 데이터에 훈련시키는 것
<font color="#c0504d"> 머신러닝의 주요 도전 과제는 부족한 데이터, 낮은 데이터 품질, 대표성 없는 데이터. 무의 미한특성, 훈련 데이터에 과소적합된 과도하게 간단한 모델. 훈련 데이터에 과대적합된 과</font>
<font color="#c0504d">도하게 복잡한 모델 등입니다.</font>

15) 모델이 훈련 데이터에서의 성능은 좋지만 새로운 샘플에서의 일반화 성능이 나쁘다면 어떤 문제가 있는 건가요? 해결책 세 가지는 무엇인가요?
과대적합
- 단순화 (파라미터 수가 더 적게, 훈련 데이터의 특성 수 줄이기, 규제)
- 더 많은 훈련 데이터
- 훈련 데이터의 잡음 줄이기

16) 테스트 세트가 무엇이고 왜 사용해야 하나요?
만든 모델을 새로운 샘플에 바로 적용할 수 없으니까.
<font color="#c0504d">실전에 배치되기 전에 모델이 새로운 샘플에 대해 만들 일반화 오차를 추정 하기 위해 사용됩니다.</font>

17) 검증 세트의 목적은 무엇인가요?
모델과 하이퍼파라미터가 테스트 세트에 최적화된 모델을 만들었을 때. (테스트 세트에 과대적합 방지)
<font color="#c0504d">모델을 비교하는 데 사용, 이를 이용해 가장 좋은 모델 선택</font>

18) 훈련-개발 세트가 무엇인가요? 언제 필요하고 어떻게 사용해야 하나요?
훈련 데이터의 일부를 떼어내 또 다른 세트를 만드는 것.
검증 세트에서의 성능이 나쁜데 그 이유가
1. 훈련 세트에 과대적합되었기 때문인지 <font color="#c0504d">(훈련 세트 ok, 훈련-개발 세트 bad)</font>
2. 데이터의 불일치 때문인지 파악하기 위해 <font color="#c0504d">(훈련 세트 ok, 훈련-개발 세트 ok)</font>

19) 테스트 세트를 사용해 하이퍼파라미터를 튜닝하면 어떤 문제가 생기나요?
모델과 하이퍼파라미터가 테스트 세트에 최적화된 모델을 만들 수 있다.
-> 새로운 데이터에 잘 작동하지 않을 수 있다.
<font color="#c0504d">일반화 오차를 낙관적으로 측정하게 됨.</font>
108 changes: 108 additions & 0 deletions suhyeonx/Week_1/week1-chatp1-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# 머신러닝 시스템의 분류
## <font color="#c0504d">훈련 지도 방식에 따른 분류</font>
## 지도 학습 supervised learning
훈련 데이터에 <span style="background:rgba(240, 200, 0, 0.2)">레이블이 포함.</span>
1) **분류** classification
2) **특성** feature을 사용해 **타깃** target 수치 예측 => 회귀 regression
- 회귀 알고리즘을 분류에 사용할 수도 있고 분류 알고리즘을 회귀에 사용할 수도 있음.

### 비지도 학습 unsupervised learning
훈련 데이터에 <span style="background:rgba(240, 200, 0, 0.2)">레이블이 없음.</span>
1) **군집** clustering 알고리즘 - 그룹으로 묶는다.
2) **계층 군집** hierarchical 알고리즘 - 더 작은 그룹으로 세분화.
- 분할 군집 divisive clustering (하향식), 병합 군집 agglomerative clustering (상향식)
3) **시각화** visualization 알고리즘 - 도식화가 가능한 2D, 3D 표현 제공
4) **차원 축소** - 특성 합치기 = **특성 추출** feature extraction
5) **이상치 탐지** outlier detection
6) **특이치 탐지** novelty detection
7) **연관 규칙 학습** association rule learning

### 준지도 학습 semi-supervised learning
<span style="background:rgba(240, 200, 0, 0.2)">레이블이 일부만</span> 있는 데이터.
- 대부분 지도 학습 + 비지도 학습


### 자기 지도 학습self-supervised learning
<span style="background:rgba(240, 200, 0, 0.2)">레이블이 없는 데이터셋에서 레이블이 완전히 부여된 데이터셋 생성</span>
- 비지도 학습보단 지도 학습에 가깝
- 비지도 학습 - 군집, 차원 축소, 이상치 탐지
- 자기 지도 학습 - 분류, 회귀

### 강화 학습 reinforcement learning
- 학습하는 시스템 agent. 환경 environment을 관찰해 행동action을 실행하고 그 결과로 <span style="background:rgba(240, 200, 0, 0.2)">보상reward or 벌점penalty</span> 부과
- 시간이 지나면서 가장 큰 보상을 얻기 위해 <span style="background:rgba(240, 200, 0, 0.2)">정책policy</span> 라 부르는 최상의 전략을 스스로 학습.



## <font color="#c0504d">입력 데이터의 스트림으로부터 점진적으로 학습할 수 있는지 여부에 따른 분류</font>
### 배치 학습 batch learning
<span style="background:rgba(240, 200, 0, 0.2)">가용한 데이터를 모두 사용해 훈련</span>
- 시간과 자원(cpu, 메모리 공간, 디스크 공간...) 많이 소모 -> 오프라인 수행
**오프라인 학습** offline learning
- 모델의 성능은 시간에 따라 감소
-> 모델 부패 model rot or 데이터 드리프트 drift
-> 정기적 재훈련 필요

### 온라인 학습 online learning (점진적 학습 incremental learning)
데이터를 순차적으로 한 개씩 또는 미니배치 mini-batch라 부르는 <span style="background:rgba(240, 200, 0, 0.2)">작은 묶음 단위로 주입.</span>
- 매 학습 단계가 빠르고 비용이 적게 든다.
어디에 적합?
- 빠른 변화에 적응해야 하는 시스템
- 컴퓨팅 자원이 제한된 경우 (모바일)
**외부 메모리 학습**out-of-core learning
- 보통 오프라인으로 실행됨. '온라인' 학습과 헷갈리지 말 것.
- 중요한 파라미터: **학습률**learning rate
- 변화하는 데이터에 얼마나 빠르게 적응할 것인지
- 학습률 high: 데이터에 빠르게 적응/ 금방 잊어버림
- 학습률 low: 데이터에 느리게 학습/ 덜 민감



## <font color="#c0504d">어떻게 일반화되는가에 따른 분류</font>
### 사례 기반 학습instance-based learning
<span style="background:rgba(240, 200, 0, 0.2)">단순히 기억하는 것.</span>
- 훈련 샘플 기억 -> 유사도 측정을 사용해 new and trained 비교하는 식으로 일반화

### 모델 기반 학습model-based learning
<span style="background:rgba(240, 200, 0, 0.2)">샘플들의 모델</span>을 만들어 예측에 사용
- 모델 선택model selection - ex) [[선형 모델linear model]] 채택
- 선형 모델의 기반의 예측과 비슷한 값을 내는 k-최근접 이웃k-nearest neighbors 회귀도 있음.- 사례 기반의 학습 알고리즘
- 모델 파라미터 조정



# 머신러닝의 주요 도전과제 (문제&해결법)
### 주요 작업 <모델을 선택해 어떤 데이터에 훈련시키는 것>
### 문제될 수 있는 것: '나쁜 모델', '나쁜 데이터'

1. 충분하지 않은 양의 훈련 데이터
2. 대표성이 없는 훈련 데이터
대표하는 훈련 세트를 사용하기 어려운 이유
1. 샘플이 작으면 **샘플링 잡음**sampling noise (우연에 의한 대표성 없는 데이터) 발생
2. **샘플링 편향**sampling bias 매우 큰 샘플도 표본 추출 방법이 잘못되면 대표성을 띠지 못할 수 있다.
3. 낮은 품질의 데이터
- 오류, 이상치, 잡음 가득
- 훈련 데이터 정제 필요
4. 관련없는 특성
- 특성 공학feature engineering: 훈련에 좋은 특성 찾기
- 특성 선택feature selection
- 특성 추출feature extraction: 특성 결합
- 데이터 수집
5. 훈련 데이터 과대적합overfitting
훈련 데이터의 양과 잡음에 비해 모델이 너무 복잡할 때
ex) 고차원 다항 회귀 모델 vs 선형 모델
- 단순화: 파라미터 수가 적은 모델 선택, 특성 수 줄이기, **규제**regulation - 모델에 제약
- 규제의 양은 **[[하이퍼파라미터hyperparameter]]가 결정
- 더 많은 데이터
- 잡음 줄이기
6. 훈련 데이터 과소적합underfitting
모델이 너무 단순해서 데이터의 내재된 구조를 학습하지 못할 때
- 모델 파라미터가 더 많은 모델 선택
- 학습 알고리즘에 더 좋은 특성 제공(특성 공학)
- 모델의 제약을 줄인다. 하이퍼파라미터 감소



- [[믿기 힘든 데이터의 효과]]


Loading