SWPP / cid-backend

μBot backend based on Django
MIT License
0 stars 2 forks source link

implement Clustering Algorithm #14

Closed lameinthebox closed 5 years ago

lameinthebox commented 5 years ago

남은 시간이 많지 않으니 실시간으로 리뷰 받겠습니다.

Note

  1. 유저 데이터 및 평가 데이터가 존재하지 않습니다. 랜덤으로 생성될 것입니다.

군집화 알고리즘은 아래의 절차를 거쳐 진행될 것입니다.

  1. 전체 점(=유저) 중 임의의 점 n개를 추출합니다.
  2. 추출된 점들을 위계적으로 군집화합니다.
  3. 각 군집에 대해 내부에 k개의 대표지점을 정합니다. (서로 최대한 멀리)
  4. 각 군집에 대해 선정된 k개의 대표지점을 centroid를 향해 20% 이동시킵니다.
  5. 모든 점들을 그것에 가장 가까운 대표지점을 지닌 군집에 넣습니다.

위계적 군집화 알고리즘은 아래의 절차를 거쳐 진행될 것입니다.

  1. 최초에 모든 점들은 크기가 1인 군집입니다.
  2. 각각의 군집을 가장 가까운 또다른 군집과 병합합니다.
  3. 군집이 적절히 이루어졌다고 판단되면 멈춥니다. 아니라면 2로 돌아갑니다.

점 혹은 군집간의 거리는 아래의 절차를 거쳐 진행될 것입니다.

  1. 두 점이 모두 값을 가지고 있는 축들만 골라냅니다. 어느 점이 어느 축에 값을 지니고 있지 않다는 것은 우리 서비스에서 평가 데이터가 없음을 의미합니다. (평가가 0점인 것과 평가가 없는 것은 다르기 때문입니다.)
  2. 선택된 축들에 대해 코사인 값을 구합니다.
  3. 1에서 코사인 값을 뺀 것이 거리입니다.

논의할 점

  1. 군집화 알고리즘에서 n의 값, k의 값
  2. 위계적 군집화 알고리즘이 멈추는 시점

진행 상황 완료했습니다.