Przyjmijmy przykład, w którym chcemy przewidzieć ceny domów w pewnym mieście. Będziemy potrzebowali danych historycznych o sprzedaży domów, aby wytrenować model uczenia maszynowego.
W terminologii uczenia maszynowego, informacje o domach nazywane są cechami, a przewidywanie cen nazywane jest etykietą.
Gdy mamy wiele cech i chcemy wytrenować model, który może przewidzieć cenę biorąc pod uwagę te cechy, możemy użyć wielowymiarowej regresji liniowej. Model będzie musiał nauczyć się parametrów (theta 0 do theta n) na zbiorze danych szkoleniowych poniżej, tak, że jeśli chcemy przewidzieć cenę dla domu, który nie jest jeszcze sprzedany, może dać nam przewidywania, które jest bliżej do tego, co zostanie sprzedany za.
Practical Ideas for making Gradient Descent work well
- Use feature scaling to help gradient descent converge faster. Get every feature between -1 and +1 range. It doesn’t have to be exactly in the -1 to +1 range but it should be close to that range.
2. In addition to dividing the feature by maximum value people sometimes use mean normalization.
3. If we plot the value of cost function after each iteration of gradient descent, we should see that it converges. Below is a graph that shows gradient descent is converging. The number of iterations that it can take for gradient descent to converge varies a lot.
Polynomial Regression
Let’s say we have a housing price data set that looks like below.
Then there are a few different models we might fit to this.
One thing we could do is fit a quadratic model. It doesn’t look like a straight line fits this data very well. But then we may decide that quadratic model doesn’t make sense because of a quadratic function, eventually this function comes back down and we don’t think housing prices should go down when the size goes up too high. So then maybe we might choose a different polynomial model and choose to use instead a cubic function, and where we have now a third-order term and we fit that where green line is a somewhat better fit to the data cause it doesn’t eventually come back down. Możemy to zrobić używając maszynerii wielowariantowej regresji liniowej. Więc po prostu wybierając trzy cechy (jeden rozmiar, drugi kwadrat wielkości i trzeci sześcian wielkości) i stosując maszynerię regresji liniowej, możemy dopasować ten model i skończyć z sześciennym dopasowaniem do danych.
Important thing here to note is feature scaling. Więc jeśli wielkość domu waha się od jednego do tysiąca, to wielkość kwadratu domu będzie się wahać od jednego do miliona, a trzecia cecha x cubed, będzie się wahać od jednego dwa dziesięć do dziewięciu, a więc te trzy cechy przyjmują bardzo różne zakresy wartości, i ważne jest, aby zastosować skalowanie cech dla zejścia gradientowego, aby uzyskać je w porównywalnych zakresach wartości.
Innym rozsądnym wyborem tutaj może być powiedzenie, że cena domu to theta zero plus theta jeden razy rozmiar, a następnie plus theta dwa razy pierwiastek kwadratowy z rozmiaru.
Mając wgląd w kształt funkcji pierwiastka kwadratowego, oraz w kształt danych, wybierając różne cechy, możemy czasem uzyskać lepsze modele.
Wydaje się to trochę denerwujące, że z tymi wszystkimi różnymi wyborami cech, jak mam zdecydować, jakich cech użyć. W kolejnych postach, będziemy mówić o algorytmach, które automatycznie wybiorą jakie cechy są używane, i automatycznie wybiorą czy chcemy dopasować funkcję kwadratową, czy sześcienną, czy coś innego.
Ale do tego czasu, powinniśmy wiedzieć, że mamy wybór w tym jakich cech użyć, i poprzez projektowanie różnych cech możemy dopasować bardziej złożone funkcje na naszych danych niż tylko dopasowanie linii prostej do danych.