Main Content

KNN 탐색

searcher 객체를 사용하여 k-최근접이웃 찾기

R2023b 이후

  • KNN Search Block Icon

라이브러리:
Statistics and Machine Learning Toolbox / Neighborhood Searcher

설명

KNN Search 블록은 최근접이웃 searcher 객체(ExhaustiveSearcher 또는 KDTreeSearcher)를 사용하여 쿼리 점에 대한 데이터의 최근접이웃을 찾습니다.

searcher 객체를 포함하는 작업 공간 변수의 이름을 지정하여, 관측값 데이터를 포함하는 훈련된 이 객체를 블록으로 가져옵니다. 입력 포트 x는 쿼리 점을 받고 출력 포트 Idx는 데이터의 k-최근접이웃의 인덱스를 반환합니다. 선택적 출력 포트 D는 쿼리 점과 최근접이웃 간의 거리를 반환합니다.

포트

입력

모두 확장

쿼리 점으로, 행 벡터로 지정됩니다. x최근접이웃 탐색기 선택에 의해 지정된 searcher 객체의 예측 변수 개수와 동일한 열 개수를 가져야 합니다. x의 열은 searcher 객체에 있는 열과 순서가 동일해야 합니다.

데이터형: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

출력

모두 확장

데이터의 최근접이웃에 대한 인덱스로, 숫자형 행 벡터 또는 1×1 셀형 배열로 반환됩니다.

  • 블록 파라미터 대화 상자의 기본 탭에서 동순위 포함을 선택하지 않은 경우 이 블록은 1×k 숫자형 행 벡터를 반환합니다. 여기서 k는 탐색한 최근접이웃 개수입니다. 행 벡터의 각 열은 쿼리 점 x까지의 거리를 증가하는 순서로 정렬했을 때의 데이터의 최근접이웃 점에 대한 인덱스를 포함합니다.

  • 블록 파라미터 대화 상자의 기본 탭에서 동순위 포함을 선택하는 경우 이 블록은 1×1 셀형 배열을 데이터에서 쿼리 점 x에 가장 가까운 관측값의 인덱스 중 최소 k개 인덱스로 구성된 숫자형 행 벡터를 포함하는 가변 크기 신호로 반환합니다. 벡터의 열은 쿼리 점까지의 거리가 증가하는 순서로 정렬됩니다.

데이터형: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

최근접이웃에서 쿼리 점까지의 거리로, 숫자형 행 벡터 또는 1×1 셀형 배열로 반환됩니다.

  • 블록 파라미터 대화 상자의 기본 탭에서 동순위 포함을 선택하지 않은 경우 이 블록은 1×k 숫자형 행 벡터를 반환합니다. 여기서 k는 탐색한 최근접이웃 개수입니다. 거리 측정법에 따라 행 벡터의 각 열은 데이터의 최근접이웃 점에서 쿼리 점 x까지의 거리를 포함합니다. 행 벡터의 열은 쿼리 점까지의 거리가 증가하는 순서로 정렬됩니다.

  • 블록 파라미터 대화 상자의 기본 탭에서 동순위 포함을 선택하는 경우 이 블록은 1×1 셀형 배열을 데이터에서 쿼리 포인트 x에 가장 가까운 관측값 중 최소 k개 거리의 숫자형 행 벡터를 포함하는 가변 크기 신호로 반환합니다. 벡터의 열은 쿼리 점까지의 거리가 증가하는 순서로 정렬됩니다.

종속 관계

이 포트를 활성화하려면 KNN Search 블록에서 최근접이웃 거리에 대한 출력 포트 추가를 선택합니다.

데이터형: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

파라미터

모두 확장

기본

ExhaustiveSearcher 객체 또는 KDTreeSearcher 객체를 포함하는 작업 공간 변수의 이름을 지정합니다.

참고

소프트웨어는 블록 파라미터 대화 상자에서 지정할 수 있는 모든 파라미터에 디폴트 설정을 사용합니다. 이 대화 상자의 파라미터는 searcher 객체의 파라미터를 재정의합니다.

프로그래밍 방식으로 사용하기

블록 파라미터: NeighborhoodSearcher
유형: 작업 공간 변수
값: ExhaustiveSearcher 객체 | KDTreeSearcher 객체
디폴트 값: "searcher"

KNN Search 블록에 두 번째 출력 포트 D를 포함하려면 체크박스를 선택합니다.

프로그래밍 방식으로 사용하기

블록 파라미터: ShowOutputDistances
유형: 문자형 벡터
값: "off" | "on"
디폴트 값: "off"

데이터에서 쿼리 점에 대해 찾을 k-최근접이웃의 개수를 지정합니다.

프로그래밍 방식으로 사용하기

블록 파라미터: NumNeighbors
유형: 양의 정수
값: single | double
디폴트 값: 1

블록 파라미터 대화 상자의 기본 탭에서 동순위 포함을 선택하지 않은 경우 블록은 쿼리 점으로부터의 거리가 동일한 관측값 중에서 인덱스가 가장 작은 관측값을 선택합니다.

동순위 포함을 선택하는 경우:

  • 블록 출력값은 출력 인수에서 k번째로 작은 거리와 거리가 같은 모든 최근접이웃을 포함합니다. k번째로 작은 거리와 거리가 같은 최근접이웃이 5개를 넘는 경우, 블록 출력값은 인덱스 값이 가장 작은 처음 5개의 최근접이웃만 포함합니다.

  • Idx 블록 출력값과 D 블록 출력값은 1×1 셀형 배열이며, 여기서 각 셀은 최소 k개의 인덱스와 거리로 각각 구성된 벡터를 포함합니다. 벡터의 열은 쿼리 점까지의 거리가 증가하는 순서로 정렬됩니다.

프로그래밍 방식으로 사용하기

블록 파라미터: IncludeTies
유형: 문자형 벡터
값: "off" | "on"
디폴트 값: "off"

데이터에서 쿼리 점의 최근접이웃을 찾는 데 사용되는 거리 측정법을 지정합니다.

ExhaustiveSearcher 객체와 KDTreeSearcher 객체의 경우 블록은 다음과 같은 거리 측정법을 지원합니다.

설명
"chebychev"체비쇼프 거리(최대 좌표 차이)
"cityblock"도시 블록 거리
"euclidean"유클리드 거리
"minkowski"민코프스키 거리입니다. 디폴트 지수는 2입니다. 블록 파라미터 대화 상자에서 다른 지수를 지정할 수 있습니다.

ExhaustiveSearcher 객체의 경우 블록은 다음과 같은 거리 측정법도 지원합니다.

설명
"correlation"1에서 관측값 간의 표본 선형 상관관계를 뺀 값(일련의 값으로 처리됨)
"cosine"1에서 관측값 간의 끼인각에 대한 코사인을 뺀 값(행 벡터로 처리됨)
"hamming"해밍 거리로, 서로 다른 좌표의 비율
"jaccard"0이 아닌 두 좌표의 값이 서로 다른 비율인 자카드 계수를 1에서 뺀 값
"mahalanobis"마할라노비스 거리로, 양의 정부호 공분산 행렬을 사용하여 계산됩니다. 이 블록은 기본적으로 searcher 객체의 데이터로부터 공분산 행렬을 계산합니다. 블록 파라미터 대화 상자에서 사용자 지정 공분산 행렬을 지정할 수 있습니다.
"seuclidean"표준화된 유클리드 거리입니다. 쿼리 점 x와 데이터 간의 좌표 차이는 각각 데이터에서 계산된 표준편차의 대응 요소로 나누어져 스케일링됩니다. 블록 파라미터 대화 상자에서 다양한 스케일링 방법을 지정할 수 있습니다.
"spearman"1에서 관측값 간 표본 스피어만의 순위 상관 계수를 뺀 값(일련의 값으로 처리됨)

참고

  • 거리 측정법 설정은 지정된 searcher 객체의 Distance 속성을 재정의합니다.

  • KNN Search 블록은 "fasteuclidean" 또는 "fastseuclidean" 거리 측정법을 지원하지 않습니다(거리 측정법 참조).

프로그래밍 방식으로 사용하기

블록 파라미터: DistanceMetric
유형: 문자형 벡터
값: "euclidean" | "chebychev" | "cityblock" | "minkowski" | "correlation" | "cosine" | "hamming" | "jaccard" | "mahalanobis" | "seuclidean" | "spearman"
디폴트 값: "euclidean"

이 블록은 기본적으로 searcher 객체의 데이터로부터 공분산 행렬을 계산합니다. Customized를 선택하고 Customized matrix 상자에 양의 정부호 행렬을 입력하여 사용자 지정 공분산 행렬을 지정할 수 있습니다.

참고

이 설정은 지정된 searcher 객체의 DistParameter 속성을 재정의합니다.

프로그래밍 방식으로 사용하기

블록 파라미터: CovarianceMatrix
유형: 양의 정부호 행렬
값: "Computed using data in searcher" | "Customized"
디폴트 값: "Computed using data in searcher"

종속 관계

이 파라미터를 활성화하려면 거리 측정법"mahalanobis"로 설정합니다.

이 블록은 기본적으로 searcher 객체의 데이터에서 스케일 모수 값을 계산합니다. Customized를 선택하고 Customized scale 텍스트 상자에 음수가 아닌 숫자형 행 벡터를 입력하여 사용자 지정 스케일 모수 값을 지정할 수 있습니다. 행 벡터는 searcher 객체의 예측 변수 개수와 동일한 열 개수를 가져야 합니다. 블록이 표준화된 유클리드 거리를 계산할 때 데이터의 각 좌표는 쿼리 점과 마찬가지로 Scale의 대응 요소로 스케일링됩니다.

참고

이 설정은 지정된 searcher 객체의 DistParameter 속성을 재정의합니다.

프로그래밍 방식으로 사용하기

블록 파라미터: Scale
유형: 음수가 아닌 숫자형 행 벡터
값: "Standard deviation of data in searcher" | "Customized"
디폴트 값: "Standard deviation of data in searcher"

종속 관계

이 파라미터를 활성화하려면 거리 측정법"seuclidean"로 설정합니다.

민코프스키 거리 측정법에 대한 지수를 지정합니다. 디폴트에 해당하는 경우인 P = 2일 때, 민코프스키 거리는 유클리드 거리와 동일합니다. 특수한 경우인 P = 1일 때, 민코프스키 거리는 도시 블록 거리와 동일합니다. 특수한 경우인 P = ∞일 때, 민코프스키 거리는 체비쇼프 거리와 동일합니다.

참고

이 설정은 지정된 searcher 객체의 DistParameter 속성을 재정의합니다.

프로그래밍 방식으로 사용하기

블록 파라미터: MinkExp
유형: 양의 정수
값: positive integer
디폴트 값: 2

종속 관계

이 파라미터를 활성화하려면 거리 측정법"minkowski"로 설정합니다.

데이터형

고정소수점 연산 파라미터

고정소수점 연산을 위한 반올림 모드를 지정합니다. 자세한 내용은 반올림 (Fixed-Point Designer) 항목을 참조하십시오.

블록 파라미터는 표현 가능한 가장 가까운 값으로 항상 반올림됩니다. 블록 파라미터의 반올림을 제어하려면 MATLAB® 반올림 함수를 사용하여 마스크 필드에 표현식을 입력하십시오.

프로그래밍 방식으로 사용하기

블록 파라미터: RndMeth
유형: 문자형 벡터
값: "Ceiling" | "Convergent" | "Floor" | "Nearest" | "Round" | "Simplest" | "Zero"
디폴트 값: "Floor"

오버플로가 포화되는지 또는 래핑되는지 지정합니다.

동작근거오버플로에 대한 영향

이 체크박스를 선택합니다(on).

모델에 오버플로 가능성이 있으며 생성된 코드에서 명시적으로 포화를 보호해야 합니다.

데이터형이 나타낼 수 있는 최솟값 또는 최댓값으로 오버플로가 포화됩니다.

int8(부호 있는 8비트 정수) 데이터형이 나타낼 수 있는 최댓값은 127입니다. 이 최댓값보다 큰 블록 연산 결과는 8비트 정수에 오버플로를 발생시킵니다. 이 체크박스를 선택하면, 블록 출력이 127에서 포화됩니다. 이와 마찬가지로, 블록 출력은 최소 출력값 –128에서 포화됩니다.

이 체크박스의 선택을 해제합니다(off).

생성된 코드의 효율성을 최적화해야 합니다.

블록이 범위를 벗어난 신호를 처리하는 방식을 과도하게 지정하지 않도록 해야 합니다. 자세한 내용은 Troubleshoot Signal Range Errors (Simulink) 항목을 참조하십시오.

데이터형이 나타낼 수 있는 적절한 값으로 오버플로가 래핑됩니다.

int8(부호 있는 8비트 정수) 데이터형이 나타낼 수 있는 최댓값은 127입니다. 이 최댓값보다 큰 블록 연산 결과는 8비트 정수에 오버플로를 발생시킵니다. 이 체크박스 선택을 해제하면 오버플로를 일으키는 값이 int8형으로 해석되어 의도하지 않은 결과가 생성될 수 있습니다. 예를 들어 블록 결과 130(2진수 1000 0010)을 int8형으로 표현하면 –126입니다.

프로그래밍 방식으로 사용하기

블록 파라미터: SaturateOnIntegerOverflow
유형: 문자형 벡터
값: "off" | "on"
디폴트 값: "off"

고정소수점 툴이 블록에 대해 지정된 데이터형을 재정의하지 않도록 방지하려면 이 파라미터를 선택하십시오. 자세한 내용은 Use Lock Output Data Type Setting (Fixed-Point Designer) 항목을 참조하십시오.

프로그래밍 방식으로 사용하기

블록 파라미터: LockScale
유형: 문자형 벡터
값: "off" | "on"
디폴트 값: "off"
데이터형

Idx 출력값의 데이터형을 지정합니다. 데이터형은 상속되거나 직접 지정되거나 Simulink.NumericType과 같은 데이터형 객체로 표현될 수 있습니다.

데이터형 도우미를 표시합니다. 버튼 을 클릭하면 데이터형 특성을 설정하는 데 도움이 되는 데이터형 도우미가 표시됩니다. 자세한 내용은 Specify Data Types Using Data Type Assistant (Simulink) 항목을 참조하십시오.

프로그래밍 방식으로 사용하기

블록 파라미터: IndicesDataTypeStr
유형: 문자형 벡터
: "Inherit: auto" | "double" | "single" | "half" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "fixdt(1,16,0)" | "fixdt(1,16,2^0,0)" | "<data type expression>"
디폴트 값: "Inherit: auto"

Simulink®가 검사하는 Idx 출력 범위의 최솟값을 지정합니다.

Simulink는 다음을 수행하는 데 최솟값을 사용합니다.

참고

인덱스 데이터형 최솟값 파라미터는 실제 Idx 출력 신호를 포화시키거나 자르지 않습니다. 이렇게 하려면 Saturation (Simulink) 블록을 대신 사용하십시오.

프로그래밍 방식으로 사용하기

블록 파라미터: IndicesOutMin
유형: 스칼라
: "[]" | 스칼라
디폴트 값: "[]"

Simulink가 검사하는 Idx 출력 범위의 최댓값을 지정합니다.

Simulink는 다음을 수행하는 데 최댓값을 사용합니다.

참고

인덱스 데이터형 최댓값 파라미터는 실제 Idx 출력 신호를 포화시키거나 자르지 않습니다. 이렇게 하려면 Saturation (Simulink) 블록을 대신 사용하십시오.

프로그래밍 방식으로 사용하기

블록 파라미터: IndicesOutMax
유형: 스칼라
: "[]" | 스칼라
디폴트 값: "[]"

거리(D) 출력값의 데이터형을 지정합니다. 데이터형은 상속되거나 직접 지정되거나 Simulink.NumericType과 같은 데이터형 객체로 표현될 수 있습니다.

데이터형 도우미를 표시합니다. 버튼 을 클릭하면 데이터형 특성을 설정하는 데 도움이 되는 데이터형 도우미가 표시됩니다. 자세한 내용은 Specify Data Types Using Data Type Assistant (Simulink) 항목을 참조하십시오.

프로그래밍 방식으로 사용하기

블록 파라미터: DistanceDataTypeStr
유형: 문자형 벡터
: "Inherit: auto" | "double" | "single" | "half" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "fixdt(1,16,0)" | "fixdt(1,16,2^0,0)" | "<data type expression>"
디폴트 값: "Inherit: auto"

참고

스피어만 거리 측정법에는 고정소수점 데이터형이 지원되지 않습니다.

종속 관계

이 파라미터를 활성화하려면 블록 파라미터 대화 상자의 기본 탭에서 최근접이웃 거리에 대한 출력 포트 추가를 선택합니다.

Simulink가 검사하는 거리(D) 출력 범위의 최솟값을 지정합니다.

Simulink는 다음을 수행하는 데 최솟값을 사용합니다.

참고

거리 데이터형 최댓값 파라미터는 실제 D 신호를 포화시키거나 자르지 않습니다. 이렇게 하려면 Saturation (Simulink) 블록을 대신 사용하십시오.

프로그래밍 방식으로 사용하기

블록 파라미터: DistanceOutMin
유형: 스칼라
: "[]" | 스칼라
디폴트 값: "[]"

종속 관계

이 파라미터를 활성화하려면 블록 파라미터 대화 상자의 기본 탭에서 최근접이웃 거리에 대한 출력 포트 추가를 선택합니다.

Simulink가 검사하는 거리(D) 출력 범위의 최댓값을 지정합니다.

Simulink는 다음을 수행하는 데 최댓값을 사용합니다.

참고

거리 데이터형 최댓값 파라미터는 실제 D 신호를 포화시키거나 자르지 않습니다. 이렇게 하려면 Saturation (Simulink) 블록을 대신 사용하십시오.

프로그래밍 방식으로 사용하기

블록 파라미터: DistanceOutMax
유형: 스칼라
: "[]" | 스칼라
디폴트 값: "[]"

종속 관계

이 파라미터를 활성화하려면 블록 파라미터 대화 상자의 기본 탭에서 최근접이웃 거리에 대한 출력 포트 추가를 선택합니다.

블록 특성

데이터형

Boolean | double | enumerated | fixed point | half | integer | single

직접 피드스루

yes

다차원 신호

no

가변 크기 신호

yes

영점교차 검출

no

대체 기능

MATLAB Function 블록에 최근접이웃 searcher 객체(ExhaustiveSearcher 또는 KDTreeSearcher)의 knnsearch 객체 함수를 사용할 수 있습니다. 예제는 Predict Class Labels Using MATLAB Function Block 항목을 참조하십시오.

Statistics and Machine Learning Toolbox™ 라이브러리의 KNN Search 블록을 사용할지 아니면 MATLAB Function 블록에 knnsearch 함수를 사용할지 결정할 때는 다음 사항을 고려하십시오.

  • Statistics and Machine Learning Toolbox 라이브러리 블록을 사용하는 경우, 고정소수점 툴 (Fixed-Point Designer)을 사용하여 부동소수점 모델을 고정소수점 모델로 변환할 수 있습니다.

  • MATLAB Function 블록에 knnsearch 함수를 사용하려면 이 블록에 대해 가변 크기 배열 지원이 활성화되어 있어야 합니다.

확장 기능

C/C++ 코드 생성
Simulink® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

고정소수점 변환
Fixed-Point Designer™를 사용하여 고정소수점 시스템을 설계하고 시뮬레이션할 수 있습니다.

버전 내역

R2023b에 개발됨