AI교육과정 - Python.14

단비·2023년 2월 13일
0

AI교육과정

목록 보기
66/69
  1. 머신러닝
    • 인공지능: 인공(Artificial) + 지능(Intelligence): 학습(O), 학습(X) 의 두 가지 형태
    • 머신러닝: 학습(learning)하는 기계(machine)
    • 딥러닝: 깊은(deep) 신경망 구조의 머신러닝
    1. 배경
      • 과거 컴퓨터로 데이터를 읽어들이고, 그 데이터 안에서 특징을 학습하여 패턴을 찾아내는 작업(패턴인식)
      • 데이터를 대량으로 수집 처리할 수 있는 환경이 갖춰짐으로 할 수 있는 일이 많아짐
      • 머신러닝은 데이터로부터 특징이나 패턴을 찾아내는 것이기 때문에 데이터가 가장 중요함
    2. 정의
      • 머신러닝은 인공지능의 한 분야로 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야
      • 무엇(x)으로 무엇(y)을 예측하고 싶다의 f(함수)를 찾아낸 것
      • 주어진 데이터를 통해서 입력변수와 출력변수 간의 관계를 만드는 f(함수)를 만드는 것
      • x:입력변수(독립변수), y:출력변수(종속변수), f:모형(머신러닝 알고리즘)
  2. 머신러닝으로 할 수 있는 것
    1. 회귀(Regression)
      • 시계열(시간적인 변화를 연속적으로 관측한 데이터)데이터 같은 연속된 데이터를 취급할 때 사용하는 기법
      • 과거의 주식 추세를 학습해서 내일의 주가를 예측하는 시스템을 개발
    2. 분류(Classification)
      • 주어진 데이터를 클래스별로 구별해 내는 과정으로 데이터와 데이터의 레이블값을 학습시키고 어느 범주에 속한 데이터인지 판단하고 예측
      • 스팸메일인지 아닌지 구별해주는 시스템을 개발
    3. 클러스터링(Clustering)
      • 분류와 비슷하지만 데이터에 레이블(정답)이 없음
      • 유사한 속성을 갖는 데이터를 일정한 수의 군집으로 그룹핑하는 비지도 학습
      • SNS 데이터를 통해 소셜 및 사회 이슈를 파악
  3. 학습
    1. 지도 학습
      • 문제와 정답을 모두 학습시켜 예측 또는 분류하는 문제
      • y=f(x)에 대하여 입력 변수(x)와 출력 변수(y)의 관계에 대하여 모델링하는 것
      • y에 대하여 예측 또는 분류하는 문제
    2. 비지도 학습
      • 출력 변수(y)가 존재하지 않고, 입력 변수(x)간의 관계에 대해 모델링 하는 것
      • 군집분석: 유사한 데이터끼리 그룹화
      • PCA: 독립변수들의 자원을 축소화
    3. 강화 학습
      • 수 많은 시뮬레이션을 통해 현재의 선택이 먼 미래에 보상이 최대가 되도록 학습
      • Agent가 action을 취하고 환경에서 보상을 받고, 이 보상을 최대가 되도록 최적의 action을 취하는 방법을 스스로 배움
  4. 머신러닝의 종류
    1. 선형회귀분석
      • 독립변수와 종속변수가 "선형적인 관계가 있다"라는 가정하에 분석
      • 독립변수를 통해 종속변수를 예측하기 때문에 독립변수의 중요도와 영향력을 파악하기 쉬움
    2. 의사결정나무
      • 독립변수의 조건에 따라 종속변수를 분리
      • 이해하기 쉬우나 overfitting이 잘 일어남
    3. KNN(K-Neighber Nearest)
      • k 최근접 이웃법으로 분류 문제에 사용하는 알고리즘
      • 새로운 데이터가 들어왔을 때 기존 데이터의 그룹 중 어떤 그룹에 속하는지 분류하는 문제에 활용
    4. Neural Network
      • 입력, 은닉, 출력층으로 구성된 모형으로 각 층을 연결하는 노드의 가중치를 업데이트하면서 학습
    5. SVM(Support Vector Machine)
      • 두 클래스로부터 최대한 멀리 떨어져 있는 결정 경계를 찾는 분류기 알고리즘
      • 특정 조건을 만족하는 동시에 클래스를 분류하는 것을 목표
      • 선형이나 비선형 분류, 회귀, 이상치 탐색 등에서 강력한 성능을 갖는 지도학습 모델
    6. Ensemble Learing
      • 여러개의 모델을 결합하여 사용하는 모델
    7. K-means clustering
      • Label 없이 데이터의 군집으로 k개를 생성

  1. Scikit-learn 모듈

    • 대표적인 파이썬 머신러닝 모듈
    • 다양한 머신러닝 알고리즘을 제공
    • 다양한 샘플 데이터를 제공
    • 머신러닝 결과를 검증하는 기능을 제공
    • BSD 라이선스이기 때문에 무료로 사용 및 배포가 가능
    • 사이킷런 공식 홈페이지
  2. LinearSVC

    • 클래스를 구분으로 하는 분류문제에서 각 클래스를 잘 구분하는 선을 그려주는 방식을 사용하는 알고리즘
    • 지도학습 알고리즘을 사용하는 학습 전용 데이터와 결과 전용 데이터를 함께 가지고 있어야 사용이 가능
    from sklearn.svm import LinearSVC
    from sklearn.metrics import accuracy_score
    1. LinearSVC()

      • 모델 객체 생성
    2. svc.fit(학습시킬 실행값, 학습시킬 결과값)

      • 학습시키기
      # 학습 데이터 준비
      learn_data = [[0,0], [1,0], [0,1], [1,1]]
      learn_label = [0,0,0,1]
      # 학습
      svc.fit(learn_data, learn_label)
    3. svc.predict(테스트값)

      • 결과 예측
      test_label = svc.predict(test_data)
      # [0 0 0 1]
    4. accuracy_score(체크할 값, 결과값)

      • 정답률 체크
      print('정답률: ', accuracy_score([0,0,0,1], test_label))
      # 정답률:  1.0

  1. Iris DataSet

    from sklearn.datasets import load_iris
    import pandas as pd
    
    iris = load_iris()
    • sepal lenght in cm : 꽃받침의 길이
    • sepal width in cm : 꽃받침의 너비
    • petal lenght in cm : 꽃잎의 길이
    • petal width in cm : 꽃잎의 너비
    1. train_test_split()

      전체 데이터셋 배열을 받아서 랜덤하게 test/train 데이터 셋으로 분리해주는 함수

      • arrays
        • 분할시킬 데이터를 입력(Python list, Numpy array, Pandas dataframe 등..)
      • test_size
        • 테스트 데이터셋의 비율(float)이나 갯수(int) (default = 0.25)
      • train_size
        • : 학습 데이터셋의 비율(float)이나 갯수(int) (default = None), None을 입력하고 test_size를 지정할 경우 테스트 데이터셋을 뺀 나머지를 훈련 데이터로 사용한다.
      • random_state
        • 데이터 분할시 셔플이 이루어지는데 이를 위한 시드값 (int나 RandomState로 입력)
      • shuffle
        • 셔플여부설정 (default = true)
    from sklearn.model_selection import train_test_split
    # 학습용독립변수, 학습용종속변수, 검증용독립변수, 검증용종속변수 = train_test_split(독립변수, 종속변수, test_size=검증용데이터사이즈,random_state=랜덤시드)
    X_train, X_test, y_train, y_test = train_test_split(df_iris.drop('target', 1), df_iris['target'], test_size=0.2, random_state=10)

    • seaborn
      • matplotlib 기반의 파이썬 시각화 라이브러리
    import seaborn as sns
    
    sns.countplot(y_train)
    X_train, X_test, y_train, y_test = train_test_split(df_iris.drop('target', 1), df_iris['target'], test_size=0.2, random_state=10, stratify=df_iris['target'])

profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글