자동매칭 기능 (1차 매칭 알고리즘)

2025. 2. 23. 03:48· ZERO-TO-ONE-프로젝트
목차
  1. 확률 & 유사도 기반 1:1 매칭 엔진
  2. 1. 매칭 알고리즘의 핵심 개념
  3. 📌1.1 평점 유사도와 α의 영향
  4. 📌1.2 정규화 제곱 (Normalized Squared)
  5. 📌1.3 연속적 유사도 점수
  6. 📌1.4 가중치 기반 매칭: 8:1:1 가중치 적용
  7. 📌1.5 누적분포(CPD)와 가중치 기반 랜덤 선택
  8. 예시 시나리오: 평점 우선 매칭 (8:1:1 가중치 적용)
  9. 📌요청자 프로필
  10. 📌후보자 프로필
  11. 📌알고리즘 계산 (평점 우선: 가중치 8:1:1 적용)
  12. 📌누적분포(CPD)와 최종 선택
  13. 📌시나리오 요약

확률 & 유사도 기반 1:1 매칭 엔진

매칭 시스템은 단순히 “조건이 일치하면 매칭”하는 정적인 방식을 넘어,

연속적 유사도 점수를 통해 후보 간 차이를 세밀하게 반영하는 확률 기반 매칭 알고리즘을 도입하려고 한다.

평점, 스터디 분야, 선호시간대 등 다양한 조건을 동시에 고려하며,
누적분포(CPD)와 가중치 기반 랜덤 선택(Weighted Random Selection)을 활용하여 자동매칭을 수행한다.

1. 매칭 알고리즘의 핵심 개념

📌1.1 평점 유사도와 α의 영향

  • 평점 유사도는 요청자와 후보자의 평점 차이에 따라 계산된다.
    아래와 같은 지수 함수로 표현한다.

$$
S_{rating}​=e^{−α⋅∣rating_{req}​−rating_{cand}​∣}
$$

여기서 α값은 평점 차이에 대한 민감도를 조절한다.

  • α가 높으면, 조금만 차이가 나도 유사도가 급격히 낮아진다.
  • α가 낮으면, 평점 차이가 커도 유사도가 크게 떨어지지 않는다.

📌1.2 정규화 제곱 (Normalized Squared)

  • 평점 유사도의 미세한 차이를 더욱 극대화하기 위해, 정규화 제곱을 적용한다.
    $$
    S_{rating}^∗​=(S_{rating}​)^2
    $$
  • 이 방식은 평점이 정확히 일치하는 후보와 차이가 있는 후보 사이의 격차를 더 명확하게 보여준다.
  • 단순히 α 값을 2배 늘린 것과 같은 결과가 나올 것이다.
  • 평점에게만 정규화 제곱을 적용하는 식으로 평점 우선 매칭 기능에서 사용할 수 있다.

📌1.3 연속적 유사도 점수

  • 평점뿐 아니라, 스터디 분야 유사도와 선호시간대 유사도도 연속적 또는 이진(0 또는 1) 값으로 산출할 수 있다.
    • 스터디 분야: 같은 분야면 1, 다르면 0 (또는 두 분야 간의 연속적 유사도 점수)
    • 선호시간대: 같은 시간대면 1, 다르면 0 (또는 시간 간격에 따른 연속적 점수)

📌1.4 가중치 기반 매칭: 8:1:1 가중치 적용

  • 사용자 요구에 따라 각 조건의 중요도를 반영하는 가중치를 부여한다. 예를 들어, 평점 우선 매칭의 경우 가중치를 다음과 같이 설정한다.
  • 평점: 8
  • 스터디 분야: 1
  • 선호시간대: 1

최종 Total Score는 아래와 같이 계산된다.

$$
Total Score=8×S_{rating}^∗​+1×S_{field}​+1×S_{time}​
$$

📌1.5 누적분포(CPD)와 가중치 기반 랜덤 선택

  • 각 후보자의 Total Score를 기반으로 누적분포(Cumulative Probability Distribution, CPD)를 생성한다.
  • 0과 1 사이의 난수를 생성하고, 이 난수가 CPD의 어느 구간에 속하는지를 판별하여 가중치 기반 랜덤 선택을 수행한다.
  • 이 방식은 단순히 최고 점수를 가진 후보를 선택하는 것이 아니라, 확률적으로 높은 Total Score를 가진 후보가 선택될 가능성을 극대화할 수 있다.

예시 시나리오: 평점 우선 매칭 (8:1:1 가중치 적용)

📌요청자 프로필

  • 평점: 5.0
  • 스터디 분야: Backend
  • 선호시간대: Evening

📌후보자 프로필

후보자 평점 스터디 분야 선호시간대
A 5.0 Backend Evening
B 3.0 Backend Morning
C 5.0 Frontend Evening
D 4.0 Backend Evening
E 4.5 AI Afternoon

📌알고리즘 계산 (평점 우선: 가중치 8:1:1 적용)

(1) 평점 유사도 계산

평점유사도는 다음과 같이 정의된다.

$$
S_{rating}​=e^{−α⋅∣rating_{요청자}​−rating_{후보자}​∣}
$$
α 는 민감도를 조절하는 파라미터이다.
이 수치가 높으면 조금만 차이가 나도 유사도가 급격히 낮아진다.
rating 차이가 작을수록 S는 1에 가까워진다.

$$
S^∗​_{rating}=(Srating​)^2
$$

(2) 스터디 분야 및 선호시간대 유사도

  • 스터디 분야
    • 동일하면 1, 다르면 0
  • 선호시간대
    • 동일하면 1, 다르면 0(3) 최종 Total Score 계산$$
      Total Score=8×S^∗​{rating}+1×S{field}​+1×S_{time}​
      $$📌후보별 점수 계산

총 5명의 후보가 있다고 가정하면,

후보 A

  • 평점 차이 : $∣5.0−5.0∣=0.0$
  • 평점 유사도 : $S_{rating}​=e^{−0.5×0}=1,\quad S^∗_{rating}​=1^2=1$
  • 스터디 분야 유사도: 1 (Backend 동일)
  • 선호시간대 유사도: 1 (Evening 동일)
  • Total Score : $8×1+1+1=10$

후보 B

  • 평점 차이: $∣5.0−3.0∣=2.0$
  • 평점 유사도:
    $$
    S_{rating}​=e^{−0.5×2.0}=e^{−1}≈0.3679,\quad S_{rating}^∗​≈(0.3679)^2≈0.1353
    $$
  • 스터디 분야 유사도: 1 (Backend 동일)
  • 선호시간대 유사도: 0 (Morning vs Evening 다름)
  • Total Score:
    $$
    8×0.1353+1+0≈1.0824+1=2.0824
    $$후보 C, D, E이전과 완전히 같은 방식으로 계산

📌누적분포(CPD)와 최종 선택

Total Score 합:

$$
10+2.0824+9+4.9432+4.852≈30.8776
$$

후보별 비율 및 누적분포 (CPD 생성):

후보자 Total Score 비율 (Total Score / 30.8776) 누적분포 (CPD)
A 10 0.3239 0.3239
B 2.0824 0.0674 0.3913
C 9 0.2915 0.6828
D 4.9432 0.1601 0.8429
E 4.852 0.1571 1.0000

최종 매칭 후보 선택

  • 0~1 사이의 난수 r을 생성하여 CPD에 따라 후보 선택
  • A가 선택될 확률이 가장 높고(32.39%), 그다음으로 C (29.15%)와 D (16.01%)가 높은 확률을 가짐.

📌시나리오 요약

✔ 평점이 가장 중요하게 반영되도록(8:1:1 가중치) 설계됨
✔ CPD를 기반으로 확률적으로 매칭될 가능성을 조절
✔ 후보 A(완벽한 평점 매칭)가 가장 높은 점수를 받아 매칭될 가능성이 가장 높음
✔ 후보 C(완벽한 평점이지만 스터디 분야 불일치), 후보 D(비슷한 평점)가 차선 후보로 매칭될 가능성 있음
✔ 후보 B(평점이 낮음)와 후보 E(스터디 분야 및 시간대 불일치)는 낮은 점수를 받아 매칭될 가능성이 거의 없음

'ZERO-TO-ONE-프로젝트' 카테고리의 다른 글

자동 매칭 기능 (2차 매칭 알고리즘 : K-means clustering 도입)  (0) 2025.02.27
  1. 확률 & 유사도 기반 1:1 매칭 엔진
  2. 1. 매칭 알고리즘의 핵심 개념
  3. 📌1.1 평점 유사도와 α의 영향
  4. 📌1.2 정규화 제곱 (Normalized Squared)
  5. 📌1.3 연속적 유사도 점수
  6. 📌1.4 가중치 기반 매칭: 8:1:1 가중치 적용
  7. 📌1.5 누적분포(CPD)와 가중치 기반 랜덤 선택
  8. 예시 시나리오: 평점 우선 매칭 (8:1:1 가중치 적용)
  9. 📌요청자 프로필
  10. 📌후보자 프로필
  11. 📌알고리즘 계산 (평점 우선: 가중치 8:1:1 적용)
  12. 📌누적분포(CPD)와 최종 선택
  13. 📌시나리오 요약
'ZERO-TO-ONE-프로젝트' 카테고리의 다른 글
  • 자동 매칭 기능 (2차 매칭 알고리즘 : K-means clustering 도입)
최현준 개발일기
최현준 개발일기
남이 이해하기 쉽도록 글을 쓰는 걸 좋아합니다. https://github.com/Hyeonjun0527
최현준 개발일기남이 이해하기 쉽도록 글을 쓰는 걸 좋아합니다. https://github.com/Hyeonjun0527
최현준 개발일기
최현준 개발일기
최현준 개발일기
전체
오늘
어제
  • 분류 전체보기 (30)
    • 프론트엔드 (0)
    • 알고리즘 (10)
    • 백엔드 (13)
      • 김영한 스프링 기본편 (4)
    • 분류하기 애매한 것들 (0)
    • ZERO-TO-ONE-프로젝트 (2)
    • 휴지통(추후 관리 및 삭제) (0)
      • JAVA (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 실행 계획
  • 인덱스
  • MySQL
  • 알고리즘
  • sql-server
  • 백준
  • DBMS
  • fill factor
  • 엔티티 매니저 팩토리
  • PS
  • JPA
  • 인덱스 조각화
  • included columns

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
최현준 개발일기
자동매칭 기능 (1차 매칭 알고리즘)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.