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

[5주차 과제 제출] 5팀 김민준 #80

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions week1/6조_김민준.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Ch 1 . 나의 첫 머신러닝

+ 인공지능 / 머신러닝 / 딥러닝
* 인공지능
- 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술
- 인공일반지능(강인공지능) : 인간의 어떠한 지적 업무를 모두 성공적으로 수행하는 지능
- 약인공지능 : 특정 영역에서만 활용 가능한 지능
* 머신러닝
- 데이터에서 자동으로 규칙을 학습하는 알고리즘
- 사이킷런(sklearn) 등 사용
* 딥러닝
- 머신러닝 알고리즘 중 인공신경망을 기반으로 한 방법
- Tensorflow, Pytorch 등 사용
+ 마크다운(Markdown)
- 텍스트 기반의 마크업 언어
- 구글 Colab 텍스트 셀 등 사용
+ K-최근접 이웃 알고리즘 (K-Nearest Neighbor)
* 정의
- 주위의 다른 데이터에서 다수를 차지하는 것으로 정답을 판단하는 분류(Classify) 알고리즘
- 사이킷런 라이브러리에서 KNeighborsClassifier 사용
+ fit() : 훈련 데이터를 분류기에 입력하는 함수
+ predict() : 평가 데이터를 기반으로 label값을 예측하는 함수
+ score() : 훈련된 모델의 성능을 측정하는 함수
* 용어
- 특성 : 데이터의 특징
- 산점도 : x, y축으로 이루어진 죄표계에서 x, y의 관계를 표현하는 방법 (변수 혹은 특성 간의 관계 표현)
- 훈련 : 모델에 데이터를 전달하여 규칙을 학습하는 과정

# Ch 2 . 데이터 다루기

+ 지도 학습
* 비지도 학습 (Unsupervised learning)
- 훈련하기 위한 train data 필요 (정답은 target)
- ex) K-최근접 이웃 알고리즘
* 지도 학습 (Supervised learning)
* 강화 학습 (Reinforcement learning)

+ 훈련 세트 및 테스트 세트
- 머신러닝 알고리즘의 성능 평가에 사용
- 훈련에 한 번 사용한 데이터를 통한 모델 평가는 적절하지 않음
* 샘플링 편향
- 훈련 세트와 테스트 세트의 샘플이 고르지 못해 샘플링이 한쪽으로 치우침
- 균일한 훈련 세트 및 테스트 세트 필요
- numpy 라이브러리 shuffle() 함수 등 사용

+ 데이터 전처리
- 데이터의 특성값을 일정 기준으로 통일해야 함
- 전처리를 진행하지 않으면 정확도 문제 발생 가능
* 표준점수 (z점수)
- 각 특성값이 평균에서 얼마나 떨어져 있는지 나타냄
- 표준편차의 몇 배만큼 떨어져 있는지 표시

37 changes: 37 additions & 0 deletions week2/6조_김민준2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#Ch. 3

+ 회귀
주어진 샘플을 몇 개의 범주 중 하나로 판단하는 분류와는 다르게, 회귀는 특정 값을 숫자로써 예측하는 방법이다.

+ K-최근접 이웃 분류
1. 값을 구하려는 데이터와 가장 가까운 샘플 K개를 선택한다. 여기서 숫자 K는 반드시 홀수로 설정해야 한다.
2. 선택된 K개의 샘플 중 다수를 차지하는 클래스를 데이터의 범주로 예측한다.

+ K-최근접 이웃 회귀
1. 값을 구하려는 데이터와 가장 가까운 샘플 K개를 선택한다. 단, 분류와 다르게 클래스가 아니라 수치를 이용한다.
2. 이웃한 샘플들의 평균값을 도출하여 데이터의 타깃값을 구한다.

+ 결정계수
R^2이라고도 불리는 결정계수는 각 샘플들의 타깃값과 예측값의 차이를 제곱하여 더한 후, 타깃과 평균의 차이를 제곱한 값들의 총합으로 나누어 도출되는 값이다. 예측값이 타깃값과 가까울수록 결정계수는 1에 가까워진다.

+ 과대적합 (overfitting)
훈련 세트에서만 점수가 높고 테스트 세트에서는 점수가 낮은 경우, 즉 훈련 세트에 대해서만 과도하게 학습된 경우를 뜻한다.

+ 과소적합 (underfitting)
훈련 세트보다 테스트 세트의 점수가 높은 경우, 혹은 두 점수 모두 낮은 경우, 즉 모델이 너무 단순하게 학습되어 훈련 세트에서조차 잘 학습되지 않은 경우를 뜻한다.

+ K-최근접 이웃 알고리즘의 한계
K-최근접 이웃 회귀는 가장 가까운 샘플들의 평균을 값으로 도출하는데, 새로 입력된 샘플이 훈련 데이터의 범위를 벗어나게 된다면 적절치 않은 값을 도출할 수 있다.

+ 선형 회귀 (linear regression)
전체 데이터의 특성을 가장 잘 나타낼 수 있는 하나의 직선, 혹은 선형적인 그래프를 표현하는 알고리즘이다.

+ 다항 회귀
다항식을 활용한 선형회귀. 차원이 늘어날수록 그래프(함수)의 계수 또한 늘어난다.

+ 다중 회귀 (multiple regression)
여러 개의 특성을 이용한 선형 회귀 알고리즘.
- 특성 공학
기존의 feature값에서 새로운 특성을 생성하는 작업. 기존의 feature 값 간의 곱이나 차이를 주로 사용한다.
- 규제
조정 학습과 비슷한 방법. 훈련 세트에 대해 너무 과도하게 학습되는 것을 방지한다.
44 changes: 44 additions & 0 deletions week2/6조_김민준5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#Ch. 3

+ 회귀
주어진 샘플을 몇 개의 범주 중 하나로 판단하는 분류와는 다르게, 회귀는 특정 값을 숫자로써 예측하는 방법이다.

+ K-최근접 이웃 분류
1. 값을 구하려는 데이터와 가장 가까운 샘플 K개를 선택한다. 여기서 숫자 K는 반드시 홀수로 설정해야 한다.
2. 선택된 K개의 샘플 중 다수를 차지하는 클래스를 데이터의 범주로 예측한다.

+ K-최근접 이웃 회귀
1. 값을 구하려는 데이터와 가장 가까운 샘플 K개를 선택한다. 단, 분류와 다르게 클래스가 아니라 수치를 이용한다.
2. 이웃한 샘플들의 평균값을 도출하여 데이터의 타깃값을 구한다.

+ 결정계수
R^2이라고도 불리는 결정계수는 각 샘플들의 타깃값과 예측값의 차이를 제곱하여 더한 후, 타깃과 평균의 차이를 제곱한 값들의 총합으로 나누어 도출되는 값이다. 예측값이 타깃값과 가까울수록 결정계수는 1에 가까워진다.

+ 과대적합 (overfitting)
훈련 세트에서만 점수가 높고 테스트 세트에서는 점수가 낮은 경우, 즉 훈련 세트에 대해서만 과도하게 학습된 경우를 뜻한다.

+ 과소적합 (underfitting)
훈련 세트보다 테스트 세트의 점수가 높은 경우, 혹은 두 점수 모두 낮은 경우, 즉 모델이 너무 단순하게 학습되어 훈련 세트에서조차 잘 학습되지 않은 경우를 뜻한다.

+ K-최근접 이웃 알고리즘의 한계
K-최근접 이웃 회귀는 가장 가까운 샘플들의 평균을 값으로 도출하는데, 새로 입력된 샘플이 훈련 데이터의 범위를 벗어나게 된다면 적절치 않은 값을 도출할 수 있다.

+ 선형 회귀 (linear regression)
전체 데이터의 특성을 가장 잘 나타낼 수 있는 하나의 직선, 혹은 선형적인 그래프를 표현하는 알고리즘이다.

+ 다항 회귀
다항식을 활용한 선형회귀. 차원이 늘어날수록 그래프(함수)의 계수 또한 늘어난다.

+ 다중 회귀 (multiple regression)
여러 개의 특성을 이용한 선형 회귀 알고리즘.
- 특성 공학
기존의 feature값에서 새로운 특성을 생성하는 작업. 기존의 feature 값 간의 곱이나 차이를 주로 사용한다.
- 규제
조정 학습과 비슷한 방법. 훈련 세트에 대해 너무 과도하게 학습되는 것을 방지한다.
- 릿지 회귀(Ridge Regression)
릿지 회귀식: 잔자제곱의 합 + 패널티 항의 합
제약 조건에 가장 가까이 접근하는 RSS 값을 선택
- 라쏘 회귀
기존의 선형회귀에서 추가적인 제약 조건을 부여한 알고리즘. MSE가 최소가 되도록 하는 가중치 및 편향을 탐색하고, 가중치들의 크기가 최소가 되도록 함.
* MSE (평균 제곱 오차)
데이터와 모델의 함수가 얼마나 평균적으로 떨어져 있는지 보여주는 지표.
26 changes: 26 additions & 0 deletions week3/6팀_김민준.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
+ 로지스틱 회귀
선형성을 가진 분류 알고리즘.

+ 시그모이드 함수 (sigmoid function)
z값이 음수인 경우에는 0에 수렴하고, 양수인 경우에는 1에 수렴하는 함수 그래프. 치역이 절대로 0과 1 사이의 범위를 벗어나지 않으므로, 이를 0%에서 100%의 확률로 환산할 수 있음.

+ 로지스틱 회귀를 이용한 다중 분류
로지스틱 회귀를 이용한 이진 분류에서는 시그모이드 함수를 사용하지만, 로지스틱 회귀를 이용한 다중 분류에서는 소프트맥스 함수를 이용함.

+ 소프트맥스 함수 (softmax function)
범주마다 z값을 하나씩 계산하여 가장 높은 z값의 범주를 반환함.

+ 옵티마이저: 확률적 경사 하강법
- 경사 하강법 (Gradient Descent)
함수 그래프의 기울기를 이용한 점진적 학습 알고리즘. 손실 함수의 그래프의 기울기가 점점 낮아지는 방향으로 가면서 손실 점수를 줄임.
- 확률적 경사 하강법
전체 훈련 샘플을 사용하지 않고 랜덤하게 하나의 샘플을 골라 경사 하강법을 진행. 하나의 샘플에서 경사 하강법이 진행 완료되면 다음 샘플로 랜덤하게 옮겨 다시 경사하강법 진행. 이런 식으로 전체 샘플에 대해 경사하강법 진행.
- 미니배치 경사하강법 (Minibatch Gradient Descent)
확률적 경사 하강법과 다르게 여러 개의 샘플을 무작위로 선택해 경사 하강법 진행.
- 배치 경사 하강법 (Batch Gradient Descent)
전체 샘플에 대해 한 번에 경사하강법 진행. 가장 안정적인 방법이나, 컴퓨팅 파워가 많이 필요하고, 데이터의 크기에 따라 에러 발생 가능.
+ 손실 함수 (Loss Function)
머신러닝 알고리즘의 학습 결과가 얼마나 잘못되었는지 판단. 손실 함수의 결과값이 낮을수록 좋음.

+ 로지스틱 손실 함수 (Logistic Loss Function, 이진 크로스엔트로피 손실 함수)
양성 클래스 (target = 1) 인 경우에는 -log(예측확률) 로 계산하고, 음성 클래스 (target = 0) 인 경우에는 -log(1-예측확률) 로 계산. 이렇게 된다면 예측 확률이 0에서 멀어질수록 손실값이 아주 큰 양수가 됨.
21 changes: 21 additions & 0 deletions week5/5팀_김민준.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
+ 비지도 학습
- 타깃이 존재하지 않을 때 사용하는 머신러닝 알고리즘이다. 개발자가 직접 가르쳐 주지 않아도 데이터에 있는 무언가를 스스로 추출해 학습한다.

+ 과일 사진 분류 예제
- 각각의 과일 사진 데이터는 100 x 100의 픽셀로 이루어져 있다. 이를 모델에 학습시키기 위해서는 이와 같은 2차원 배열을 1차원 배열로 펼쳐 계산해야 편리하다.
- 사진 데이터의 각 픽셀들은 0과 255 사이의 값들을 가진다.
- 각 픽셀들을 막대 그래프로 나타낸다면 사과, 파인애플, 바나나의 그래프에서 각각의 특징들이 나타난다.
- 절댓값 오차를 이용해 평균값과 가장 가까운 사진을 고른다.
- 이와 같이 픽셀값을 이용해 비슷한 샘플들끼리 모으는 작업을 "군집" 이라 하고, 군집 알고리즘으로부터 생성된 그룹을 "클러스터" 라고 한다.

+ K-평균
- 클러스터의 중심에 위치하는 평균값이다.
- 클러스터 중심, 센트로이드 등으로도 불린다.
- K-평균 알고리즘은 클러스터 중심과 클러스터 내의 샘플 사이의 거리를 잴 수 있고, 이 거리의 제곱들의 합을 "이너셔" 라고 한다.
- 군집 알고리즘에서 K-평균을 찾는 다양한 방법들 중 "엘보우" 방법이 대표적이다. 일반적으로 클러스터의 개수가 늘어나면 클러스터 개개의 크기는 줄어들기 때문에 이너셔 값도 줄어들게 되는데, 엘보우 방법은 이 클러스터 개수를 늘려가면서 이너셔의 변화를 관찰하며 최적값을 찾는 방법이다.

+ 주성분 분석
- 머신러닝 데이터에서 "차원" 은 몇 개의 특성을 갖고 있는지 나타내는 지표이다. 차원이 너무 많아질 경우 모델의 학습이 오래 걸리는 등 난항을 겪을 수 있다. 따라서 주어진 데이터에서 이 차원을 최대한 축소하는 "차원 축소" 의 과정이 매우 용이하다.
- 차원 축소 중 대표적인 방법인 "주성분 분석(PCA)" 는 데이터의 분산이 큰 방향을 찾는 것으로 이해할 수 있다. 분산이 큰 방향으로 그래프 상에서 화살표를 긋는다면, 이를 벡터로 이해할 수 있고, 이 벡터를 "주성분" 이라고 한다.
- 주성분이 원본의 데이터의 분산을 얼마나 잘 나타내는지 기록한 값을 "설명된 분산" 이라고 한다.
- 이 주성분 분석 알고리즘과 같은 차원 축소 과정은 원래의 데이터의 특징을 살리면서도 차원을 축소시켜 데이터 연산의 속도를 빠르게 할뿐만 아니라 오히려 학습의 정확도까지 높일 수 있는 방법이다.
21 changes: 21 additions & 0 deletions week5/6팀_김민준.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
+ 비지도 학습
- 타깃이 존재하지 않을 때 사용하는 머신러닝 알고리즘이다. 개발자가 직접 가르쳐 주지 않아도 데이터에 있는 무언가를 스스로 추출해 학습한다.

+ 과일 사진 분류 예제
- 각각의 과일 사진 데이터는 100 x 100의 픽셀로 이루어져 있다. 이를 모델에 학습시키기 위해서는 이와 같은 2차원 배열을 1차원 배열로 펼쳐 계산해야 편리하다.
- 사진 데이터의 각 픽셀들은 0과 255 사이의 값들을 가진다.
- 각 픽셀들을 막대 그래프로 나타낸다면 사과, 파인애플, 바나나의 그래프에서 각각의 특징들이 나타난다.
- 절댓값 오차를 이용해 평균값과 가장 가까운 사진을 고른다.
- 이와 같이 픽셀값을 이용해 비슷한 샘플들끼리 모으는 작업을 "군집" 이라 하고, 군집 알고리즘으로부터 생성된 그룹을 "클러스터" 라고 한다.

+ K-평균
- 클러스터의 중심에 위치하는 평균값이다.
- 클러스터 중심, 센트로이드 등으로도 불린다.
- K-평균 알고리즘은 클러스터 중심과 클러스터 내의 샘플 사이의 거리를 잴 수 있고, 이 거리의 제곱들의 합을 "이너셔" 라고 한다.
- 군집 알고리즘에서 K-평균을 찾는 다양한 방법들 중 "엘보우" 방법이 대표적이다. 일반적으로 클러스터의 개수가 늘어나면 클러스터 개개의 크기는 줄어들기 때문에 이너셔 값도 줄어들게 되는데, 엘보우 방법은 이 클러스터 개수를 늘려가면서 이너셔의 변화를 관찰하며 최적값을 찾는 방법이다.

+ 주성분 분석
- 머신러닝 데이터에서 "차원" 은 몇 개의 특성을 갖고 있는지 나타내는 지표이다. 차원이 너무 많아질 경우 모델의 학습이 오래 걸리는 등 난항을 겪을 수 있다. 따라서 주어진 데이터에서 이 차원을 최대한 축소하는 "차원 축소" 의 과정이 매우 용이하다.
- 차원 축소 중 대표적인 방법인 "주성분 분석(PCA)" 는 데이터의 분산이 큰 방향을 찾는 것으로 이해할 수 있다. 분산이 큰 방향으로 그래프 상에서 화살표를 긋는다면, 이를 벡터로 이해할 수 있고, 이 벡터를 "주성분" 이라고 한다.
- 주성분이 원본의 데이터의 분산을 얼마나 잘 나타내는지 기록한 값을 "설명된 분산" 이라고 한다.
- 이 주성분 분석 알고리즘과 같은 차원 축소 과정은 원래의 데이터의 특징을 살리면서도 차원을 축소시켜 데이터 연산의 속도를 빠르게 할뿐만 아니라 오히려 학습의 정확도까지 높일 수 있는 방법이다.