diff --git "a/week1/6\354\241\260_\352\271\200\353\257\274\354\244\200.md" "b/week1/6\354\241\260_\352\271\200\353\257\274\354\244\200.md" new file mode 100644 index 0000000..11376f5 --- /dev/null +++ "b/week1/6\354\241\260_\352\271\200\353\257\274\354\244\200.md" @@ -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점수) + - 각 특성값이 평균에서 얼마나 떨어져 있는지 나타냄 + - 표준편차의 몇 배만큼 떨어져 있는지 표시 + \ No newline at end of file diff --git "a/week2/6\354\241\260_\352\271\200\353\257\274\354\244\2002.md" "b/week2/6\354\241\260_\352\271\200\353\257\274\354\244\2002.md" new file mode 100644 index 0000000..75d3b4e --- /dev/null +++ "b/week2/6\354\241\260_\352\271\200\353\257\274\354\244\2002.md" @@ -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 값 간의 곱이나 차이를 주로 사용한다. + - 규제 + 조정 학습과 비슷한 방법. 훈련 세트에 대해 너무 과도하게 학습되는 것을 방지한다. \ No newline at end of file diff --git "a/week2/6\354\241\260_\352\271\200\353\257\274\354\244\2005.md" "b/week2/6\354\241\260_\352\271\200\353\257\274\354\244\2005.md" new file mode 100644 index 0000000..ecec07d --- /dev/null +++ "b/week2/6\354\241\260_\352\271\200\353\257\274\354\244\2005.md" @@ -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 (평균 제곱 오차) + 데이터와 모델의 함수가 얼마나 평균적으로 떨어져 있는지 보여주는 지표. \ No newline at end of file diff --git "a/week3/6\355\214\200_\352\271\200\353\257\274\354\244\200.md" "b/week3/6\355\214\200_\352\271\200\353\257\274\354\244\200.md" new file mode 100644 index 0000000..e02a6de --- /dev/null +++ "b/week3/6\355\214\200_\352\271\200\353\257\274\354\244\200.md" @@ -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에서 멀어질수록 손실값이 아주 큰 양수가 됨. \ No newline at end of file diff --git "a/week5/5\355\214\200_\352\271\200\353\257\274\354\244\200.md" "b/week5/5\355\214\200_\352\271\200\353\257\274\354\244\200.md" new file mode 100644 index 0000000..1a7434e --- /dev/null +++ "b/week5/5\355\214\200_\352\271\200\353\257\274\354\244\200.md" @@ -0,0 +1,21 @@ ++ 비지도 학습 + - 타깃이 존재하지 않을 때 사용하는 머신러닝 알고리즘이다. 개발자가 직접 가르쳐 주지 않아도 데이터에 있는 무언가를 스스로 추출해 학습한다. + ++ 과일 사진 분류 예제 + - 각각의 과일 사진 데이터는 100 x 100의 픽셀로 이루어져 있다. 이를 모델에 학습시키기 위해서는 이와 같은 2차원 배열을 1차원 배열로 펼쳐 계산해야 편리하다. + - 사진 데이터의 각 픽셀들은 0과 255 사이의 값들을 가진다. + - 각 픽셀들을 막대 그래프로 나타낸다면 사과, 파인애플, 바나나의 그래프에서 각각의 특징들이 나타난다. + - 절댓값 오차를 이용해 평균값과 가장 가까운 사진을 고른다. + - 이와 같이 픽셀값을 이용해 비슷한 샘플들끼리 모으는 작업을 "군집" 이라 하고, 군집 알고리즘으로부터 생성된 그룹을 "클러스터" 라고 한다. + ++ K-평균 + - 클러스터의 중심에 위치하는 평균값이다. + - 클러스터 중심, 센트로이드 등으로도 불린다. + - K-평균 알고리즘은 클러스터 중심과 클러스터 내의 샘플 사이의 거리를 잴 수 있고, 이 거리의 제곱들의 합을 "이너셔" 라고 한다. + - 군집 알고리즘에서 K-평균을 찾는 다양한 방법들 중 "엘보우" 방법이 대표적이다. 일반적으로 클러스터의 개수가 늘어나면 클러스터 개개의 크기는 줄어들기 때문에 이너셔 값도 줄어들게 되는데, 엘보우 방법은 이 클러스터 개수를 늘려가면서 이너셔의 변화를 관찰하며 최적값을 찾는 방법이다. + ++ 주성분 분석 + - 머신러닝 데이터에서 "차원" 은 몇 개의 특성을 갖고 있는지 나타내는 지표이다. 차원이 너무 많아질 경우 모델의 학습이 오래 걸리는 등 난항을 겪을 수 있다. 따라서 주어진 데이터에서 이 차원을 최대한 축소하는 "차원 축소" 의 과정이 매우 용이하다. + - 차원 축소 중 대표적인 방법인 "주성분 분석(PCA)" 는 데이터의 분산이 큰 방향을 찾는 것으로 이해할 수 있다. 분산이 큰 방향으로 그래프 상에서 화살표를 긋는다면, 이를 벡터로 이해할 수 있고, 이 벡터를 "주성분" 이라고 한다. + - 주성분이 원본의 데이터의 분산을 얼마나 잘 나타내는지 기록한 값을 "설명된 분산" 이라고 한다. + - 이 주성분 분석 알고리즘과 같은 차원 축소 과정은 원래의 데이터의 특징을 살리면서도 차원을 축소시켜 데이터 연산의 속도를 빠르게 할뿐만 아니라 오히려 학습의 정확도까지 높일 수 있는 방법이다. \ No newline at end of file diff --git "a/week5/6\355\214\200_\352\271\200\353\257\274\354\244\200.md" "b/week5/6\355\214\200_\352\271\200\353\257\274\354\244\200.md" new file mode 100644 index 0000000..1a7434e --- /dev/null +++ "b/week5/6\355\214\200_\352\271\200\353\257\274\354\244\200.md" @@ -0,0 +1,21 @@ ++ 비지도 학습 + - 타깃이 존재하지 않을 때 사용하는 머신러닝 알고리즘이다. 개발자가 직접 가르쳐 주지 않아도 데이터에 있는 무언가를 스스로 추출해 학습한다. + ++ 과일 사진 분류 예제 + - 각각의 과일 사진 데이터는 100 x 100의 픽셀로 이루어져 있다. 이를 모델에 학습시키기 위해서는 이와 같은 2차원 배열을 1차원 배열로 펼쳐 계산해야 편리하다. + - 사진 데이터의 각 픽셀들은 0과 255 사이의 값들을 가진다. + - 각 픽셀들을 막대 그래프로 나타낸다면 사과, 파인애플, 바나나의 그래프에서 각각의 특징들이 나타난다. + - 절댓값 오차를 이용해 평균값과 가장 가까운 사진을 고른다. + - 이와 같이 픽셀값을 이용해 비슷한 샘플들끼리 모으는 작업을 "군집" 이라 하고, 군집 알고리즘으로부터 생성된 그룹을 "클러스터" 라고 한다. + ++ K-평균 + - 클러스터의 중심에 위치하는 평균값이다. + - 클러스터 중심, 센트로이드 등으로도 불린다. + - K-평균 알고리즘은 클러스터 중심과 클러스터 내의 샘플 사이의 거리를 잴 수 있고, 이 거리의 제곱들의 합을 "이너셔" 라고 한다. + - 군집 알고리즘에서 K-평균을 찾는 다양한 방법들 중 "엘보우" 방법이 대표적이다. 일반적으로 클러스터의 개수가 늘어나면 클러스터 개개의 크기는 줄어들기 때문에 이너셔 값도 줄어들게 되는데, 엘보우 방법은 이 클러스터 개수를 늘려가면서 이너셔의 변화를 관찰하며 최적값을 찾는 방법이다. + ++ 주성분 분석 + - 머신러닝 데이터에서 "차원" 은 몇 개의 특성을 갖고 있는지 나타내는 지표이다. 차원이 너무 많아질 경우 모델의 학습이 오래 걸리는 등 난항을 겪을 수 있다. 따라서 주어진 데이터에서 이 차원을 최대한 축소하는 "차원 축소" 의 과정이 매우 용이하다. + - 차원 축소 중 대표적인 방법인 "주성분 분석(PCA)" 는 데이터의 분산이 큰 방향을 찾는 것으로 이해할 수 있다. 분산이 큰 방향으로 그래프 상에서 화살표를 긋는다면, 이를 벡터로 이해할 수 있고, 이 벡터를 "주성분" 이라고 한다. + - 주성분이 원본의 데이터의 분산을 얼마나 잘 나타내는지 기록한 값을 "설명된 분산" 이라고 한다. + - 이 주성분 분석 알고리즘과 같은 차원 축소 과정은 원래의 데이터의 특징을 살리면서도 차원을 축소시켜 데이터 연산의 속도를 빠르게 할뿐만 아니라 오히려 학습의 정확도까지 높일 수 있는 방법이다. \ No newline at end of file