본문 바로가기

파이썬 & 머신러닝과 딥러닝

AutoML, 퍼셉트론, 다층 퍼셉트론(MLP)

AutoML (Auto Machine Learning)

AutoML은 머신러닝 모델의 설계, 개발, 훈련, 평가, 배포 등 일련의 과정을 자동화하는 기술

머신러닝 프로젝트는 데이터 전처리, 모델 선택, 하이퍼파라미터 튜닝, 모델 평가 등 다양한 단계가 필요하며,

각 단계에서 많은 시간과 노력이 요구된다.

AutoML은 이러한 과정에서 사람이 개입할 필요를 최소화하여, 머신러닝 모델을 더 빠르고 쉽게 개발할 수 있도록 도와줌

 

PyCaret

PyCaret은 파이썬 기반의 오픈소스 AutoML 라이브러리로,

데이터 사이언스와 머신러닝을 더 쉽게 접근할 수 있도록 설계되었다.

PyCaret은 간단한 코드를 통해 데이터 전처리, 모델링, 평가, 하이퍼파라미터 튜닝, 모델 배포 등 다양한 작업을 수행 가능

 

PyCaret의 주요 특징 

  • 간단한 API: 최소한의 코드로 복잡한 머신러닝 작업을 수행할 수 있다.
  • 모델 비교: 여러 머신러닝 모델을 자동으로 학습시키고, 성능을 비교할 수 있다.
  • 하이퍼파라미터 튜닝: 모델의 성능을 최적화하기 위한 하이퍼파라미터를 자동으로 튜닝할 수 있다.
  • 배포 기능: 학습된 모델을 간단하게 배포할 수 있는 기능을 제공

 

주어진 데이터셋에서 Purchase라는 목표 변수를 예측하는 작업을 수행

 

 

1. from pycaret.classification import *

이 줄은 PyCaret 라이브러리의 분류(classification) 모듈에서 모든 함수와 클래스를 불러옴.

PyCaret은 여러 모듈로 나뉘어 있으며, 이 모듈은 분류 문제를 다룰 때 사용된다.

2. setup_clf = setup(data=data, target='Purchase')

setup() 함수는 PyCaret에서 머신러닝 실험을 위한 환경을 설정하는 핵심 함수

  • data=data: 분석할 데이터셋을 지정합니다. 여기서 data는 미리 정의된 데이터프레임이어야 한다.
  • target='Purchase': 예측하고자 하는 목표 변수(target column)를 지정. 이 경우, Purchase라는 열이 목표 변수가 됨.

setup() 함수는 데이터 전처리, 피처 엔지니어링, 모델 학습 환경 설정 등을 자동으로 처리. 이 함수는 다양한 설정을 자동으로 적용하고, 데이터에 대한 기본적인 통계를 제공하는 설정 객체(setup_clf)를 반환.

3. class_top = compare_models()

compare_models() 함수는 다양한 머신러닝 모델을 자동으로 학습시키고,

성능을 비교하여 최고의 성능을 보이는 모델을 반환.

  • class_top: compare_models() 함수가 반환하는 객체로, 성능이 가장 우수한 머신러닝 모델을 담고 있다.

4. class_top

마지막 줄에서 class_top을 출력하면, PyCaret이 비교한 모델들 중 가장 성능이 좋은 모델의 정보를 출력한다.

이 모델을 통해 예측을 수행하거나 추가적인 분석을 진행할 수 있다.

 


별표 연산자

 


 

  • 인공지능: 인간의 사고를 대신해주는 컴퓨터 시스템
  • 머신러닝 : 데이터의 패턴을 수학적 모델에 학습시켜서 인간의 사고를 대신해주는 컴퓨터 시스템
  • 딥러닝 : 데이터의 패턴을 "인공신경망"에 학습시켜서 인간의 사고를 대신해주는 컴퓨터 시스템
  • 강화학습 : 컴퓨터 시스템에게 데이터를 학습시키면서 패널티와 리워드를 주는 방식

딥러닝

데이터 → 전처리 → 선형회귀 → 성능측정 → 오차역전파 → 다층 퍼셉트론


퍼셉트론

입력 값과 활성화 함수를 사용해 출력 값을 다음으로 넘기는 가장 작은 신경망 단위

NAND 퍼셉트론과 OR 퍼셉트론으로 XOR을 구현할 수 있다.퍼셉트론을 쌓으면 비선형성, 즉 복잡한 문제를 해결 할 수 있다.


 

MLP (Multi Layer Perceptron, 다층 퍼셉트론) : 사람의 뇌를 닮은 구조

많은 퍼셉트론, 많이 쌓은 구조 → 복잡한 논리를 가능케 함

 

가운데 숨어있는 은닉층으로 퍼셉트론이 각각 자신의 가중치( w )와 바이어스( b ) 값을 보냄
이 은닉층에서 모인 값이 활성화 함수인 시그모이드 함수(기호로 (시그마)라고 표시함)를 이용해 최종 값으로 결과를 보냄
노드(node) : 은닉층에 모이는 중간 정거장 (여기서는 n1 과 n2 로 표현함)

 

AI 모델을 학습하는건 cost가 가장 작은 global minimum 을 찾는 것이 목적

그러기 위해서는 w, b 를 조절해야함

Optimizer 함수 : 경사하강법 수식 :  W = W - 학습률 * 기울기


import numpy as np

# 공부시간(h)을 x로 넣고 시험점수(y)를 예측
X = np.array([1, 2, 3, 4, 5])
y = np.array([60, 70, 80, 90, 100])

# 평균 계산을 위한 데이터 갯수를 미리 구함
m = len(X)

# 파라미터 초기화
w = 0
b = 0

# 학습률, 반복 횟수
learning_rate = 0.01
epochs = 100

for epoch in range(epochs):
    # 선형 모델
    # [0,0,0,0,0] = 0 * [1,2,3,4,5] + 0
    y_pred = w * X + b # y = wx + b

    # Mean Squared Error
    # [60,70,80,90,100] - [0,0,0,0,0]
    cost = (1/m) * sum((y - y_pred)**2)

    # 기울기 계산
    dw = -(2/m) * sum(X * (y - y_pred))
    db = -(2/m) * sum(y - y_pred)

    # 경사하강법 수행
    w = w - learning_rate * dw
    b = b - learning_rate * db

    # 매 10회마다 print
    if epoch % 10 == 0:
        print(f'Epoch {epoch+1}: Cost = {cost:.4f}, w = {w:.4f}, b = {b:.4f}')

# 학습이 끝난 후 최종 가중치와 절편 출력
print(f'\n최종 가중치와 절편 값은: w = {w:.4f}, b = {b:.4f}')

# 모델 예측
y_pred = w * X + b
print(f'와인퀄리티 예측: {y_pred}')


 

1. ML
분류 : logistic regression, SVMClassifier, DecisionClassifier, RandomforestClassifier, XGBoostClassifier, GradientBoostClassifier, AdaBoostClassifier, lightGBMClassifier, CatboostClassifier, VotingClassifier, StackingClassifier
회귀 : LinearRegressor, SVMRegressor, DecisionRegressor, RandomforestRegressor, XGboostRegressor, GradientBoostRegressor, AdaBoostRegressor, lightGBMRegressor, CatboostRegressor, VotingRegressor, StackingRegressor
군집 : Kmeans, Kmeans++, DBScan, hierarchical Clustering


2. DL
(고객분류, 대출여부) 정형 분류 : MLP, DNN, TabNet, Tab-Transformer
(주식, 매출) 회귀 : MLP, DNN, Transformer, RNN(n:1형태), LSTM(n:1형태), Transformer(n:1), 1D CNN regression
(챗봇, 요약, 번역) 텍스트 : RNN, LSTM, Transformer, Bert, Kobert, KoEelectra, T5, GPT(2,3,4), gemma, lamma
(이상행동CCTV), 이미지 분류 : CNN, Resnet, DenseNet, VGGNet, GoogleNet, Vision transformer, ResNext, ResNextX, ResNextY
(카드디자인, 은행원 키오스크 인물생성) 이미지 생성형 : Auto Encoder, Variational Auto Encoder, GAN, DALLE(웹서비스), 미드저니(웹서비스), Stable diffusion(코드) + 드림부스
(시각장애인) 사운드 : Tacotron, VITS, Wavenet
(이상행동, OCR) 객체 탐지 : RCNN, FastRCNN, FasterRCNN, MaskRCNN, Yolov(5,6,7,8,9,10)
(이상행동) 관절 탐지 : blaze Pose, media Pipe, openpose, yolo pose

 

 

 

 

 

 

 

CatalyzeX: open-source AI code to catalyze your research