-
[논문 리뷰/최적화] Model of Price Optimization as a Part of Hotel Revenue Management- Stochastic ApproachArchive/프로젝트 인사이트 2022. 12. 20. 20:44
프로젝트를 하면서 수익을 최대화하는 프로세스를 짜는 것에 대해 고민이 많았다.
사실 엄밀히 말해 학문적인 최적화라기보다는 , 내가 짠 예측 함수에 대해 최대의 값을 뽑는 변수를 찾는 것에 더 가까웠지만, 이 시도는 예측 함수가 정확하지 않았기 때문에 잘 되지 않았다😥
그래서 deterministic 한 시도보다는, stochastic 한 시도로 옮겨 가기로 했고, 그 과정에서 해당 논문을 리뷰하게 되었다.
이 논문 또한 이론보다는 application에 초점을 맞추었다.
사실 굉장히 짧고 내용도 축약 되어 있어서 따라서 구현하는 데에 어려움을 겪었고, 그 어려움은 여전히 진행중이다.
또한 교수님께 여쭤봤을 때, 잘못 설명한 부분도 있는 것 같았다...
하지만 최적화를 실용적으로 풀어낸 논문은 거의 없다시피 했기 때문에, 해당 논문을 깊게 읽게 되었다.
Idea
"수요가격탄력성" 에 기반한 simulation- based 가격 최적화
Literature Review
- 과거에는 공실 관리가 호텔 매출 관리의 주된 요소였다면, 최근데는 가격 최적화 & 다이나믹 프라이싱이 주류.
- Stochastic approach: 수요의 불확실성을 고려
- deterministic: booking horizon ( 오늘 예약 시 오늘부터 최대한 예약할수 있는 미래의 기간) 동안 가격 변화에 대한 변동성에 영향을 미칠 수 있는 요소가 많이 없을 때
- stochastic: 더 많은 요소를 고려해야 할 때 (학사일정, 날씨....)
- 실제로 성능이 더 낫다고 함
- 이 논문에서는 고객 segment 간의 서로 다른 행동과 수요 탄력성에 초점
- 매출 관리는 기본적으로 다양한 마켓 세그먼트의 행동을 이해해야 하는데, 고객 행동을 대표하는 핵심 고객 특성 중 하나가 바로 "가격 수요 탄력성" ( 가격 변화에 대한 고객의 반응 )
Model Proposal (Methodology)
1. Market Segmentation ▶ 2. E_pd Calculation ▶3. General Price Optimization
1. Market Segmentation
논문에서는 예시적으로 4가지로 분류를 했지만, 고객군을 분류함에 있어 같은 군끼리는 변동이 동질적이고, 다른 군끼리는 이질적인 세그멘테이션을 하는 것이 중요함.
또한 모델 개발 관점에서, seg는 탄력성의 분포와 특정 가격의 연결고리를 찾을 수 있어야 함.
2. E_pd Calculation
탄력성을 추정하는 데에 논문에서는 3가지 접근을 했음.
- log-log 선형 모델에서 단순히 회귀계수를 사용하는 방법
- Arc elasticity를 몬테카를로 시뮬레이션으로 추정하는 방법
- 그냥... 내가 주관적으로 세팅하는 방법
논문에서는 2번을 사용하였다.
P1: 원래 가격 , P2: 새 가격, Qd1: 원래 가격에서의 수요, Qd2: 새 가격에서의 수요
- P : 조정 가능한 변수, Qd1: 알고 있음, Qd2: 모름
- 목표: P2를 변화시켰을 때의 Qd2 설명
식에 ‘확률(chance)’를 넣어야 함 : 수요탄력성은 시장의 상황에 따라 항상 변하기 때문
→그러므로, 식은 이렇게 바뀔수 있음
안에 cdf가 왜 곱해져 있는건지 아직도 모르겠다. 교수님께서 잘못된 것 같다고 하셨음.
그래서 확률을 곱하지 않고 Qd2를 몬테카를로 시뮬레이션을 통해 카이스퀘어 분포에서 난수를 생성하여 Epd의 분포를 알아내었다.
여기서 유의해야 할 것은, 논문에서는 p를 가격으로 두었으나 우리는 행사 가격의 다양성과 물가 상승률을 고려하여 p를 할인율로 두었다.
Qd2를 ‘달 별로 하루에 특정 경로의 특정 할인율’로 하루에 들어온 입장객수 (ex. 소셜 경로에서 10월에 11% 할인율로 들어온 입장객 수: 3명, 1명,2명, 1명…)
결과:
3. General Price Optimization
이 파트에서는 주어진 Epd 내에서 어떻게 Optimization을 하는지 다룬다.
E_pd 를 안다면, 다음의 매출식을 최대화 하면 된다.
여기서 i는 판매 경로(세그먼트) , Q는 수요, Pi는 원래 가격, Ppi는 최적화할 가격이다.
여기서 E pd는 판매 경로(세그먼트) 별로 달라야 한다.
그러나 우리는 확실한 E pd를 모르기 때문에, 몬테카를로 시뮬레이션을 이용해서 위에서 구해놓은 E pd의 평균과 편차를 이용해 정규분포 난수 생성을 한다.
만약 E ~ N( mu, sigma )라면,
E 부분에 난수를 넣어줌으로써 최적화를 n번 iterate 한다.
따라서 최적의 할인율 p가 n번 발생하게 되고, 이의 분포를 살펴보고 평균 혹은 mode를 최적의 할인율로 선택한다.
논문에서는 이렇게 최적화 함으로써 2%의 매출 상승 효과를 가져왔다고 한다.
그러나 실제로 시도해본 입장에서, 매출과 고객 방문 사이의 상관성은 단순히 수요탄력으로 설명되지 않는 요소가 너무 많기 때문에 실제로 할인율을 이러한 식으로 바꾸었다고 해서 확실히 매출이 상승된다고 단언할 수는 없다.
그러나 매출이나 입장객 등의 , 사회적 요소를 수학적으로 논문을 보고 구현했다는 것에 의의를 두면서 글을 마치려 한다.
나는 최적화를 scipy 패키지의 minimize 를 사용해서 시도해 봤고, 그 안에서도 등식 제약과 부등식 제약이 모두 가능한 SLSQP 알고리즘을 쓰다가 수렴이 너무 안되어서.,.. L-BFGS-B 방법으로 바꾸었다. 마지막의 B는 바운더리의 B인데, 해의 범위만 있는 경우 훨씬 작동을 잘 했다.
조만간 해당 방법에 대해서도 공부하고, 코드를 깃헙에도 정리해볼 예정이다. 그럼 이만!! 글 읽어주셔서 감사합니다!
'Archive > 프로젝트 인사이트' 카테고리의 다른 글
scipy.optimize.minimize 를 이용한 최적화 예시(BFGS, SLSQP) (0) 2023.01.25 [최적화] Numerical optimization based on the L-BFGS method (0) 2022.12.30 최적화 linear programming (0) 2022.12.13 Response Surface Methods (0) 2022.12.05 Gradient tape 공부 (0) 2022.12.05