• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

DBSCAN 임의의 datapoint 생성 관련 질문

22.10.30 18:24 작성 조회수 127

0

안녕하세요. 강의를 수강중인 학생입니다.

DBSCAN 실습에서 총 1510개의 랜덤 datapoint를 만드는 과정에서 질문이 있어서 글을 작성합니다.

X1, X2를 생성하는 방식은 이해가 되는데, X3과 X4를 생성하는 것에서 잘 이해가 되지 않습니다.

X1과 X2를 생성할 시에는 KMeans에서 데이터를 만드는 방식과 동일하게 하였는데, 왜 갑자기 X3을 생성할 때에 저런 방식을 사용한 것인가요? 그리고 옆에 3과 +4는 무엇을 의미하는 것인가요? X4를 생성할 때에도 왜 3이 되어있는 건가요?

추가로, DBSCAN 훈련 결과 나온 label에서 -1을 결과로 가진 datapoint는 무조건 outlier 취급인 것이 기본 설정인가요? 그렇다면, 0을 결과로 가지는 datapoint는 무엇을 의미하나요? 강의에 따르면 set을 통해 나올 수 있는 label을 확인한 결과 {-1, 0, 1, 2, 3, 4, 5}입니다.

항상 자세하고 유익한 강의 감사드립니다.

답변 1

답변을 작성해보세요.

0

김민규님,

질문에 대한 답변입니다.

(질문)

X1, X2를 생성하는 방식은 이해가 되는데, X3과 X4를 생성하는 것에서 잘 이해가 되지 않습니다.

X1과 X2를 생성할 시에는 KMeans에서 데이터를 만드는 방식과 동일하게 하였는데, 왜 갑자기 X3을 생성할 때에 저런 방식을 사용한 것인가요? 그리고 옆에 3과 +4는 무엇을 의미하는 것인가요? X4를 생성할 때에도 왜 3이 되어있는 건가요?

(답변)

DBSCAN은 밀도 기반으로 inlier(정상치)와 outlier(이상치)를 구분하는 알고리즘이므로 밀집된 데이터를 임의로 만든 것일 뿐 특별한 의미가 있는 것은 아닙니다. X1 과 X2의 경우 중심점을 주고 중심점 부근의 밀집된 데이터를 생성했고, X3의 경우 np.random.rand를 이용했으므로 [0, 1) 사이의 데이터가 생성되는데 [0, 1)*3 +4를 해 주었으므로 [4, 7) 사이의 밀집된 데이터를 생성하기 위해 3을 곱하고 4를 더해 주었습니다. 실제로 X3.min(), X3.max() 를 출력해 보면 4~7 사이의 숫자가 생성된 것을 알 수 있습니다.
X4는 np.random.randn을 사용했으므로 0을 평균으로 하고 표준 편차가 1인 정규 분포 데이터가 생성되는데 3을 곱해 주었으므로 X4.min(), X4.max()를 해 보면 대략 -5~7 사이의 분포로 데이터가 생성되었을 것 입니다. X1, X2, X3 는 각각 500 개씩 비슷한 크기로 만들어 주었으므로 밀집된 데이터가 생성되었을 것이고 X4 는 -5~7 사이의 넓은 범위로 10개만 만들어 주었으므로 DBSCAN 알고리즘에 따르면 core 나 border point로 분류되지 않아 outlier로 분류될 것 입니다. 이러한 내용을 예상되로 잘 분류하는지 확인해 보기 위한 의도로 위와 같이 데이터를 만든 것입니다.

(질문)

추가로, DBSCAN 훈련 결과 나온 label에서 -1을 결과로 가진 datapoint는 무조건 outlier 취급인 것이 기본 설정인가요? 그렇다면, 0을 결과로 가지는 datapoint는 무엇을 의미하나요? 강의에 따르면 set을 통해 나올 수 있는 label을 확인한 결과 {-1, 0, 1, 2, 3, 4, 5}입니다.

(답변)

sklearn의 DBSCAN 함수는 outlier로 분류된 datapoint에 -1을 label로 반환합니다. 나머지 0, 1, 2, 3, 4, 5는 DBSCAN알고리즘에 따라 5 개의 밀집된 cluster가 있는 것으로 분류 되었다는 뜻 입니다. 마지막 시각화 부분에 색깔로 구분된 영역들이 밀도가 높다고 판단된 cluster 들 입니다.

좋은 질문 감사드리고 혹시 이해 안되시면 추가 질문 바랍니다.

감사합니다.