Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.

Amazon SageMaker를 사용한 최대 이익을 위한 최적의 요금

이것은 Adspert의 수석 기계 학습 엔지니어인 Viktor Enrico Jeney의 게스트 게시물입니다.

광고전문가 성능 마케팅 및 광고 캠페인을 자동으로 최적화하도록 설계된 입찰 관리 도구를 개발한 베를린 기반 ISV입니다. 회사의 핵심 원칙은 인공 지능의 도움으로 전자 상거래 광고의 이익 극대화를 자동화하는 것입니다. 광고 플랫폼의 지속적인 개발은 새로운 기회를 위한 길을 열어주며, Adspert는 고객의 성공을 위해 이를 전문적으로 활용합니다.

Adspert의 주요 목표는 사용자를 위한 프로세스를 단순화하는 동시에 다양한 플랫폼에서 광고 캠페인을 최적화하는 것입니다. 여기에는 각 플랫폼 이상의 수준에서 설정된 최적의 예산과 균형을 이루는 다양한 플랫폼에서 수집된 정보의 사용이 포함됩니다. Adspert의 초점은 사용되는 플랫폼에 관계없이 고객의 목표 달성을 최적화하는 것입니다. Adspert는 고객에게 상당한 이점을 제공하기 위해 필요에 따라 플랫폼을 계속 추가하고 있습니다.

이 게시물에서는 Adspert가 다음과 같은 다양한 AWS 서비스를 사용하여 처음부터 가격 책정 도구를 생성한 방법을 공유합니다. 아마존 세이지 메이커 그리고 Adspert가 어떻게 AWS 데이터 랩 기록적인 시간 내에 설계에서 구축까지 이 프로젝트를 가속화합니다.

가격 책정 도구는 가시성과 이익 마진을 기반으로 전자 상거래 시장에서 판매자가 선택한 제품의 가격을 조정하여 제품 수준에서 이익을 극대화합니다.

판매자는 판매를 늘리기 때문에 제품을 항상 볼 수 있어야 합니다. 전자 상거래 판매에서 가장 중요한 요소는 단순히 귀하의 제안이 경쟁자의 제안 대신 고객에게 표시되는지 여부입니다.

물론 특정 전자 상거래 플랫폼에 따라 다르지만 제품 가격은 가시성에 영향을 줄 수 있는 가장 중요한 핵심 수치 중 하나입니다. 그러나 가격은 자주 그리고 빠르게 변합니다. 이러한 이유로 가격 책정 도구는 가시성을 높이기 위해 거의 실시간으로 작동해야 합니다.

솔루션 개요

다음 다이어그램은 솔루션 아키텍처를 보여줍니다.

솔루션에는 다음 구성 요소가 포함되어 있습니다.

  1. PostgreSQL용 Amazon Relational Database Service(Amazon RDS) RDS for Postgres 데이터베이스에 저장된 제품 정보를 포함하는 데이터의 주요 소스입니다.
  2. 제품 목록 변경 정보가 실시간으로 도착합니다. 아마존 단순 대기열 서비스 (Amazon SQS) 대기열.
  3. Amazon RDS에 저장된 제품 정보는 CDC(변경 데이터 캡처) 패턴을 사용하여 원시 계층에 거의 실시간으로 수집됩니다. AWS 데이터베이스 마이그레이션 서비스 (AWS DMS).
  4. Amazon SQS에서 오는 제품 목록 알림은 다음을 사용하여 원시 계층에 거의 실시간으로 수집됩니다. AWS 람다 기능.
  5. 원본 소스 데이터는 아마존 단순 스토리지 서비스 (Amazon S3) Parquet 데이터 형식을 사용하는 원시 계층 버킷. 이 계층은 데이터 레이크에 대한 단일 정보 소스입니다. 이 스토리지에서 사용되는 파티셔닝은 데이터의 증분 처리를 지원합니다.
  6. AWS 접착제 ETL(추출, 변환 및 로드) 작업은 제품 데이터를 정리하고 중복을 제거하며 특정 비즈니스 사례에 연결되지 않은 데이터 통합 ​​및 일반 변환을 적용합니다.
  7. Amazon S3 단계 계층은 추가 처리를 위해 Apache Parquet 형식으로 저장된 준비된 데이터를 수신합니다. 스테이지 저장소에서 사용되는 파티셔닝은 데이터의 증분 처리를 지원합니다.
  8. 이 계층에서 생성된 AWS Glue 작업은 Amazon S3 단계 계층에서 사용 가능한 데이터를 사용합니다. 여기에는 사용 사례별 비즈니스 규칙 및 필요한 계산의 적용이 포함됩니다. 이러한 작업의 결과 데이터는 Amazon S3 분석 계층에 저장됩니다.
  9. Amazon S3 분석 계층은 학습 목적으로 ML 모델에서 사용하는 데이터를 저장하는 데 사용됩니다. 큐레이트된 저장소에서 사용되는 파티셔닝은 예상되는 데이터 사용량을 기반으로 합니다. 이것은 스테이지 레이어에서 사용되는 파티셔닝과 다를 수 있습니다.
  10. 가격 조정 ML 모델은 S3 버킷(분석 계층)에서 사용 가능한 데이터를 사용하여 훈련되는 SageMaker 스크립트 모드의 Scikit-Learn Random Forest 구현입니다.
  11. AWS Glue 데이터 처리 작업은 실시간 추론을 위해 데이터를 준비합니다. 작업은 S3 버킷(단계 계층)에서 수집된 데이터를 처리하고 SageMaker 추론 엔드포인트를 호출합니다. 데이터는 SageMaker 가격 책정 모델에서 사용할 준비가 되었습니다. AWS Glue는 Lambda보다 선호되었습니다. 추론에는 대용량 데이터(일일 트랜잭션 수십억 개)에 대한 조인 및 창 함수와 같은 다양한 복잡한 데이터 처리 작업이 필요하기 때문입니다. 가격 조정 모델 호출의 결과는 S3 버킷(추론 계층)에 저장됩니다.
  12. SageMaker 교육 작업은 SageMaker 끝점을 사용하여 배포됩니다. 이 엔드포인트는 AWS Glue 추론 프로세서에 의해 호출되어 실시간에 가까운 가격 권장 사항을 생성하여 제품 가시성을 높입니다.
  13. SageMaker 추론 엔드포인트에서 생성된 예측은 Amazon S3 추론 계층에 저장됩니다.
  14. Lambda 예측 최적화 기능은 SageMaker 추론 엔드포인트에서 생성된 권장 사항을 처리하고 판매량과 판매 마진 간의 균형을 적용하여 판매자 이익 극대화에 중점을 둔 새로운 가격 권장 사항을 생성합니다.
  15. Lambda 예측 최적화 프로그램에서 생성된 가격 권장 사항은 가격 조정 API에 제출되어 시장에서 제품 가격을 업데이트합니다.
  16. Lambda 예측 최적화 프로그램에서 생성된 업데이트된 가격 권장 사항은 Amazon S3 최적화 계층에 저장됩니다.
  17. AWS Glue 예측 로더 작업은 감사 및 보고 목적으로 ML 모델에서 생성한 예측을 Postgres SQL 데이터베이스용 원본 RDS로 다시 로드합니다. 이 구성 요소를 구현하는 데 AWS Glue Studio가 사용되었습니다. AWS Glue에서 ETL 작업을 쉽게 생성, 실행 및 모니터링할 수 있는 그래픽 인터페이스입니다.

데이터 준비

Adspert의 가시성 모델에 대한 데이터 세트는 SQS 대기열에서 생성되고 Lambda를 사용하여 실시간으로 데이터 레이크의 원시 계층으로 수집됩니다. 그런 다음 중복 제거와 같은 간단한 변환을 수행하여 원시 데이터를 삭제합니다. 이 프로세스는 AWS Glue에서 구현됩니다. 결과는 데이터 레이크의 스테이징 레이어에 저장됩니다. 알림은 가격, 주문 처리 채널, 배송 시간 및 더 많은 변수와 함께 해당 제품에 대한 경쟁업체를 제공합니다. 또한 부울 변수(표시 여부)로 표현할 수 있는 플랫폼 종속 가시성 측정을 제공합니다. 제안 변경이 발생할 때마다 알림을 받게 되며, 이는 모든 고객의 제품에 대해 매월 수백만 건의 이벤트를 추가합니다.

이 데이터 세트에서 다음과 같이 교육 데이터를 추출합니다. 모든 알림에 대해 보이는 제안과 보이지 않는 모든 제안을 짝짓습니다. 그 반대의 경우도 마찬가지입니다. 모든 데이터 포인트는 승자와 패자가 분명한 두 판매자 간의 경쟁을 나타냅니다. 이 처리 작업은 Spark를 사용하여 AWS Glue 작업에서 구현됩니다. 준비된 훈련 데이터 세트는 SageMaker에서 사용할 분석 S3 버킷으로 푸시됩니다.

모델 훈련

주어진 오퍼가 표시될 경우 모델은 각 오퍼 쌍에 대해 분류합니다. 이 모델을 통해 고객에게 가장 적합한 가격을 계산하고 경쟁을 기반으로 가시성을 높이고 수익을 극대화할 수 있습니다. 게다가 이 분류 모델은 목록이 표시되거나 표시되지 않는 이유에 대한 더 깊은 통찰력을 제공할 수 있습니다. 다음 기능을 사용합니다.

  • 경쟁사의 가격에 대한 우리의 가격 비율
  • 주문 처리 채널의 차이
  • 각 판매자에 대한 피드백의 양
  • 각 판매자의 피드백 평점
  • 최소 배송 시간의 차이
  • 최대 배송 시간의 차이
  • 각 판매자 제품의 가용성

Adspert는 SageMaker를 사용하여 모델을 교육하고 호스팅합니다. 우리는 Scikit-Learn Random Forest 구현을 사용합니다. SageMaker 스크립트 모드. 또한 교육 스크립트의 Scikit-Learn 파이프라인에서 직접 일부 기능 사전 처리를 포함합니다. 다음 코드를 참조하십시오.

import numpy as np

def transform_price(X):
    X = X.to_numpy()
    return np.log(
        X[:, 0] / np.nanmin([X[:, 1], X[:, 2]], axis=0),
    ).reshape(-1, 1)

def difference(X):
    X = X.to_numpy()
    return (X[:, 0] - X[:, 1]).reshape(-1, 1)

def fulfillment_difference(X):
    X = X.astype(int)
    return difference(X)

가장 중요한 전처리 기능 중 하나는 transform_price, 가격을 경쟁사 가격과 외부 가격 열의 최소값으로 나눕니다. 우리는 이것이 모델 정확도에 관련 영향을 미치는 기능이라는 것을 발견했습니다. 또한 모델이 절대 가격 차이가 아닌 상대적 가격 차이를 기반으로 결정하도록 로그를 적용합니다.

. training_script.py 스크립트에서 먼저 Scikit-Learn을 빌드하는 방법을 정의합니다. ColumnTransformer 지정된 변환기를 데이터 프레임의 열에 적용하려면:

import argparse
import os
from io import StringIO

import joblib
import numpy as np
import pandas as pd
from custom_transformers import difference
from custom_transformers import fulfillment_difference
from custom_transformers import transform_price
from sklearn.compose import ColumnTransformer
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import FunctionTransformer
from sklearn.preprocessing import OneHotEncoder

def make_preprocessor():
    return ColumnTransformer([
        ('price_by_smallest_cp', FunctionTransformer(transform_price),
         ['price', 'competitor_price', 'external_price']),
        (fulfillment_difference, FunctionTransformer(fulfillment_difference),
         ['fulfillment', 'competitor_'fulfillment']),
        ('feedback_count', 'passthrough',
         ['feedback_count', 'competitor_feedback_count']),
        ('feedback_rating', 'passthrough',
         ['feedback_rating', 'competitor_feedback_rating']),
        (
            'availability_type',
            OneHotEncoder(categories=[['NOW'], ['NOW']],
                          handle_unknown='ignore'),
            ['availability_type', 'competitor_availability_type'],
        ),
        ('min_shipping', FunctionTransformer(difference),
         ['minimum_shipping_hours', 'competitor_min_shipping_hours']),
        ('max_shipping', FunctionTransformer(difference),
         ['maximum_shipping_hours', 'competitor_max_shipping_hours']),
    ], remainder='drop')

교육 스크립트에서 Parquet의 데이터를 Pandas 데이터 프레임으로 로드하고 ColumnTranformer 그리고 RandomForestClassifier, 모델을 학습시킵니다. 그 후, 모델은 다음을 사용하여 직렬화됩니다. joblib:

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--output-data-dir', type=str,
                        default=os.environ['SM_OUTPUT_DATA_DIR'])
    parser.add_argument('--model-dir', type=str,
                        default=os.environ['SM_MODEL_DIR'])
    parser.add_argument('--train', type=str,
                        default=os.environ['SM_CHANNEL_TRAIN'])

    args = parser.parse_args()

    # load training data
    input_files = [os.path.join(args.train, file)
                   for file in os.listdir(args.train)]
    if len(input_files) == 0:
        raise ValueError
    raw_data = [pd.read_parquet(file) for file in input_files]
    train_data = pd.concat(raw_data)

    # split data set into x and y values
    train_y = train_data.loc[:, 'is_visible']

    if train_y.dtype != 'bool':
        raise ValueError(f'Label 'is_visible' has to be dtype bool but is'
                         f' {train_y.dtype}')

    train_X = train_data.drop('is_visible', axis=1)

    # fit the classifier pipeline and store the fitted model
    clf = Pipeline([
        ('preprocessor', make_preprocessor()),
        ('classifier', RandomForestClassifier(random_state=1)),
    ])
    clf.fit(train_X, train_y)
    joblib.dump(clf, os.path.join(args.model_dir, 'model.joblib'))

학습 스크립트에서 추론을 위한 함수도 구현해야 합니다.

  • 입력_fn – 페이로드의 요청 본문에서 데이터 구문 분석을 담당합니다.
  • model_fn – 스크립트의 훈련 섹션에서 덤프된 모델을 로드하고 반환합니다.
  • 예측_fn – 페이로드의 데이터를 사용하여 모델에서 예측을 요청하는 구현을 포함합니다.
  • 예측_프로바 – 예측 가시성 곡선을 그리기 위해 다음을 사용하여 클래스 확률을 반환합니다. predict_proba 분류기의 이진 예측 대신 함수

다음 코드를 참조하십시오.

def input_fn(request_body, request_content_type):
    """Parse input data payload"""
    if request_content_type == 'text/csv':
        df = pd.read_csv(StringIO(request_body))
        return df
    else:
        raise ValueError(f'{request_content_type} not supported by script!')


def predict_fn(input_data, model):
    """Predict the visibilities"""
    classes = model.classes_

    if len(classes) != 2:
        raise ValueError('Model has more than 2 classes!')

    # get the index of the winning class
    class_index = np.where(model.classes_ == 1)[0][0]

    output = model.predict_proba(input_data)
    return output[:, class_index]


def model_fn(model_dir):
    """Deserialized and return fitted model

    Note that this should have the same name as the serialized model in the
    main method
    """
    clf = joblib.load(os.path.join(model_dir, 'model.joblib'))
    return clf

다음 그림은 랜덤 포레스트 분류기.

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.

SageMaker를 사용하여 기존 인스턴스에 부하를 가하거나 충분한 리소스가 있는 별도의 시스템을 설정하지 않고도 대량의 데이터(일일 최대 14억 건의 트랜잭션)에 대한 모델을 훈련할 수 있었습니다. 또한 훈련 작업 후 인스턴스가 즉시 종료되기 때문에 SageMaker를 사용한 훈련은 매우 비용 효율적이었습니다. SageMaker를 사용한 모델 배포는 추가 작업 부하 없이 작동했습니다. Python SDK의 단일 함수 호출은 모델을 추론 끝점으로 호스팅하기에 충분하며 SageMaker Python SDK를 사용하여 다른 서비스에서도 쉽게 요청할 수 있습니다. 다음 코드를 참조하십시오.

from sagemaker.sklearn.estimator import SKLearn

FRAMEWORK_VERSION = "0.23-1"
script_path = 'training_script.py'
output_location = f's3://{bucket}/{folder}/output'
source_dir = 'source_dir'

sklearn = SKLearn(
    entry_point=script_path,
    source_dir=source_dir,
    framework_version=FRAMEWORK_VERSION,
    instance_type='ml.m5.large',
    role=role,
    sagemaker_session=sagemaker_session,
    output_path=output_location)

sklearn.fit({'train': training_path})

모델 인공물은 fit 함수에 의해 Amazon S3에 저장됩니다. 다음 코드에서 볼 수 있듯이 모델은 다음과 같이 로드할 수 있습니다. SKLearnModel 모델 아티팩트, 스크립트 경로 및 기타 매개변수를 사용하여 개체를 만듭니다. 이후 원하는 인스턴스 유형 및 인스턴스 수에 배포할 수 있습니다.

model = sagemaker.sklearn.model.SKLearnModel(
    model_data=f'{output_location}/sagemaker-scikit-learn-2021-02-23-11-13-30-036/output/model.tar.gz',
    source_dir=source_dir,
    entry_point=script_path,
    framework_version=FRAMEWORK_VERSION,
    sagemaker_session=sagemaker_session,
    role=role
)
ENDPOINT_NAME = 'visibility-model-v1'
model.deploy(
    initial_instance_count=1,
    instance_type='ml.m5.large',
    endpoint_name=ENDPOINT_NAME
)

모델을 실시간으로 평가

당사 제품 중 하나에 대해 새 알림이 전송될 때마다 최적의 가격을 계산하여 제출하고자 합니다. 최적의 가격을 계산하기 위해 가능한 가격 범위에 대해 우리의 제안과 각 경쟁자의 제안을 비교하는 예측 데이터 세트를 만듭니다. 이러한 데이터 포인트는 SageMaker 끝점으로 전달되어 주어진 각 가격에 대해 각 경쟁자에 대해 표시될 예측 확률을 반환합니다. 우리는 눈에 보일 확률을 예상 가시성. 결과는 다음 그림과 같이 가격과 가시성 간의 관계를 나타내는 각 경쟁자에 대한 곡선으로 시각화할 수 있습니다.

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.

이 예에서 경쟁자 1에 대한 가시성은 거의 조각별 상수 함수이며, 이는 가시화되기 위해 주로 특정 임계값(대략 경쟁자의 가격) 아래로 가격을 줄여야 함을 시사합니다. 그러나 경쟁자 2에 대한 가시성은 급격하게 감소하지 않습니다. 게다가 우리는 여전히 매우 높은 가격에도 50%의 기회가 있습니다. 입력 데이터를 분석한 결과 경쟁업체의 평점이 매우 낮은 것으로 나타났습니다. 우리 모델은 이 특정 전자 상거래 플랫폼이 피드백 평점이 좋지 않은 판매자에게 불리하다는 것을 배웠습니다. 주문 처리 채널 및 배송 시간과 같은 다른 기능에서도 유사한 효과를 발견했습니다.

SageMaker 엔드포인트에 대한 필요한 데이터 변환 및 추론은 AWS Glue에서 구현됩니다. AWS Glue 작업은 Lambda에서 수집된 실시간 데이터에 대한 마이크로 배치로 작동합니다.

마지막으로 가능한 각 가격에 대한 예측 가시성인 집계 가시성 곡선을 계산하려고 합니다. 우리의 제안은 다른 모든 판매자의 제안보다 나은 경우 표시됩니다. 우리의 가격이 주어진 각 판매자에 대해 표시될 확률 사이의 독립성을 가정할 때 모든 판매자에 대해 표시될 확률은 각 확률의 곱입니다. 즉, 집계된 가시성 곡선은 모든 곡선을 곱하여 계산할 수 있습니다.

다음 그림은 SageMaker 끝점에서 반환된 예측 가시성을 보여줍니다.

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.

다음 그림은 집계된 가시성 곡선을 보여줍니다.

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.

최적의 가격을 계산하기 위해 가시성 곡선을 먼저 평활화한 다음 마진을 곱합니다. 마진을 계산하기 위해 상품 비용과 수수료를 사용합니다. 매출원가 및 수수료는 AWS DMS를 통해 동기화된 정적 제품 정보입니다. 수익 함수를 기반으로 Adspert는 최적의 가격을 계산하고 플랫폼의 API를 통해 전자 상거래 플랫폼에 제출합니다.

이는 AWS Lambda 예측 옵티마이저에서 구현됩니다.

다음 그림은 예측 가시성과 가격 간의 관계를 보여줍니다.

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.

다음 그림은 가격과 이익의 관계를 보여줍니다.

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.

결론

수익 극대화에 대한 Adspert의 기존 접근 방식은 광고 수익을 높이기 위한 입찰 관리에 중점을 둡니다. 그러나 전자상거래 시장에서 우수한 성과를 달성하려면 판매자는 제품의 광고와 경쟁력 있는 가격을 모두 고려해야 합니다. 가시성을 예측하는 이 새로운 ML 모델을 사용하여 기능을 확장하여 고객의 가격도 조정할 수 있습니다.

새로운 가격 책정 도구는 실시간 데이터 변환, 예측 및 가격 최적화는 물론 대량의 데이터에 대한 ML 모델의 자동화된 교육이 가능해야 합니다. 이 게시물에서는 가격 최적화 엔진의 주요 단계와 이러한 목표를 달성하기 위해 AWS Data Lab과 협력하여 구현한 AWS 아키텍처를 살펴보았습니다.

ML 모델을 개념에서 프로덕션으로 가져오는 것은 일반적으로 복잡하고 시간이 많이 걸립니다. 많은 양의 데이터를 관리하여 모델을 훈련하고, 훈련에 가장 적합한 알고리즘을 선택하고, 훈련하는 동안 컴퓨팅 용량을 관리하고, 모델을 프로덕션 환경에 배포해야 합니다. SageMaker는 ML 모델을 훨씬 더 간단하게 구축하고 배포하여 이러한 복잡성을 줄였습니다. 사용 가능한 다양한 선택 항목에서 올바른 알고리즘과 프레임워크를 선택한 후 SageMaker는 모든 기본 인프라를 관리하여 모델을 교육하고 프로덕션에 배포했습니다.

SageMaker에 익숙해지려면 몰입의 날 워크샵 기능 엔지니어링, 다양한 내장 알고리즘에서 ML 사용 사례를 구축하는 방법과 프로덕션과 유사한 시나리오에서 ML 모델을 교육, 조정 및 배포하는 방법에 대한 종단 간 이해를 얻는 데 도움이 될 수 있습니다. 자체 모델을 가져와 SageMaker 플랫폼으로 온프레미스 ML 워크로드 리프트 앤 시프트를 수행하도록 안내합니다. 또한 모델 디버깅, 모델 모니터링 및 AutoML과 같은 고급 개념을 보여주고 AWS ML Well-Architected 렌즈를 통해 ML 워크로드를 평가하는 데 도움을 줍니다.

데이터, 분석, AI 및 ML, 서버리스, 컨테이너 현대화와 관련된 사용 사례의 구현을 가속화하는 데 도움이 필요하면 문의하십시오. AWS 데이터 랩.


저자 소개

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.빅터 엔리코 제니 독일 베를린에 위치한 Adspert의 수석 기계 학습 엔지니어입니다. 그는 고객의 이익을 증가시키기 위해 예측 및 최적화 문제에 대한 솔루션을 만듭니다. Viktor는 응용 수학에 대한 배경 지식이 있으며 데이터 작업을 좋아합니다. 여가 시간에는 헝가리어 배우기, 무술 연습, 기타 연주를 즐깁니다.

Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 최대 이익을 위한 최적의 가격. 수직 검색. 일체 포함.엔니오 파스토레 AWS Data Lab 팀의 데이터 설계자입니다. 그는 비즈니스와 일반 생계에 긍정적인 영향을 미치는 신기술과 관련된 모든 것을 좋아합니다. Ennio는 데이터 분석 분야에서 9년 이상의 경험을 가지고 있습니다. 그는 기업이 통신, 은행, 게임, 소매 및 보험과 같은 산업 전반에 걸쳐 데이터 플랫폼을 정의하고 구현하도록 돕습니다.

타임 스탬프 :

더보기 AWS 기계 학습