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 |
---|