회귀 모델 구성

회귀 모델을 훈련, 저장, 로드 및 로드 해제합니다. 텍스트 데이터와 숫자 대상 데이터에 대한 임베딩 벡터를 기반으로 모델을 훈련합니다.

다음도 참조하십시오. 

옵션 

  • 조치는 수행할 작업을 지정합니다.

    • 훈련: 지정된 훈련 데이터와 알고리즘 매개 변수를 사용하여 새로운 회귀 모델을 생성하고 훈련합니다.

    • 저장: 나중에 사용할 수 있도록 모델 저장 위치 옵션으로 지정된 필드 또는 변수에 훈련된 모델을 컨테이너 데이터로 저장합니다.

    • 로드: 모델 저장 위치 옵션으로 지정된 컨테이너 필드 또는 변수에서 이전에 저장된 모델을 메모리에 로드합니다.

    • 언로드: 메모리에서 모델을 제거하여 리소스를 확보합니다.

  • 모델 이름조치 옵션이 작동하는 회귀 모델의 고유 이름에 대한 텍스트 표현식입니다. 모델을 훈련하거나 로드한 후, PredictFromModel 함수로 회귀를 수행하기 위해 모델을 참조할 때 동일한 이름을 사용하십시오.

조치훈련인 경우에만 사용 가능한 옵션:

  • 알고리즘은 사용할 머신 러닝 알고리즘을 선택합니다. 버전 22.0에서 유일하게 제공되는 알고리즘은 랜덤 포레스트입니다.

  • 훈련 벡터 필드는 훈련 데이터에 대한 벡터를 포함하는 텍스트 또는 컨테이너 필드를 지정합니다.

  • 훈련 대상 필드는 목표 값(예측하려는 숫자 값)이 포함된 필드를 지정합니다. 각 값은 훈련 벡터 필드에서 하나의 훈련 예제에 해당합니다.

  • 비어 있거나 유효하지 않은 레코드 건너뛰기훈련 벡터 필드 또는 훈련 대상 필드로 지정된 필드가 비어 있거나 유효하지 않은 데이터가 포함된 레코드를 건너뜁니다. 선택하지 않으면 스크립트 단계는 비어 있거나 유효하지 않은 필드 데이터가 있는 첫 번째 레코드 이후의 모든 레코드를 건너뛰고 오류를 반환합니다.

  • 매개 변수는 알고리즘별 매개 변수를 키-값 쌍으로 지정하는 JSON 객체의 텍스트 표현식입니다. 설명을 참조하십시오.

조치훈련 또는 저장인 경우에만 사용 가능한 옵션:

  • 모델 저장 위치는 훈련된 모델을 저장할 변수 또는 컨테이너 필드를 지정합니다.

조치로드인 경우에만 사용 가능한 옵션:

  • 모델 로드 위치는 훈련된 모델을 로드할 변수 또는 컨테이너 필드를 지정합니다.

호환성 

제품 지원
FileMaker Pro
FileMaker Go
FileMaker WebDirect
FileMaker Server
FileMaker Cloud
FileMaker Data API
사용자 설정 웹 발행

다음 버전에서 시작됨 

22.0

설명 

이 스크립트 단계를 사용하면 FileMaker Pro 앱 내에서 직접 머신 러닝 알고리즘을 사용하는 회귀 모델을 훈련하고 관리할 수 있습니다. 회귀 모델은 독립적인 입력 변수(기능)를 기반으로 종속 출력 변수(대상)에 대한 연속 수치 값을 예측하여 이러한 모델을 예측, 추세 분석 및 데이터 기반 의사 결정에 적합하게 만듭니다.

랜덤 포레스트 알고리즘은 여러 의사 결정 트리를 결합하여 단일 의사 결정 트리보다 더 강력하고 정확한 예측을 생성하는 앙상블 학습 방법으로, 이 알고리즘을 실제 데이터에 적합하게 만듭니다. 포레스트의 각 트리는 훈련 데이터와 특징의 무작위 서브세트에 대해 훈련되며, 이는 과적합(훈련 데이터에서 패턴뿐만 아니라 무작위 노이즈도 포착)을 방지하고 새로운 데이터로의 일반화를 개선하는 데 도움이 됩니다.

훈련 조치를 선택하면 스크립트 단계가 다음 작업을 수행합니다.

  1. 훈련 벡터 필드에서 벡터를 구문 분석하여 기능 값을 추출합니다.

  2. 지정된 알고리즘 매개 변수를 적용하거나 아무 것도 제공되지 않은 경우 기본값을 사용합니다.

  3. 훈련 벡터 필드에서 추출한 기능 값과 훈련 대상 필드의 대상 값으로 랜덤 포레스트 알고리즘을 사용하여 모델을 훈련합니다.

  4. PredictFromModel 함수와 함께 사용하기 위해 지정된 모델 이름으로 훈련된 모델을 메모리에 저장합니다.

  5. 모델 저장 위치가 지정되면 나중에 사용할 수 있도록 모델을 저장합니다.

저장, 로드로드 해제 조치를 사용하면 훈련된 모델을 관리하고 필요할 때만 저장하며 성능을 최적화하기 위해 사용 중일 때만 메모리에 보관할 수 있습니다.

랜덤 포레스트 알고리즘의 경우 필요할 때 매개 변수 옵션에서 다음 키와 값을 사용하여 훈련을 조정할 수 있습니다. 키가 지정되지 않거나 매개 변수 옵션이 사용되지 않는 경우 스크립트 단계는 기본값을 사용합니다.

매개 변수 설명 기본값

numTrees

랜덤 포레스트의 의사 결정 트리 수입니다. 더 많은 트리는 일반적으로 정확도를 향상시키지만 훈련 시간과 메모리 사용량을 증가시킵니다.

10

maxDepth

각 의사 결정 트리의 최대 깊이입니다. 훈련 시 해당 트리가 이 깊이에 도달하지 못할 수 있습니다. 더 깊은 트리는 더 복잡한 패턴을 포착할 수 있지만 훈련 데이터에 과적합일 수 있습니다.

10

minSamplesSplit

내부 노드를 분할하는 데 필요한 최소 샘플 수입니다. 값이 높으면 과적합을 방지할 수 있습니다.

2

numFeatures

양성인 경우, 단일 트리를 훈련하는 데 사용할 수 있는 가능한 기능의 총 수입니다(유효 범위는 1 ≤ numFeatures < 1536). 음성인 경우, 훈련을 위해 모든 기능을 사용합니다.

-1

maxFeatures

단일 트리를 훈련하는 데 사용할 수 있는 최대 기능 수:

0: numFeatures
1: Sqrt(numFeatures)
2: log2(numFeatures)

1

예를 들어, 이 JSON 대상체는 매개 변수 옵션의 모든 키를 설정합니다.

복사
{
    "numTrees" : 15,
    "maxDepth" : 15,
    "minSamplesSplit" : 3,
    "numFeatures" : 1000,
    "maxFeatures" : 0
}

참고 

  • 훈련 벡터 필드의 값은 텍스트 필드의 유효한 JSON 배열 또는 컨테이너 필드의 동등한 이진 데이터로 제공되어야 합니다. 각 배열은 모든 레코드에서 동일한 수의 요소(기능)를 포함해야 합니다.

    찾기 세트에 임베딩 삽입 스크립트 단계를 사용하여 입력 데이터가 포함된 다른 필드를 기반으로 훈련 벡터 필드에서 텍스트 임베딩 벡터를 생성할 수 있습니다. 찾기 세트에 임베딩 삽입에 의해 생성된 임베딩 벡터는 지원되는 텍스트 임베딩 모델을 사용할 때 위의 요구 사항을 충족합니다.

  • 훈련 대상 필드의 값은 숫자여야 합니다. 값이 숫자가 아니면 훈련이 실패하게 됩니다.

  • 모델 이름은 대소문자를 구분하며 현재 FileMaker 세션 내에서 고유해야 합니다. 훈련 시 동일한 이름을 가진 모델이 이미 존재하는 경우 새 모델로 대체됩니다.

  • 훈련된 모델의 품질을 테스트하려면 PredictFromModel 함수를 사용하여 모델을 훈련시키는 데 사용한 것과 동일한 벡터 데이터가 주어진 예측 값을 반환합니다. 그런 다음 예측된 값을 훈련 중에 사용된 목표 값과 비교합니다. 모델의 전반적인 품질을 측정하는 한 가지 방법은 평균 제곱 오차(MSE)이며, 이는 예측 값과 목표 값 사이의 평균 제곱 차이를 계산합니다. MSE 값이 0이면 모델의 예측과 실제 값이 완벽하게 일치하므로 MSE 값이 낮을수록 좋습니다. 모델에 대한 최상의 MSE 값은 대상 변수의 규모와 특정 응용 프로그램에 대한 허용 가능한 오차 범위와 관련이 있습니다. MSE를 계산하는 스크립트는 예제 3을 참조하십시오.

  • 성능 고려 사항:

    • 훈련 시간은 트리 수(numTrees)와 최대 깊이(maxDepth)에 따라 증가합니다. 매개 변수의 기본값으로 시작하고 정확도 요구 사항 및 성능 제약에 따라 조정합니다.

    • 더 큰 데이터 세트는 훈련 중에 더 많은 메모리가 필요합니다. 매우 큰 데이터 세트로 작업하는 경우 초기 모델 교육을 위해 대표 샘플 사용을 고려하십시오.

    • 모델은 명시적으로 로드 해제되거나 FileMaker 세션이 종료될 때까지 메모리에 남아 있습니다. 로드 해제 조치를 사용하여 모델이 더 이상 필요하지 않은 경우 메모리를 확보합니다.

예제 1 - 기본 모델 훈련

기본 랜덤 포레스트 매개 변수를 사용하여 평방 피트, 침실 수 및 주택 연식을 기반으로 주택 가격을 예측하기 위해 기본 회귀 모델을 훈련합니다.

속성 테이블의 기능 필드에는 평방 피트, 침실 및 나이를 나타내는 [1200, 3, 15]와 같은 JSON 배열이 포함되어 있으며 가격 필드에는 해당 주택 가격이 포함되어 있습니다. 이 스크립트 단계가 실행되면 모델은 메모리에 있으며 모델 이름 "HousePriceModel"을 참조하여 PredictFromModel 함수로 현재 FileMaker 세션에서 사용할 수 있습니다.

이 예에서는 모델이 저장되지 않았기 때문에 현재 세션이 종료된 후에는 모델을 사용할 수 없습니다.

복사
레이아웃으로 이동 [ "Properties"(특성) ; 애니메이션: 없음 ]

회귀 모델 구성 [ 조치: 훈련 ; 모델 이름: "HousePriceModel" ; 알고리즘: 랜덤 포레스트 ; 훈련 벡터 필드: Properties::Features ; 훈련 대상 필드: Properties::Price ; 비어 있거나 유효하지 않은 레코드 건너뛰기 ]

예제 2 - 임베딩 벡터 얻기 및 모델 훈련

회귀 모델을 훈련하여 고객 리뷰 텍스트를 기반으로 별점(1~5)을 예측합니다.

교육 데이터는 리뷰 테이블에 있으며 ReviewText(고객의 리뷰가 포함된 텍스트 필드)와 등급(고객이 선택한 별점이 포함된 숫자 필드)으로 구성됩니다. 스크립트가 FileMaker Server와 함께 설치된 AI 모델 서버에 대한 AI 계정을 구성한 후 해당 계정을 사용하여 ReviewText 필드의 데이터를 기반으로 ReviewEmbedding 컨테이너 필드에 텍스트 임베딩 벡터를 삽입합니다.

그런 다음 스크립트는 회귀 모델을 훈련시키고 이름을 "ReviewModel"로 지정하고 ReviewEmbedding의 훈련 벡터, 등급 필드의 목표 값 및 사용자 지정 매개 변수를 사용합니다. 훈련이 완료되면 모델은 글로벌 컨테이너 필드 ReviewModel에 저장됩니다.

복사
AI 계정 구성 [ 계정 이름: "AI_Model_Server" ; 모델 제공자: 사용자 지정 ; 엔드포인트: "https://myserver.example.com:8080/" ; SSL 인증서 확인 ; API 키: Global::API_Key ]

레이아웃으로 이동 [ "Reviews"(리뷰) ]

찾기 세트에 임베딩 삽입 [ 계정 이름: "AI_Model_Server" ; 임베딩 모델: "all-MiniLM-L12-v2" ; 원본 필드: Reviews::ReviewText ; 대상 필드: Reviews::ReviewEmbedding ; 오류 시 계속 ; 요약 보기 ]

변수 설정 [ $parameters ; Value: 
  Let ( [
    json = "{}" ;
    json = JSONSetElement ( json; "numTrees"; 15; JSONNumber ) ;
    json = JSONSetElement ( json; "maxDepth"; 15; JSONNumber ) ;
    json = JSONSetElement ( json; "minSamplesSplit"; 3; JSONNumber ) ;
    json = JSONSetElement ( json; "numFeatures"; 1000; JSONNumber ) ;
    json = JSONSetElement ( json; "maxFeatures"; 0; JSONNumber )
  ] ;
    json
  )
]

회귀 모델 구성 [ 조치: 모델 훈련 ; 모델 이름: "ReviewModel" ; 알고리즘: 랜덤 포레스트 ; 훈련 벡터 필드: Reviews::ReviewEmbedding ; 훈련 대상 필드: Reviews::Rating ; 비어 있거나 유효하지 않은 레코드 건너뛰기 ; 매개 변수: $parameters ; 모델 저장 위치: Reviews::ReviewModel ]

이름이 "ReviewModel"인  모델을 사용할 준비가 되었습니다. PredictFromModel예제 2를 참조하십시오.

예제 3 - 평균 제곱 오차 계산

훈련된 회귀 모델의 품질을 평가하기 위해 평균 제곱 오차를 계산합니다(참고 사항 참조).

스크립트는 예제 2에 사용된 훈련 데이터를 포함하는 리뷰 레이아웃으로 이동하여 모든 레코드를 표시하고 $squaredLossSum 변수를 제로화하고 첫 번째 레코드로 이동한 다음, 이전에 저장된 모델을 로드하고 이름을 "ReviewModel"로 지정합니다.

루프에서 각 레코드에 대해 PredictFromModel 함수를 사용하여 모델에 의해 예측된 값과 등급 필드의 실제 값 사이의 차이가 제곱되어 $squaredLossSum에 추가됩니다.

모든 레코드를 반복한 후 MSE 값은 $squaredLossSum을 샘플 수(훈련 데이터 세트의 레코드 수)로 나누어 계산하고 대화 상자에 표시합니다. 완료되면 스크립트는 메모리에서 모델을 로드 해제합니다.

복사
레이아웃으로 이동 [ "Reviews"(리뷰) ]
모든 레코드 보기
변수 설정 [ $squaredLossSum; Value: 0 ]

회귀 모델 구성 [ 조치: 모델 로드 ; 모델 이름: "ReviewModel" ; 모델 로드 위치: Reviews::ReviewModel ]

레코드/요청/페이지로 이동 [ 첫 번째 ]
루프 [ 플러시: 항상 ]
    변수 설정 [ $loss; 값: Reviews::Rating - PredictFromModel( "ReviewModel" ; Reviews::ReviewEmbedding ) ]
    변수 설정 [ $squaredLoss ; Value: $loss^2 ]
    변수 설정 [ $squaredLossSum ; Value: $squaredLossSum + $squaredLoss ]
    레코드/요청/페이지로 이동 [ 다음 ; 마지막 이후 종료: 켜짐 ]
루프 종료

사용자 설정 대화 상자 보기 [ "MSE Value" ; $squaredLossSum / Get( FoundCount ) ]

회귀 모델 구성 [ 조치: 모델 로드 해제 ; 모델 이름: "ReviewModel" ]

가능한 MSE 값은 .01875826440712939518입니다.