diff --git "a/week1/1\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" "b/week1/1\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" new file mode 100644 index 0000000..c1e40d1 --- /dev/null +++ "b/week1/1\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" @@ -0,0 +1,26 @@ +**인공지능이란?** +사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템 + +>Ex1) 강인공지능 : 사람과 비슷한 인공지능 + +>Ex2) 약인공지능 : 사람의 일을 보조하는 인공지능 + +**인공지능의 학습** +>1. 머신러닝 : 자동으로 데이터에서 규칙 학습하는 알고리즘 연구 분야 + +>2. 딥러닝 : 머신러닝 알고리즘 중 심층신경망을 기반으로 한 방법 + +##데이터 시각화 +1. 라이브러리 : matplotlib.pyplot을 사용. +2. 내장 함수 : scatter() 산점도를 그리는 함수, xtable() x축의 변수를 설정하는 함수, ytable() y축의 변수를 설정하는 함수, show() 그래프를 출력하는 함수. + +##알고리즘 +1. 라이브러리 : sklearn.neighobrs 중에서 KNeighborsClassifier를 사용. +2. 설명 : 근접한 데이터를 보고 다수를 차지하는 것을 정답으로 사용하는 머신러닝. +3. 사용법 : KNeighborsClassifier(n_neighobrs=a) 근접한 a개의 데이터를 바탕으로 판단함. + +##머신러닝 구현하기 +1. 데이터 : 지도 학습 기준, 훈련 데이터와 테스트 데이터가 필요하며 데이터에 샘플이 올바르게 섞여 있지 않을 경우 샘플링 편향이 발생할 수 있다. *데이터는 사이킷런의 train_test_split을 이용하여 비율에 맞게 훈련과 테스트 데이터로 나눌 수 있다.* +2. 사용 함수 : fit()을 이용하여 훈련 데이터를 학습 시키고 score를 통해 정확도를 출력하며 predict()를 이용해 테스트 데이터를 판별한다.(이진 분류의 경우) +3. 시각화 : 산점도를 보면 x와 y의 범위가 다름을 알 수 있다. 따라서 데이터 전처리를 통해 특성값을 일정하게 맞춰주어야한다. + diff --git "a/week2/2\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" "b/week2/2\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" new file mode 100644 index 0000000..b6d1ec8 --- /dev/null +++ "b/week2/2\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" @@ -0,0 +1,28 @@ + +## ▷ 알고리즘 회귀 +* * * +### ▶ 회귀란? +> 두 변수 사이의 상관관계를 분석하는 방법을 말한다. +### ▶ k-최근접 이웃 회귀 +> 예측하려는 샘플에 가장 가까운 샘플 k개를 선택한 뒤 샘플들의 클래스를 확인하여 다수의 클래스를 새로운 샘플의 클래스로 예측하는 회귀 알고리즘이다. +### ▶ 결정계수 +> 분류의 경우 정확도로 성능을 나타내었지만 회귀는 값을 정확하게 맞출 수 없는 구조이기 때문에 결정 계수라는 것을 사용합니다. + +> 결정계수는 R^2 = 1 - { (타깃 - 예측)^2의 합 / (타깃 - 평균)^2의 합 }으로 계산합니다. 즉, 1에 가까울수록 예측이 타겟에 가깝다고 해석할 수 있습니다. +### ▶ 과대적합과 과소적합 +> 1. 과대적합 : 훈련 세트 점수는 매우 좋으나 테스트 세트의 점수가 매우 나쁜 경우를 말한다. 다르게 해석하면 훈련 세트에만 잘 맞게 학습되어 테스트 세트에서 모델이 원하는 대로 작동하지 못하게 된 것이다. + +> 2. 과소적합: 훈련 세트보다 테스트 세트의 점수가 높거나 또는 훈련 세트, 테스트 세트 모두 점수가 낮게 나오는 경우를 말한다. 다르게 해석하면 모델이 단순하거나 훈련 세트가 너무 적어 훈련이 잘 이루어지지 않았다는 것이다. +* * * +### ▶ 선형 회귀 +> 선형 회귀는 데이터들을 바탕으로 최적의 직선을 찾아 직선으로 예측하는 것을 말한다. 사이킷 런에서 선형 회귀를 하는 방법은 최소제곱법이다. 직선과 데이터들의 거리의 제곱의 합이 최소가 되는 직선을 최적의 직선으로 선택하는 방법이다. +### ▶ 다항 회귀 +> 다항 회귀란 말 그대로 독립변수가 2개 이상인 선형 회귀를 말한다. +### ▶ 다중 회귀 +> 다중 회귀는 특성이 2개 이상인 선형 회귀를 말한다. + +> #### ※ 특성 공학이란? +>> 기존의 특성을 이용해 새로운 특성을 뽑아내는 작업을 말한다. + +> #### ※ 규제란? +>> 모델이 훈련할 때 과대적합이 일어나지 않도록 하는 것이다. 선형 회귀 모델의 예로 가중치를 작게 만드는 일이다. diff --git "a/week3/3\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" "b/week3/3\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" new file mode 100644 index 0000000..4556442 --- /dev/null +++ "b/week3/3\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" @@ -0,0 +1,33 @@ + +## ▷ 다양한 분류 알고리즘 +* * * +### ▶ 로지스틱 회귀 +> 이름은 회귀이지만 분류 모델입니다. +> ex) z = a × (Weight) + b × (Length) + c × (Diagonal) + d × (Height) + e × (Width) + f, a, b, c, d, e는 가중치이며 다중 회귀를 위한 선형 방정식과 동일합니다. 여기서 z의 값은 무관하나 확률이 되려면 0~1 또는 0~100%가 되어야합니다. 이를 도와주는 것이 시그모이드 함수입니다. +> #### ▶ 시그모이드 함수 +> > 시그모이드 함수는 다음과 같이 계산합니다. φ = 1/ 1+ e^(−z) 이 함수는 z값이 양의 무한대에 가까울수록 1에, 음의 무한대에 가까울수록 0에 수렴하게 됩니다. 아쉽게도 이중분류만 가능한 시그모이드 함수 다중 분류는 어떻게 함수를 이용할까요? +> #### ▶ 소프트맥스 함수 +> > 소프트맥스 함수는 여러 개의 선 형 방정식의 출력값을 0~1 사이로 압축하고 전체 합이 1이 되도록 만드는 함수를 말합니다. +### ▶ 확률적 경사 하강법 +> 하나의 샘플을 훈련 세트에서 랜덤하게 골라 가장 가파른 길을 찾는 방법을 말합니다. +> #### ▶ 에포크 +> > 훈련 세트를 한 번 모두 사용하는 과정을 말합니다. +> 다시 돌아가서 훈련 세트가 너무 많다면 에포크가 너무 커질 수 있습니다. 이럴 땐 하나의 샘플이 아닌 여러 개의 샘플을 이용하는 것이 좋습니다. +> #### ▶ 미니 배치 경사 하강법 +> > 여러 개의 샘플을 이용하여 경사 하강법을 수행하는 방법입니다. +> #### ▶ 배치 경사 하강법 +> > 모든 샘플을 이용하여 경사 하강법을 수행하는 방법입니다. +### ▶ 손실함수 +> 어떤 문제에서 머신러닝 알고리즘이 얼마나 엉터리인지를 측정하는 기준입니다. +> #### ▶ 로지스틱 손실 함수 +> > 양성 클래스(타깃 = 1)일 때 손실을 -log(예측 확률)로 계산하고 음성 클래스(타깃 = 0)일 때 손실은 -log(1-예측 확률)로 계산하는 함수입니다. +> > 다른 이름으로는 이진 크로스엔트로피 손실 함수라고도 합니다. +> > 이름 처럼 다중 분류에서는 크로스엔트로피 손실 함수를 사용할 수 있습니다. + +> 결정계수는 R^2 = 1 - { (타깃 - 예측)^2의 합 / (타깃 - 평균)^2의 합 }으로 계산합니다. 즉, 1에 가까울수록 예측이 타겟에 가깝다고 해석할 수 있습니다. +### ▶ 에포크 과대적합과 과소적합 +> 에포크 횟수가 너무 적으면 과소적합, 많으면 과대적합이 일어날 수 있습니다. 이런 일을 방지하고자 모델을 조기 종료합니다. +> #### ▶ 조기 종료 +> > 훈련 세트 점수는 에포크가 진행될수록 꾸준히 증가하지만 테스트 세트 점수는 어느 순간 감소하기 시작합니다. 바로 이 지점 이 모델이 과대적합되기 시작하는 곳입니다. 따라서 이렇게 과대적합이 시작하기 전에 훈련을 멈추는 것을 말합니다. + + diff --git "a/week5/5\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" "b/week5/5\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" new file mode 100644 index 0000000..7b876c7 --- /dev/null +++ "b/week5/5\354\243\274\354\260\250_\354\236\245\354\244\200\354\230\244.md" @@ -0,0 +1,32 @@ + +## ▷ 비지도 학습 +* * * +### ▶ 비지도 학습 +> 타깃이 없을 때 주로 사용하는 머신러닝 알고리즘이다. +> #### ▶ 군집 +> > 비슷한 샘플끼리 그룹으로 모으는 작업을 말한다. +> #### ▶ 클러스터 +> > 군집 알고리즘에서 만든 그룹을 칭한다. +### ▶ k-평균 알고리즘 +> 작동방식은 다음과 같습니다. +> > 1 무작위로 k개의 클러스터 중심을 정합니다. +> > +> > 2 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정합니다. +> > +> > 3 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경합니다. +> > +> > 4 클러스터 중심에 변화가 없을 때까지 2번으로 돌아가 반복합니다. +> #### ▶ 최적의 k 찾기 +> > ##### ▶ 엘보우 +> > > 적절한 클러스터 개수를 찾기 위한 대표적인 방법 중 하나이다. +> > ##### ▶ 이너셔 +> > > 클러스터 중심과 클러스터에 속한 샘플 사이의 거리의 제곱 합을 말한다. +> > > +> > > 이너셔는 클러스터에 속한 샘플이 얼마나 가깝게 모여 있는지를 나타내는 값으로 생각할 수 있습니다. +> > +> > > 엘보우 방법은 클러스터 개수를 늘려가면서 이너셔의 변화를 관찰하여 최적의 클러스터 개수를 찾는 방법입니다. 클러스터 개수를 증가시키면서 이너셔를 그래프로 그리면 감소하는 속도가 꺾이는 지점이 있는데 이 지점부터는 클러스터 개수를 늘려도 크게 개선되지 않습니다. 즉 이너셔가 크게 줄어들지 않습니다. 이 지점이 마치 팔꿈치 모양이어서 엘보우 방법이라 부릅니다. +### ▶ 주성분 분석 +> #### ▶ 차원 +> > 데이터가 가진 속성을 특성이라 부르며 이런 특성을 차원이라고도 부릅니다. +> +> 주성분 분석은 대표적인 차원 축소 알고리즘으로 간단히 PCA라고도 합니다. 주성분 분석은 데이터에 있는 분산이 큰 방향을 찾는 것입니다. 그리고 이렇게 찾아준 방향을 벡터로 표시하며 이 벡터를 주성분이라고 부릅니다.