Професионална програма
Loading...
+ Нов въпрос
bamse avatar bamse 2 Точки

OLS vs. gradient descent ?

При OLS linear regression в статистиката, казваме, че при определени assumptions за errors и variables, OLS estimator, е този, който е BLUE (best linear unbiased estimator).  Намираме параметрите а(intercept), b(slope), които най добре минимизират грешките (или distances btw. y and  ỹ

 

В Maschine Learning се изчислява gradient descent.

Дали може на лекциите да се поясни каква е причината за това? Какви качества има по-добри от тези на OLS, Maximum Likelihood и др. техники ?

Как точно изчисляваме gradient descent. Взимат се a и b близки до нула, изчисляваме посоката към минимума, но кои точки се взимат при следващата итерация?

В този смисъл при linear regression оценена с gradient descent, оценяваме ли въобще втория момент – variance (sigma squared) и интересуваме ли се от signifigance levels при impact на съответните variables и т.н.

Тагове:
1
Machine Learning
dim4o avatar dim4o 289 Точки

Предимсвото на gradiant descent пред least squares метода е по-добрата производителност при голям брой features. При least squares имаш намиране на обратна матрица, което е скъпа и не винаги възможна операция с кубучна сложност. Това което знам е, че нe се препоръчва използването на least squares за брой на features над 10^4. За малък брой даже е възможно обаче производителността да е по-голяма. Ако имаш изображение 100x100px = 10^4 свойства, т.е. имаш 10^12 (по много груба преценка) итерации за обратната матрица, което е много.

Иначе при gradiant descent се прави винаги стъпка в правилната посока на локалния минимум. Избира си learnig rate и той ти определя порядъка на стъпката. Ако стъпката ти е много малка алгоритъма става много бавен въпреки голямата точност, която може да се постигне. Ако стъпката е прекалено голяма резулата може да е неточен и има опасност от дивегенция.

Точките за всяка следваща итерация се взимат като се ъпдейтнат всички координати спямо градианта и learning rate-а:

coef_i := coef_i - (learnig rete) x (gradient_i)

По-късно като съм на другата машина мога да пусна линк към една моя имплементация на gradiant descent без никакви библиотеки - всичко от нулата. Според мен оттам ще ти стане по-ясно какво е правилото.

Аз поне това съм разбрал от проучванията си засега. Иначе least squares е метод, който може да даде наистина добра математическа интуиция за това какво всъщност е грешката и как може да се представи по друг начин процеса на обучение: като проекция на вектор от пространство с по-висока размернист в пространство с по-ниска размерност, а грешката е разстоянието на вектора до равнината.

ПП: При gradiant descent и ъпдейт операцията може да се извлече голяма полза от векторизацията и възможностите на конкретния процесор, т.е. определен набор от ъпдейт операциите да се извършват едновременно, което е ОК, защото така или иначе тези действия са независими по едно от друго по природа. Разгледах сорса на sklearn, за да видя как се прави регресията и не мисля, че за по-малък брой семпли използва least squares. Използва само gradiant descent .

1
22/03/2018 16:58:51