초공간에서 거리 측정하기
게시 됨: 2016-01-10분석 기술에 피상적으로 익숙한 사람은 응용 프로그램에 대한 데이터 포인트 간의 거리에 의존하는 많은 알고리즘을 알아차렸을 것입니다. 각 관찰 또는 데이터 인스턴스는 일반적으로 다차원 벡터로 표시되며 알고리즘에 대한 입력에는 이러한 관찰의 각 쌍 사이의 거리가 필요합니다.
거리 계산 방법은 데이터 유형(숫자, 범주형 또는 혼합형)에 따라 다릅니다. 일부 알고리즘은 하나의 관찰 클래스에만 적용되는 반면 다른 알고리즘은 여러 클래스에 적용됩니다. 이 포스트에서 우리는 수치 데이터에서 작동하는 거리 측정에 대해 논의할 것입니다. 단일 블로그 게시물에서 다룰 수 있는 것보다 다차원 초공간에서 거리를 측정할 수 있는 방법이 더 많을 수 있으며 항상 새로운 방법을 개발할 수 있지만 일반적인 거리 측정항목과 상대적 장점을 살펴봅니다.
블로그 게시물의 나머지 부분에서는 다음을 의미합니다.
두 개의 관측치 또는 데이터 벡터를 참조합니다.
먼저 데이터를 준비하십시오 ...
다양한 거리 측정항목을 검토하기 전에 데이터를 준비해야 합니다.
숫자형 벡터로의 변환
수치 차원과 범주 차원을 모두 포함하는 혼합 관찰의 경우 첫 번째 단계는 범주 차원을 수치 차원으로 실제로 변환하는 것입니다. 3개의 잠재적 값이 있는 범주형 차원은 이진 값이 있는 2개 또는 3개의 숫자 차원으로 변환될 수 있습니다. 이 범주형 변수는 반드시 세 값 중 하나를 취하기 때문에 세 수치 차원 중 하나는 다른 두 차원과 완벽하게 상관됩니다. 응용 프로그램에 따라 괜찮을 수도 있고 좋지 않을 수도 있습니다.
텍스트 문자열(가변 길이 문장) 또는 게놈 시퀀스(고정 길이 시퀀스)와 같이 관찰이 순전히 범주형인 경우 데이터를 숫자 형식으로 변환하지 않고 일부 특수 거리 측정법을 직접 적용할 수 있습니다. 우리는 다음 포스트에서 이러한 알고리즘에 대해 논의할 것입니다.
표준화
사용 사례에 따라 각 차원을 동일한 척도로 정규화하여 한 차원에 따른 거리가 관찰 간의 전체 거리에 과도하게 영향을 미치지 않도록 할 수 있습니다. k-Means algorithm 에서도 같은 내용이 논의되었습니다. 정규화에는 두 가지 종류가 있습니다.
범위 정규화(재배율) 는 각 차원에서 최소값을 뺀 다음 해당 차원의 값 범위로 나누어 데이터를 0-1 범위로 정규화합니다.
범위 정규화의 첫 번째 문제는 보이지 않는 값이 0-1 범위를 넘어 정규화될 수 있다는 것입니다. 그러나 이것은 일반적으로 대부분의 거리 측정항목에 대한 문제가 아니지만 알고리즘이 음수 값을 처리할 수 없는 경우 문제가 될 수 있습니다. 두 번째 문제는 이것이 이상치에 크게 의존한다는 것입니다. 한 관측치가 차원에 대해 매우 극단적인(높거나 낮은) 값을 갖는 경우 다른 관측에 대한 해당 차원에 대한 정규화된 값은 함께 모여서 판별력을 잃게 됩니다.
표준 정규화(z-scaling) 는 각 관측치의 해당 차원에서 평균을 뺀 다음 모든 관측치에서 해당 차원 값의 표준 편차로 나누어 차원을 0의 평균과 1의 표준 편차를 갖도록 정규화합니다.
이것은 일반적으로 데이터를 대략 -5 ~ +5 범위로 유지하고 극단적인 값의 영향을 방지합니다.
두 관측치의 z 스케일링을 시뮬레이션했습니다. 각 차원의 평균과 표준 편차를 계산하기 위해 실제로 두 개 이상의 관측치가 필요하고 여기에서 각 차원에 대해 이 두 수치를 모두 가정했기 때문에 시뮬레이션했습니다.
그런 다음 거리를 계산합니다.
유클리드 거리는 "까마귀가 날아갈 때" 거리는 두 점 사이의 다차원 초공간에서 가장 짧은 거리입니다. 2D 평면 또는 3D 공간(이것은 선)에서 익숙하지만 유사한 개념이 더 높은 차원으로 확장됩니다. n차원 공간에서 벡터 간의 유클리드 거리는 다음과 같이 계산됩니다.
변환된 데이터 벡터 예제의 경우 다음과 같습니다.
이것은 가장 일반적인 메트릭이며 대부분의 애플리케이션에 매우 적합합니다. 이것의 변형은 제곱된 차이의 합인 제곱 유클리드 거리입니다.
맨해튼 거리 (Manhattan distance)는 뉴욕 맨해튼의 거리 구조와 같은 동-서-북-남 그리드 구조 때문에 명명되었으며 축에 평행하게 이동할 때 두 점 사이의 거리입니다.
맨해튼 거리
유클리드 거리
이것은 다음과 같이 계산됩니다.
이것은 "비유사성"의 기계 학습 의미보다 실제 물리적 의미에서 거리가 사용되는 일부 응용 프로그램에서 유용할 수 있습니다. 예를 들어 소방차가 한 지점에 도달하기까지의 거리를 계산해야 하는 경우 이를 사용하는 것이 더 실용적입니다.
캔버라 거리는 맨해튼 거리의 가중치 변형이며 다음과 같이 계산됩니다.
L-norm 거리는 2 이상의 확장입니다. 또는 2개 이상의 L-norm 거리의 특정 경우라고 말할 수 있으며 다음과 같이 정의됩니다.
여기서 L은 양의 정수입니다. 나는 이것을 사용해야 하는 경우를 본 적이 없지만 가능성을 아는 것이 여전히 좋습니다. 예를 들어 3-노름 거리는
양수 또는 음수 거리 기여가 상쇄되는 것을 원하지 않기 때문에 L은 일반적으로 짝수 정수여야 합니다.
Minkowski 거리는 L-norm 거리의 일반화이며, 여기서 L은 0에서 분수 값을 포함하는 모든 값을 취할 수 있습니다. 차수 p의 민코프스키 거리는 다음과 같이 정의됩니다.
코사인 거리는 각각 두 개의 관측치를 나타내며 데이터 점을 원점에 결합하여 형성되는 두 벡터 사이의 각도 측정값입니다. 코사인 거리는 0(정확히 동일)에서 1(연결 없음)까지이며 다음과 같이 계산됩니다.
이것은 범주형 데이터로 작업할 때 더 일반적인 거리 측정이지만 수치 벡터에 대해서도 정의할 수 있습니다. 숫자 벡터의 경우
그러나 주의 사항을 염두에 두십시오...
이 일이 올 줄 알았지, 그렇지? 분석이 수학 공식의 집합이었다면 당신처럼 똑똑한 사람이 그렇게 할 필요는 없을 것입니다.
먼저 주목해야 할 점은 서로 다른 메트릭으로 계산된 거리가 다르다는 것입니다. 1.3의 코사인 거리가 가장 작아서 벡터가 가장 가깝다는 것을 나타내지만 이것은 해석하기에 올바른 방법이 아니라고 생각하고 싶을 수 있습니다. 다른 방법에 따른 거리는 비교할 수 없으며 동일한 방법에 따라 서로 다른 관측 쌍 간의 거리만 비교할 수 있습니다. 거리는 상대적인 의미를 가지며 그 자체로는 절대적인 의미가 없습니다 .
이것은 올바른 거리 측정법을 선택하는 방법에 대한 다음 질문으로 이어집니다. 안타깝게도 정답은 없습니다. 데이터 유형, 컨텍스트, 비즈니스 문제, 애플리케이션 및 모델 교육 방법에 따라 다른 메트릭이 다른 결과를 제공합니다. 올바른 메트릭을 결정하려면 판단을 사용하거나 가정을 하거나 모델 성능을 테스트해야 합니다 .
두 번째 경고는 차원의 저주에 대해 자주 반복되는 경고입니다. 더 높은 차원에서 거리는 우리가 직관적으로 생각하는 방식으로 작동하지 않으며 분석가는 측정항목을 사용할 때 매우 조심해야 합니다.
세 번째 주의 사항은 세 관찰 간의 거리 관계에 관한 것입니다. 일부 측정항목은 삼각형 부등식을 지원하지만 다른 측정항목은 지원하지 않습니다 . 삼각형 부등식은 중간 점 k를 통하지 않고 점 i에서 점 j로 직접 이동하는 것이 항상 가장 짧다는 것을 의미합니다. 수학적으로,
애플리케이션에 따라 이것은 거리 측정의 필수 속성일 수도 있고 아닐 수도 있습니다.
아, 또 하나, '거리'는 '유사성'의 반대입니다. 거리가 멀수록 유사성은 낮아지고 그 반대의 경우도 마찬가지입니다. 클러스터링 알고리즘은 거리에 대해 작동하고 추천 알고리즘은 유사성에 대해 작동하지만 본질적으로 동일한 것에 대해 이야기하고 있습니다.
그렇다면 거리 수를 유사도 수로 변환하는 방법은 무엇입니까?