(예전에 교육받은거...)
머신러닝 :: Scikit-learn
딥러닝 :: tensorflow
를 많이 사용한다.
Google Colab을 사용할 예정
주피터, Colab 의 차이점
주피터 : pc 설치 >> 로컬에서 쓴는 환경
Colab : 구글 클라우드 버전 에서 쓸 수 있는 것
개발 환경
언어 : 파이썬 / 환경 : 구글 코랩
할것
아이리스
보스턴 주택가격
타이타닉 >> 생존 예측 등
MMLIST >>
비율데이터 2017
머신러닝 소개
Traditional Programming vs Machine Learning

관계도
Machine Learning
Neural N
Deep Learning
Machine Learning 장점
- 학습을 위한 "지식 표현"(representation)이 필요 없다.
(컴퓨터를 위해 지식을 이해하게 하기 위한 표현은 어려운 문제) - 사람이 만든 모델보다 좋은 결과를 보여줄 수 있다.
(전제: 충분한 데이터와 적합한 알고리즘) - 고도의 수학 혹은 프로그래밍 능력을 필요로 하지 않는다.
- 자동화가 가능하다
(학습, 파라미터 최적화 등을 자동화 할 수 있다) - 저렴하고 유연하다
(데이터를 제외한 나머지 과정은 자동화가 가능하므로)
Machine Learning 단점
- 데이터 준비에 많은 노력이 든다.
(Supervised Learning의 경우, 데이터에 대응하는 결과치도 만들어 주어야) - 오류 발생이 쉽다(Error prone).
(일반적으로 정확도가 높은 모델을 만들기 어렵다) - 생성된 모델을 해석하기가 어렵다(블랙박스).
(모델 자체를 수정하거나 개선할 수 없다) - Overfitting (과도한 최적화)문제가 종종 발생한다
(일부 데이터에만 높은 예측력)
머신러닝 : 통계기반으로 >> 만들어진다.
튜닝할때 수학적인 지식이 있으면 좋다
머신러닝 분야
- Supervised learning(지도학습) : 데이터와 답을주고 예측함.
- ex> oo => o이다 라는 데이터들을 주고 oo일때는 뭐지 ? 라는 답을 추출해내는 것
- Regressiong(회귀모델): 연속적인 값을 예측하는 모델
- Classification(분류모델): 종류를 예측하는 것, 클래스를 분류 (binary , multiclass)
- 비즈니스 예측에 쓰임
- Unsupervised learning(비지도학습) : 답이 없음 데이터만 준다.
- Clustering: 데이터만 가지고 알아서 분류해봐!
- Decomposing : 요약을 해봐 , 간단한 형태로 만들어봐
- 데이터 시각화 , 가공, 전처리 등 에 쓰임 _ 데이터를 준비하는 비용이 안든다.
- Reinforcement Learning
- 상벌체계 같은것 (agent <--> enviroment 상호작용)
- 잘하면 상을 주고 못하면 안주는 형태 ? 목표를 도달하면 ? 그만큼 업데이트를 함
- 예시> 알파고
- 위에것과 아예 다름
Cost Function

- Hypothesis :
- Cost Function : MSE (에러 제곱의 평균) : 회귀모델에서 가장 많이 쓰는 방법
2m인 이유? : 오차를 줄여야해 .. 함수를 미분하는 것을만든다. 이럴때 제곱이 앞으로 가고 2m일 때 2로 나눠지기 떄문
>> 이 비용을 최소화 시켜야 한다. :: Goal
- 비용이 최소화 되는 지점 ::: 0 이되는 지점 u자의 맨 밑부분
Linear Regression
- 회귀 : 전체의 평균으로 회귀
- 선형 회귀 : x(입력) , y(출력)

- 직선이 파란색 점들을 가장 잘 대변한 것이다.
- 우리의 모델이 실제 데이터와 얼마나 차이나는지 구하는것 (노란색 선)
>> 노란색 애들을 더하면 (우리의 모델과 실제값의 차이가 됨) (SE)
>> 그것의 평균 (MSE)
>>MSE가 최소가 되어야 함
>> 이건 보통 머신러닝 방법
** 딥러닝은 y =Wx+b (가중치와 ..) 을 아무렇게 정함 >> 이 MSE의 비용 계산 >> W ,b를 조정하면서 MSE가 어떻게 변하는지봄 >> 조정하면서 최저점이 되는 기준을 구한다.
Underfitting vs. Overfitting
- Overfitting: 너무 높은 complexity가 높은 model을 채택하는 경우 발생
- Underfitting: 너무 낮은 complexity가 낮은 model을 채택하는 경우
정확도가 너무 높아도 안좋을 수 있음 >> 새로운 데이터를 잘 못 맞출 수 있음

Regression Algorithms
- Linear Regression (선형회귀)
- Stochastic Gradient Descent Regression (SGD 회귀)
- SVR, Support Vector Regression (서포트 벡트 회귀) **
- Random Forest Regression (랜덤 포레스트 회귀)
- Bayesian Regression (베이지안 회귀)
- Isotonic Regression (등위 회귀)
- Bayesian Automatic Relevance Determination Regression (베이지안 ARD 회귀)
Classification Algorithms
- Logistic Regression (로지스틱 회귀)
- SVM, Support Vector Machine (서포트 벡터 머신)
- Random Forest (랜덤 포레스트)
- Decision Tree (의사결정 트리)
- GBT, Gradient Boosting Tree (그레디언트 부스팅 트리)
- SGD Classifier (SGD 분류기)
- AdaBoost
Clustering Algorithms
Audio recording started: 오후 1:27 2020년 1월 8일 수요일
- K-means (K-평균)
- Spectral Clustering (스펙트럼 군집화)
- Gaussian Mixtures (가우시안 혼합)
- Agglomerative Clustering (병합식 군집화)
- Affinity Propagation (친근도 전파)
- Mean Shift (평균 이동)
알고리즘 비교
MNIST 손글씨 데이터 세트 http://yann.lecun.com/exdb/mnist/
- Logistic regression: 12% (88%)
- SVM 0.56% (99.44%)
- Deep learning: 0.23% (99.77%)
- 사람: 0.35% (99.65%)

사람보다 딥러닝으로 학습한게 잘 맞춘다? >> 엄청난 장비 없이도 >> 만들 수 있다.
머신러닝 프로세스
Data Pre-Processing (전처리) >>
머신러닝으로 학습을 시키고 >>
파라미터를 튜닝해서 >>
후처리를 하고 >>
최종적으로 모델을 픽스시키기 까지 의 과정중 '전처리' 가 시간이 가장 많이 들어간다. 7(전처리):3 (나머지)
구글 CoLab 사용
"Google Drive + Jupyter Notebook"
다음은 Google 온라인 머신러닝 과정에서 가져온 일부 노트입니다. 전체 과정 웹사이트에서 자세한 내용을 확인하세요.>>> 하면 좋음
Numpy Pandas
- Pandas : 코드로 짜는 엑셀
새 파일 만들기
파일 >> 새 Python3 선택 >>>확장자는 .ipynb
연결버튼
문서에서 가상기계를 만들어서 할당시켜줌
우분투 , 파이썬 ,사이킬런? 등등 >> 라이브러리 깔려있음 그래서 100기가중 20기가 사용가능함
하나의 PC를 빌리는셈
Scikit-learn
머신러닝 딥러닝 할때 도움 받을 수 있는 패키지
- 자료 제공:
- sklearn.datasets: 샘플 데이터 세트 제공
- 자료 전처리:
- sklearn.preprocessing: imputation, encoding 등 단순 전처리
- sklearn.feature_extraction: Feature Extraction
- 모형 평가:
- sklearn.metrics: Metrics
- sklearn.model_selection: train_test_split 교차 검증, 훈련/테스트 데이터 나누기
from sklearn.svm import SVC
m = SVC()
m.fit(x,y)
객체 만들어주고 fit 시킴 >> 학습시킴
학습이 끝나면 예측
m.predict([[-2,9],[1,2]])
결과 :
array([1, 1]) >> 틀릴수 있음
from sklearn.metrics import accuracy_score
accuracy_score(y,m.predict(x))
>> 모델이 얼마나 성과를 냈는지 측정하는 방법
Accuracy_score이 있음 .. x>예측 y >정답 이걸 세서 몇개 맞췄는지 측정
train_test_split
>> 학습용과 테스트용을 분리함
선형 회귀는 직선의 기울기와 절편을 구하는것 >>
정규화 선형회귀
선형회귀에 규제가 추가된 조건이 있음
Regularized :: y = ax+b 의 a,b 를 조금씩 바꾸는데 >> 이걸 신중하게 업데이트 하게 만드는것
- Ridge Regression : 가중치에 제곱
- Lasso Regression :가중치의 절대값 더하고
- ElasticNet Regression: Ridge Lasso 같이 쓰는거
영향도가 큰것부터 뽑아내고싶어 (적은개수로 문제를 해결하고 싶어)
>> 기준? 영향도가 큰것에 대한 컬럼을 선택해야한다ㅣ >> Lasso
Logistic Regression
구현이 쉽고, 높은 성능. 가장 널리 사용되는 분류 알고리즘
KNN
(k-최근접 이웃, K-Nearest Neighbors)

2차원에서 데이터를 표현할 수 있다.
- 초록색 동그라미는 > 빨강색일까 파란색으로? 어떤것으로 분류해야 하나?
- K개에 가까운이웃으로 정하는것
- 실선 작은 동그라미 안에서 가장 많고 가까운것 > 빨강?
- 점선 동그라미 바운더리라면 ? >> 파랑?
- 가장 유사한 데이터(즉, 가장 근접한 이웃) 상위 K개의 majority voting
Support Vector Machine (SVM)

데이터가 선형 분리(linear separable)가 불가능 한 경우, 슬랙 변수(slack variable)를 사용하여 개별 오차를 허용

두 데이터를 잘 나누는 …
파랑색선이 max가 되게 해야한다.
- 첫번째 그림 >> 마진(파랑색 선)이 작다
- Slack변수 >> 두번째 그림 >> 하나는 예외가 되더라도 마진(파랑색 선을)을 넓히자
====> 마진이 클 수록 더 좋은 것 이다.
- 두번째 accuracy 가 더 낮지만 첫번째는 마진이 작기 때문에 unknown data는 더 낮게 나올 수 있음
K-Means Clustering
주어진 데이터를 k개의 클러스터로 묶는 알고리즘