I don’t look at a problem and put variables in there that don’t affect it.

Bill Parcells

Although the VP is pretty impressed with your predictive model, she thinks you can do better. To that end, you’ve collected additional data: you know how many hours each of your users works each day, and whether they have a PhD. You’d like to use this additional data to improve your model.

Accordingly, you hypothesize a linear model with more independent variables:

$$\text{minutes}=\alpha +{\beta}_{1}\text{friends}+{\beta}_{2}\text{work}\text{hours}+{\beta}_{3}\text{phd}+\epsilon $$

Obviously, whether a user has a PhD is not a number—but, as we mentioned in Chapter 11, we can introduce a *dummy variable* that equals 1 for users with PhDs and 0 for users without, after which it’s just as numeric as the other variables.

Recall that in Chapter 14 we fit a model of the form:

$${y}_{i}=\alpha +\beta {x}_{i}+{\epsilon}_{i}$$

Now imagine that each input
${x}_{i}$ is not a single number but rather a vector of *k* numbers,
${x}_{i1},...,{x}_{ik}$. The multiple regression model assumes that:

$${y}_{i}=\alpha +{\beta}_{1}{x}_{i1}+...+{\beta}_{k}{x}_{ik}+{\epsilon}_{i}$$

In multiple regression the vector of parameters is usually called *β*. We’ll want this to include the constant term as well, which we can achieve by adding a column of 1s to our data:

`beta`

`=`

`[`

`alpha`

`,`

`beta_1`

`,`

`...`

`,`

`beta_k`

`]`

and:

`x_i`

`=`

`[`

`1`

`,`

`x_i1`

`,`

`...`

`,`

`x_ik`

`]`

Then our model is just:

`from`

`scratch.linear_algebra`

`import`

`dot`

`,`

`Vector`

`def`

`predict`

`(`

`x`

`:`

`Vector`

`,`

`beta`

`:`

`Vector`

`)`

`->`

`float`

`:`

`"""assumes that the first ...`

Start Free Trial

No credit card required