본문 바로가기

[TestDome] Marketing Costs

Marketing Costs

 

문제에 주어진 표를 보면 과거 마케팅 비용을 얼마 투자했을 때 얼마나 많은 단위가 팔렸는지에 대한 데이터가 있다. 즉, 투자한 마케팅 비용(Marketing expenditure)을 $X$로, 팔린 단위(Units sold)를 $y$로 선형회귀를 학습할 수 있다.

 

그런데 여기서 함정(?)은 학습한 모델로 $X$를 넣었을 때 $\widehat{y}$을 return하는 것이 아니라 원하는 $\widehat{y}$이 나오려면 $X$ 가 몇이어야 되는지를 묻고 있다. 즉, 문제에서 나온 예시처럼 6만 단위를 팔려면 마케팅 비용은 얼마나 투자해야하는지 return해야 하는 것이다.

 

 

선형회귀를 통해 추정된 회귀선은 아래와 같다.

$\widehat{unitsSold}= \beta_0 + \beta_1 * marketingExpenditure$

 

$\beta_0$는 절편(intercept), $\beta_1$은 기울기(coefficient)를 의미한다. 이는 학습한 모델에서 출력해보면 알 수 있다.

 

 

즉, 회귀식은 아래와 같다.

$\widehat{unitsSold}= 10000.0 + 0.2 * marketingExpenditure$

 

여기서 나에게 주어진 것은 $desiredUnitsSold$이고, 회귀식을 통해 $desriedMarketingExpenditure$를 알고 싶다.

 

$desriedMarketingExpenditure = \frac{desiredUnitsSold  - 10000.0}{0.2}$

 

아래와 같이 작성하면 된다.

import numpy as np
from sklearn import linear_model

def desired_marketing_expenditure(marketing_expenditure, units_sold, desired_units_sold):
    """
    :param marketing_expenditure: (list) A list of integers with the expenditure for each previous campaign.
    :param units_sold: (list) A list of integers with the number of units sold for each previous campaign.
    :param desired_units_sold: (integer) Target number of units to sell in the new campaign.
    :returns: (float) Required amount of money to be invested.
    """
    X = np.array([marketing_expenditure]).reshape(-1,1)
    y = np.array([units_sold]).reshape(-1,1)
    reg = linear_model.LinearRegression().fit(X, y)
    desired_marketing_expenditure = (desired_units_sold - reg.intercept_.item())/ reg.coef_.item()

    return desired_marketing_expenditure

#For example, with the parameters below, the function should return 250000.0
print(desired_marketing_expenditure(
    [300000, 200000, 400000, 300000, 100000],
    [60000, 50000, 90000, 80000, 30000],
    60000))

 

'Machine Learning > Scikit-learn' 카테고리의 다른 글

LightGBM 정리  (0) 2024.02.18