Изкуственият интелект сега е гореща тема и почти всеки иска да научи за него, но изкуственият интелект е по-широк термин, състоящ се от много различни видове и техники. Машинното обучение действа като врата към света на изкуствения интелект, то е общата отправна точка, от която хората решават кой поддомейн на AI да изберат и научат.

Линейната регресия е първият алгоритъм, който се преподава в машинното обучение, това е лесен алгоритъм за регресия, взет от статистиката. Това е отправна точка в машинното обучение, то учи начинаещия как се справя с проблем и как работи алгоритъмът за машинно обучение. Така че в този блог ще видим линейна регресия и нейния код в Python.

Регресия

Така че първо, нека поговорим за регресията. В регресията имаме няколко независими променливи, т.е. те са некорелирани и трябва да намерим връзка между тях, за да получим стойността на зависимата променлива y.
Стандартното уравнение на регресията е:

Проста линейна регресия

При линейната регресия сме дали входен вектор Xсамо с един параметър с n записа, а също и изходния вектор yнашата задача е да намерим такава връзка, че да можем намерете стойността на y на неизвестен преди това x.

Нека сега да видим как се изпълнява тази задача, първо ще преминем през математиката и ще видим алгоритъма от статистическа гледна точка и след това ще видим гледната точка на машинното обучение, последвана от внедряване в Python.

Статистическа гледна точка

Това е уравнението на линейната регресия.

тук
beta0 е пресечната точка на регресионната линия и е константа.
beta1 е матрицата от тегла на матрицата x.

За да изчислим хипотезата за линейна регресия, трябва да намерим най-подходящите тегла, но големият въпрос тук е как? отговорът е по-прост чрез сравняване на резултата от хипотезата с дадения изход yi и минимизиране на грешката.

Средна квадратна грешка

Сега въпросът е как ще се изчисли грешката? Ние изчисляваме, като сумираме квадрата на разликата между y_hat и y и ги разделяме на общия брой входове, това е известно като средна квадратна грешка (MSE) доста интуитивно име,

Функцията за грешка е известна също като функцията на разходите, която ще видим, когато научим за гледната точка на машинното обучение.

За да минимизираме функцията за грешка, ще използваме диференциране: диференциране по отношение на бета и задаване на първата производна на нула.

Така че окончателната прогноза е

Подход за машинно обучение

От гледна точка на машинното обучение уравнението на хипотезата остава същото, а функцията на грешката се нарича функция на разходите, но тук има основна разлика. Функцията на разходите не се минимизира с това ужасно изглеждащо уравнение, тъй като е много скъпо от изчислителна гледна точка, защото трябва да намерим обратната на матрица, а за огромни матрици обратната е доста скъпа операция. Решението тук е градиентно спускане - ефективен алгоритъм за минимизиране на функцията на разходите.

Градиентно спускане

Градиентното спускане е алгоритъм за оптимизация, който работи доста добре при линейна регресия, позволете ми да ви дам интуитивно разбиране за работата на алгоритъма. Да предположим, че сте на върха на планина и искате да слезете до най-ниската точка, за да започнете да слизате, най-добрият подход тук би бил стратегия за бързо достигане до дъното на долината е да се спуснете надолу в посока на най-стръмният наклон, това е точно какъв градиент на спускане намира най-стръмния наклон, за да слезе бързо, намира наклона на тежестта и върви в посока на намаляващия наклон, докато достигне нула, което е минимум.

Сега нека да видим как се прилага. Векторът на теглото се инициализира произволно и след това се подобрява постепенно, като всяка стъпка се опитва да намали функцията на разходите, докато алгоритъмът достигне до минимум.

Скорост на обучение

Тук най-важният фактор е степента на учене алфа, която определя размера или дължината на стъпката, тя е от решаващо значение за намирането на подходящия минимум, ако скоростта на учене би била твърде малка, алгоритъмът никога няма да се сближи, докато ако скоростта на учене би била твърде голям, тогава може да надхвърли и никога да не се сближи.

Изпъкнала срещу вдлъбната крива

Когато функцията на грешката е изпъкнала, тогава е лесно да се намери минимум, тъй като е само една, докато в случай на изпъкнала функция може да има множество минимуми, т.е. има много локални минимуми и един глобален минимум и скоростта на обучение трябва да е подходяща за скок към локалните минимуми, но не трябва да е достатъчно голям, за да пропусне дори глобалните минимуми.

Внедряване на Python

Така че сега видяхме както статистическия, така и подхода за машинно обучение, нека внедрим алгоритъма в Python и да го гледаме в действие.

Линейна регресия от нулата

Линейна регресия с помощта на Sklearn


>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> X = np.array([[1, 1], 
                  [1, 2], 
                  [2, 2], 
                  [2, 3]])
>>> y = np.dot(X, np.array([1, 2])) + 3
>>> reg = LinearRegression().fit(X, y)
>>> reg.score(X, y)
1.0
>>> reg.coef_
array([1., 2.])
>>> reg.intercept_

Линия на регресия

Можете да видите тук, че регресионната линия, направена чрез начертаване на y_hat срещу X_train, е линейна.

Ако четете това, тогава поздравления, стигнахте до края на блога и ако имате някакъв проблем или проблем, моля, коментирайте го, ако ви харесва, моля, пляскайте за мен.

Благодаря ти :)