본문 바로가기
데이터 분석

[패스트 캠퍼스 수강 후기] 직장인을 위한 파이썬 데이터 분석 올인원 패키지 Online 18일차

by HIMMEL95 2021. 4. 12.
  • 수강한 강의
    : Ch01.머신러닝의 개요-01.머신러닝의 개요 / Ch01.머신러닝의 개요-02.가설 함수, 비용, 손실 함수, 경사하강법 / Ch02.sklearn의 개요-01.sklearn과 주요 API에 대하여 소개합니다 / Ch02.sklearn의 개요-02.학습(fit), 예측(predict) 실습 / Ch02.sklearn의 개요-03. 학습데이터와 예측 데이터 / Ch02.sklearn의 개요-04. 검증 데이터 (Validation)

오늘은 머신러닝의 개요, 머신러닝의 가설 함수, 비용, 손실 함수, 경사하강법, sklearn 라이브러리, 주요 API, sklearn의 학습, 예측 실습, 학습 데이터와 예측 데이터의 내용, 검증 데이터에 관한 내용을 작성해보겠습니다. 요번 작성 강의 내용에 관해서는 많이 부족한 내용이 많이 있을 수도 있으므로, 이해해주시기 바랍니다.

  • Ch01.머신러닝의 개요-01.머신러닝의 개요

    • 먼저 인공지능과 머신러닝, 딥러닝에 관한 설명을 먼저 알아봅시다.

    • 인공지능 : 사람의 지능을 모방하여, 사람이 하는 것과 같이 복잡한 일을 할 수 있게 기계를 만드는 것

    • 머신러닝 : 기본적으로 알고리즘을 이용해 데이터를 분석 및 학습하며, 학습한 내용을 기반으로 판단, 예측하는 것

    • 딥러닝 : 인공신경망에서 발전한 형태의 인공지능. 머신러닝 중 하나의 방법론

    • 각 각의 설명은 다음과 같다. 그리고 전체적으로 보면 인공지능이 제일 큰 범위에 해당하는 내용이며, 그 다음에는 머신러닝, 딥러닝 순으로 범위가 형성되는 것을 사진을 통하여 확인할 수 있다.

    • 머신러닝 이란?

      • 데이터(Data) 를 기반으로 패턴(Model) 을 학습하여 결과를 추론(Prediction) 하는 것
      • 과거에는 데이터를 기반으로 알고리즘을 작성한 다음에 예측을 하는 방식이 였다면, 지금은 데이터와 최종 예측값만 있으면 인공지능이 알아서 패턴 학습을 해서 결과를 추론하는 방식으로 결과를 추론하게 된다.
    • 머신러닝에는 지도 학습(Supervised Learning), 비지도 학습(Unsupervised Learning) 그리고 강화 학습(Reinforcement Learning) 이라는 3가지 학습 방법이 존재하게 된다.

    • 사진을 확인하게 보면 3가지 학습에는 차이가 있다는 것을 확인할 수 있다.

    • 지도 학습

      • 예측값과 데이터를 주어진 상태에서 학습을 시키는 방식
    • 비지도 학습

      • 예측값이 없고, 스스로 데이터를 학습하는 방식
    • 지도 학습과 비지도 학습의 차이는 예측값이 있냐, 없냐 정도의 차이가 있을 것이다.

    • 강화 학습은 나중에 자세히 다루도록 하겠습니다.

    1. 지도 학습

      • 지도 학습에는 위 사진과 같이 회귀 학습과 분류 학습으로 나눠지게 된다.

      • 회귀 학습은 데이터를 기반으로 수치를 맞추는 것, 예를 들면 사진에 나와있는 집값으로 예시를 들면 우리가 알아보고자 하는 지역의 데이터를 기반으로 그 지역의 집값을 예측하는 것을 들을 수가 있을 것이다.

      • 분류 학습은 데이터를 기반으로 데이터 내용을 분류를 하는 알고리즘 예측하는 것. 기존에 존재하는 데이터의 Category 관계를 파악하고, 새롭게 관측된 데이터의 category를 스스로 판별하는 과정. 분류 학습에 경우에는 우리가 가지고 있는 데이터를 비교해서 각 각의 데이터가 어느 부분에 해당하는지를 분류를 해서 각 해당하는 분류에 맞게 데이터를 분류하는 방식이다.

      • 이러하듯이 지도 학습은 데이터를 기반으로 수치와 분류에 맞게 학습을 시키는 학습 방법이다.

    2. 비지도 학습

      • 비지도 학습에는 군집화차원 축소 두 가지 방법으로 나눠지게 된다.

      • 군집화는 스스로 어떤 알고리즘을 통해서 판단을 해서 내용을 분류하는 것, 그룹핑을 하는 것. 데이터 간의 유사도를 정의하고 그 유사도에 가까운 것부터 순서대로 합쳐가는 방식.

      • 차원 축소는 많은 feature로 구성된 다차원 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것. feature가 많아질수록 예측 신뢰도가 떨어지고, 과적합 (overfitting)이 발생하고, 개별 feature간의 상관관계가 높을 가능성이 있다.

    • 머신 러닝의 장점

      1. 복잡한 패턴을 인지할 수 있다.
      2. 적절한 알고리즘, 다양한 양질의 데이터가 있다면, 좋은 성능
      3. 도메인 영역에 대한 지식이 상대적으로 부족해도 가능하다
    • 머신 러닝의 단점

      1. 데이터의 의존성이 크다 (Garbage in, Garbage out)
        • 내용이 좋은 데이터를 입력하게 되면, 좋은 예측 값이 나오게 되지만, 그렇지 않은 내용의 데이터를 입력하게 되면, 좋지 않은 예측 값이 나오게 된다.
      2. 과적합의 오류에 빠질 수 있다. (일반화 오류, 데이터 다양성 요구)
      3. 풍부한 데이터가 기본적으로 요구된다.
        • 좋은 성능 = 좋은 데이터 (quality, quantity)
        • 데이터 가공 = 전처리 (pre-processing)
      4. 데이터, 예측해야 할 값에 맞는 알고리즘 사용, 적절한 알고리즘을 사용해야 한다.
        • 적절한 알고리즘을 사용을 해야 좋은 결과 값을 얻을 수 있기 때문이다.
  • Ch01.머신러닝의 개요-02.가설 함수, 비용, 손실 함수, 경사하강법

    • 머신러닝에는 가설 함수(Hypothesis), 비용(Cost), 손실 함수(Loss Function), 경사하강법이 있다.

    • 가설 함수

    • 다음 사진을 가설 함수 예시이다. 사진을 보게 되면 X와 Y 값이 표로 작성되어 있고, 각 각에 해당하는 X와 Y값을 좌표로 나타낸 그래프가 출력된 것을 확인할 수 있다. 그러면 다음의 표와 그래프를 통해서 함수식을 작성을 할 수 있게 된다. 다음 식을 고등학교 시절 배운 것을 활용하면 된다.

    • H(x) = W * X + b*

    • 여기서 H(x)가 가설 함수라는 값이 되게 된다.

    • 요번 사진을 보게 되면 위에서 구한 가설 함수에서 Wb에 해당하는 값을 다음과 같이 0.5, 1, 2에 해당하는 값들을 대입하고 대입된 상태에서 x와 y값을 입력하여 나오는 y 값을 비교하게 된다.

    • H(x) = Y Predict

    • 손실 = Y Predict - Y

    • 손실 함수 = W * X + b -Y

    • 여기서 손실을 나와야 하는 실제 Y 값과 각 대입 숫자에 대입하여 나온 값들의 Y Predict값의 차이가 손실에 해당하는 값이 된다.

    • 다음 사진을 보게 되면 각 W, b의 값의 범위에서 나온 손실 값들의 다 더한 결과 값을 확인할 수 있게 된다. 확인한 결과값을 보면 -10.5, -8, 0이라는 값이 나오게 된다. 손실의 합이 0에 가까울 수록 정확한 값에 해당하게 된다.

    • 그런데 이러한 손실의 총합에서 오류가 발생하게 되는 경우가 있다.

    • 다음 사진을 보게 되면 X,Y와 X2,Y2의 값이 주어지고 그에 해당하는 결과값과 그 결과값의 총합을 더 한 값을 확인할 수가 있다. 그런데 손실의 총합으로 비교 했을 때는 동일한 결과값이 나오는 것을 확인할 수 있게된다. 하지만 X2,Y2에 해당하는 값이 아니라 X,Y에 해당하는 것이 정확한 데이터의 값이 된다. 이러한 예시를 보게 되면 손실의 총합의 오류가 있다는 것을 확인할 수 있다. 그래서 이러한 오류를 방지하기 위해서는 손실의 총합을 제곱하여 손실의 총합을 구하게 된다.

    • 다음 사진처럼 손실의 총합에 제곱을 해서 해당하는 값의 총합을 구하게 되면 손실의 총합이 기존과는 다르게 결과값이 다르게 나오는 것을 확인할 수 있게 된다.

    • 위에서 언급한 함수들의 식을 순서대로 작성한 것이다. 마지막에는 데이터의 개수가 많아지면 손실이 커지므로 전체 손실의 평균을 구해주는 식이다.

    • 다음의 식이 최종적인 손실의 총합 제곱 오차에 관한 식이 된다.

    • 그리고 머신러닝이 해야할 일은 손실을 0에 가깝게 만들어 주는 것이다.


    • 다음 사진들을 보게 되면 Gradient라고 기울기가 나와있고, Global cost minimum 이라는 함수의 최솟값이 나와있고, Initial Weight 초기 가중값이라는 값들이 표시되어 있다. 다음 사진에서는 경사하강법에 관한 내용을 나오게 된다.

    • 우선 경사하강법에 대한 의미는 1차 근삿값 발견용 최적화 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하고 경사의 절댓값이 낮은 쪽으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것의 의미를 가지게 된다. 그래서 경사하강법을 통해서 x축의 w에 최대한 다가가게 해야된다.

  • Ch02.sklearn의 개요-01.sklearn과 주요 API에 대하여 소개합니다.
    scikit-learn

    • 다음은 scikit-learn에 관한 자세한 내용을 설명해주는 사이트이다.
      pip install -U scikit-learn

    • 다음은 scikit-learn을 설치하는 명령어이다.

      from sklearn.linear_model import LinearRegression

       from sklearn.linear_model import LinearRegression
      model = LinearRegression()
      model.fit(x,y) # 학습을 하기위한 코드식 
      prdiction = model.predict(x2) # 예측을 위해서 새로운 값을 넣게 되면 예측값이 나온다. 
      • 다음은 scikit-learn을 사용하기 위해서 작성하는 코드이다.
      • 다음 코드를 보게 되면 맨 처음은 scikit-learn 라이브러리를 import 하는 것이고, 그 다음은 model이라는 변수에 선형회귀 함수를 저장하게 되고, 다음은 선형회귀 함수를 저장한 변수에 fit() 함수를 활용하여 학습을 시키는 코드이다. 그리고 마지막은 예측을 하기 위해서 새로운 값을 넣어서 예측값을 출력하는 코드이다.

      from sklearn.model_selection import train_test_split

      • 다음은 scikit-learn 패키지 중 model_selection에는 데이터 분할을 위한 train_test_split 함수가 들어있다. 그래서 다음의 함수를 사용하기 위해서 import 한 식이다.
  • Ch02.sklearn의 개요-02.학습(fit), 예측(predict) 실습

    • 다음 사진은 scikit-learn을 실행하기 위한 예제 값을 작성한 것이다. 다음에서는 x와 y 값들을 각각 배열 형식으로 표현해서 저장한 것이다.
    • 그리고 난 다음에 model변수에 선형회귀 함수를 저장하고, model의 값을 출력하고, model.fit(x,y) 코드를 작성을 해서 위해서 작성해 놓은 x와 y 값을 학습 데이터로 작성을 하고, 마지막에 예측하고 싶은 값을 prediction변수에 model 변수에 predict()함수를 활용하여 10이라는 배열값을 입력해서 10에 해당하는 Y값을 예측을 하게 되면 21이라는 배열값이 나오게 되는 것을 확인할 수 있다.
  • Ch02.sklearn의 개요-03. 학습데이터와 예측 데이터

    • 학습 데이터, 예측 데이터 (features, labels, train, test)에 관한 내용이다.

    • 다음 사진에는 요번 강의에서 배우게 되는 내용의 설명이 나와있다.

    • features, label은 지도학습에서 많이 사용하는 용어이다.

    • features : 학습을 해야할 데이터, x에 해당하는 값이 된다.

    • label : 예측 해야할 것, y에 해당하는 값이 된다.

    • 다음 사진에는 train, test에 관한 내용이 작성된 것을 확인할 수 있다.

    • 다음은 위에서 설명한 내용을 토대로 예측하는 코드를 작성한 것이다.

  • Ch02.sklearn의 개요-04. 검증 데이터 (Validation)

    • 다음은 검증 데이터에 관한 내용이다.

    • 과대 적합(overfitting) : 과도하게 학습을 시켰을 때 나오게 되는 결과값

    • 과소 적합(underfitting) : 과도하게 적게 학습을 시켰을 때 나오게 되는 결과값

    • OPTIMUM : 적당하게 학습을 시켰을 때 나오게 되는 결과값

    • Testing Error : 실제 사례에 적용했을 때 나오는 오류

    • Training Error : 우리의 데이터를 가지고 머신러닝 모델이 학습했을 때 오류

    • Best Complexity : 우리가 찾아야 하는 값 = optimum한 지점


    • 다음은 학습을 의한 단계에 관한 내용이다.

    • 일반적으로 사진에 나와 있는 것처럼 학습을 위한 데이터 80% + 검증을 위한 데이터 20%의 범위를 지정하여 예측을 위한 데이터 범위를 지정하게 된다.

    • 다음 사진은 train, validation 학습 요령에 관한 내용이다. train data로 학습을 할 때 나오는 결과 값이 training error에 대한 값이고, validation data는 여러 모델들 각각에 적용되어 성능을 측정하며, 최종 모델을 선정하기 위해 사용한 validation set의 값이다. 그리고 다음 그래프들이 만나게 되는 지점이 best Complexity인 점이라고도 하고 optimum에 해당하는 지점이 되는 값이 되게 된다.

    • Validation set(검정 데이터)은 training set으로 만들어진 모델의 성능을 측정하기 위해 사용되기 때문에 절대 학습할 때 관여되게 해서는 안된다.

이렇게 머신러닝의 개요, 머신러닝의 가설 함수, 비용, 손실 함수, 경사하강법, sklearn 라이브러리, 주요 API, sklearn의 학습, 예측 실습, 학습 데이터와 예측 데이터의 내용, 검증 데이터의 관한 내용을 작성해보았습니다. 내용에 관하여 부족한 점도 많으니 이해해주시면서 봐주셨으면 합니다.

  • 데이터 분석
  • 홈페이지에서 강의 찾는 방법
    패스트 캠퍼스 -> 온라인 -> 올인원 패키지 -> [데이터 분석 강의 보러 가기] -> 직장인을 위한 파이썬 데이터 분석 올인원 패키지 Online.
    패스트 캠퍼스 - [데이터 사이언스] 직장인을 위한 파이썬 데이터 분석
    https://bit.ly/2MJqrMs

댓글