본문 바로가기
CS/머신러닝

머신러닝1

by zieunee 2020. 11. 23.
반응형

(예전에 교육받은거...)

 

머신러닝 :: 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개의 클러스터로 묶는 알고리즘

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'CS > 머신러닝' 카테고리의 다른 글

머신러닝2  (0) 2020.11.24