O lo'o fa'atalanoaina e le tala le tele o auala e fa'atatau ai le fa'atusatusaga fa'a-matematika o se laina fa'asolosolo faigofie (fa'alua).
O metotia uma e foia ai le fa'atusatusaga o lo'o talanoaina iinei e fa'avae i luga ole metotia sikuea aupito itiiti. Seʻi o tatou faʻaalia auala e faʻapea:
- Fofo su'esu'e
- Aga'i Fa'asa'o
- Fa'asolo fa'asolo malie
Mo auala taʻitasi e foia ai le faʻatusatusaga o se laina saʻo, o le tusiga e tuʻuina atu ai galuega eseese, lea e masani ona vaevaeina i latou e tusia e aunoa ma le faʻaaogaina o le faletusi. Numasi ma i latou e fa'aoga mo fa'atatauga Numasi. E talitonuina o le faʻaaogaina poto Numasi o le a fa'aitiitia tau fa'akomepiuta.
O fa'ailoga uma o lo'o tu'uina atu i le tusiga o lo'o tusia i le gagana python-2.7 faʻaaogaina Tusigāmanatu Jupyter. O lo'o fa'apipi'i i luga le fa'ailoga fa'apogai ma le faila ma fa'amatalaga fa'ata'ita'iga
O le tusiga e sili atu ona faʻatatau i le amataga ma i latou ua amata faasolosolo ona aʻoaʻoina le suʻesuʻega o se vaega lautele tele i le atamai faʻapitoa - aʻoaʻoga masini.
Ina ia faʻamalamalama le mataupu, matou te faʻaaogaina se faʻataʻitaʻiga faigofie tele.
Fa'ata'ita'iga tulaga
E lima a matou tulaga taua e faʻaalia ai le faʻalagolago Y от X (Laulaula Nu. 1):
Laulau Numera 1 “Tulaga Fa'ata'ita'i”
O le a tatou manatu o tulaga taua o le masina o le tausaga, ma - tupe maua i lenei masina. I se isi faaupuga, o tupe maua e faalagolago i le masina o le tausaga, ma - na'o le fa'ailoga e fa'alagolago ai tupe maua.
O le faʻataʻitaʻiga e faʻapea, e le gata i le tulaga o le faʻalagolago i le faʻalagolago o tupe maua i le masina o le tausaga, ma mai le tulaga o le numera o tau - e toʻaitiiti lava i latou. Ae ui i lea, o sea faʻafaigofieina o le a mafai ai, e pei ona latou fai mai ai, e faʻamatalaina, e le o taimi uma i le faigofie, mea e faʻaaogaina e le au amata. Ma o le faigofie foi o numera o le a faʻatagaina ai i latou e manaʻo e foia le faʻataʻitaʻiga i luga o pepa e aunoa ma le tele o tau o galuega.
Seʻi tatou manatu o le faʻalagolago o loʻo tuʻuina atu i le faʻataʻitaʻiga e mafai ona faʻatusatusa lelei i le faʻatusatusaina o le matematika o se laina faʻasolosolo faigofie (paiga) o le fomu:
le mea o le masina lea na maua mai ai tupe maua, - tupe maua e fetaui ma le masina, и o coefficients o le solomuli o le laina fuafuaina.
Manatua o le coefficient e masani ona ta'ua o le malifa po o le faanene o le laina fuafuaina; o lo'o fa'atusalia ai le aofa'i o le pe a suia .
E manino lava, o la tatou galuega i le faʻataʻitaʻiga o le filifilia lea o ia coefficients i le faʻatusatusaga и , lea o le eseesega o a tatou tau o tupe maua fuafuaina i masina mai tali moni, i.e. tau o loʻo tuʻuina atu i le faʻataʻitaʻiga o le a laʻititi.
Auala sikuea aupito itiiti
E tusa ai ma auala aupito itiiti sikuea, e tatau ona fa'atatauina le va'aiga i le fa'atafafa. O lenei metotia e mafai ai ona e aloese mai le fa'aleaogaina fa'atasi o fa'ailoga pe a iai ni fa'ailoga fa'afeagai. Mo se faʻataʻitaʻiga, afai i se tasi tulaga, o le faʻasesega o +5 (faaopoopo le lima), ma le isi -5 (toese le lima), ona fa'aleaogaina lea o le aofa'iga o fa'a'ese'esega ma fa'amauina i le 0 (zero). E le mafai ona faʻataʻatia le faʻaogaina, ae faʻaaoga le meatotino o le modulus ona lelei uma ai lea o faʻasalalauga ma faʻaputuina. Matou te le o faʻatalanoaina auiliili lenei mea, ae naʻo le faʻaalia o le faʻaogaina o faʻatusatusaga, o se aganuʻu le faʻatafafa o le fesuiaiga.
O le mea lea e foliga mai o le fua lea o le a tatou iloa ai le itiiti ifo o le aofaʻi o sikuea sikuea (sese):
le mea o se galuega fa'atatau o tali moni (o lona uiga, o tupe maua na matou fuafuaina),
o tali moni ia (tupe maua mai le fa'ata'ita'iga),
o le fa'ata'ita'iga fa'asino (numera o le masina lea e fa'amauina ai le 'ese'ese)
Se'i o tatou va'ava'ai le galuega, fa'amatala le vaega fa'avasega fa'atasi, ma sauni e fa'agasolo i le vaifofo su'esu'e. Ae muamua, seʻi o tatou faia se tafaoga puupuu e uiga i le eseesega ma manatua le uiga geometric o le derivative.
Eseesega
O le fa'aeseesega o le fa'agaioiga lea o le su'eina o mea e maua mai ai se galuega.
O le a le mea o loʻo faʻaaogaina i ai? O le fa'atupuina o se galuega e fa'aalia ai le fua o le suiga o le galuega ma ta'u mai ia i tatou lona itu. Afai e lelei le mea e maua mai i se itu, ona faʻateleina lea o le galuega; a leai, e faʻaitiitia le galuega. Ma o le sili atu o le tau o le faʻatupu atoatoa, o le maualuga o le suiga o le tau o galuega, faʻapea foʻi ma le maualuga o le slope o le kalafi galuega.
Mo se faʻataʻitaʻiga, i lalo o aiaiga o le Cartesian coordinate system, o le tau o le mea e maua i le mata M(0,0) e tutusa ma + 25 o lona uiga i se tulaga ua tuuina atu, pe a suia le tau i le itu taumatau e se iunite masani, tau siitia i le 25 iunite masani. I luga o le kalafi e foliga mai o se si'itia tifato o tau mai se tulaga.
O le isi faataitaiga. Ole tau fa'atupu e tutusa -0,1 o lona uiga pe a see ese i le tasi iunite masani, tau fa'aitiitia ile na'o le 0,1 iunite masani. I le taimi lava e tasi, i luga o le kalafi o le galuega, e mafai ona tatou vaʻaia se faʻataʻitaʻiga i lalo. O le tusiaina o se talafaatusa ma se mauga, e pei lava o loʻo tatou alu ifo lemu i lalo o se malifa malie mai se mauga, e le pei o le faʻataʻitaʻiga muamua, lea e tatau ai ona tatou aʻe i luga o mauga tifato :)
O le mea lea, pe a uma ona faʻavasega le galuega fa'apea и , matou te fa'auigaina le fa'asologa muamua o fa'atusa fa'avasegaga. A maeʻa ona fuafuaina faʻatusatusaga, o le a tatou mauaina se faiga o faʻatusatusaga e lua, e ala i le fofoina lea o le a mafai ai ona tatou filifilia ia tulaga taua o le coefficients. и , lea e suia ai le tau o mea faʻatatau i vaega tuʻufaʻatasia i se aofaiga laʻititi, ma i le tulaga o se fofo faʻataʻitaʻiga e le suia lava. I se isi faaupuga, o le sese o galuega i coefficients maua o le a oʻo i se laʻititi, talu ai o tau o vaega faʻavae i nei vaega o le a tutusa ma le zero.
O lea la, e tusa ai ma tulafono o le eseesega, o le vaega faʻasologa faʻasologa o le 1st order e tusa ai ma le coefficient. o le a ave le fomu:
Fa'atonuga muamua vaega fa'atusa fa'atatau e fa'atatau i o le a ave le fomu:
O se taunuuga, na matou mauaina se faiga o faʻatusatusaga o loʻo i ai se fofo faʻapitoa faigofie:
amata{equation*}
amata{mataupu}
na + bsumlimits_{i=1}^nx_i — sumlimits_{i=1}^ny_i = 0
maualuga_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i — gata_{i=1}^ny_i) = 0
fa'ai'uga{mataupu}
fa'ai'uga{equation*}
A'o le'i fo'ia le fa'atusa, se'i mua'i uta, siaki pe sa'o le uta, ma fa'atulaga fa'amaumauga.
La'uina ma fa'avasegaina fa'amaumauga
E tatau ona maitauina ona o le mea moni e faapea mo le suʻesuʻega faʻataʻitaʻiga, ma mulimuli ane mo le gradient ma stochastic gradient descent, o le a matou faʻaogaina le code i ni suiga se lua: faʻaaoga le faletusi Numasi ma e aunoa ma le faʻaaogaina, o le a tatou manaʻomia le faʻatulagaina o faʻamaumauga talafeagai (silasila i le code).
Faʻamatalaga faʻapipiʻi ma faʻasologa o tulafono
# импортируем все нужные нам библиотеки
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import math
import pylab as pl
import random
# графики отобразим в Jupyter
%matplotlib inline
# укажем размер графиков
from pylab import rcParams
rcParams['figure.figsize'] = 12, 6
# отключим предупреждения Anaconda
import warnings
warnings.simplefilter('ignore')
# загрузим значения
table_zero = pd.read_csv('data_example.txt', header=0, sep='t')
# посмотрим информацию о таблице и на саму таблицу
print table_zero.info()
print '********************************************'
print table_zero
print '********************************************'
# подготовим данные без использования NumPy
x_us = []
[x_us.append(float(i)) for i in table_zero['x']]
print x_us
print type(x_us)
print '********************************************'
y_us = []
[y_us.append(float(i)) for i in table_zero['y']]
print y_us
print type(y_us)
print '********************************************'
# подготовим данные с использованием NumPy
x_np = table_zero[['x']].values
print x_np
print type(x_np)
print x_np.shape
print '********************************************'
y_np = table_zero[['y']].values
print y_np
print type(y_np)
print y_np.shape
print '********************************************'
Faʻaaliga vaaia
I le taimi nei, a uma ona matou, muamua, utaina faʻamatalaga, lona lua, siaki le saʻo o le utaina ma mulimuli ane faʻatulagaina faʻamaumauga, o le a matou faia le ata muamua. O le auala e masani ona faʻaaogaina mo lenei mea taitoalua faletusi fuatai. I la matou faʻataʻitaʻiga, ona o le faʻatapulaʻaina o numera, e leai se aoga i le faʻaaogaina o le faletusi fuatai. O le a matou faaaogaina le faletusi masani matplotlib ae na o le vaai atu i le mea o loo faataapeapeina.
Fa'ailoga fa'asalalau
print 'График №1 "Зависимость выручки от месяца года"'
plt.plot(x_us,y_us,'o',color='green',markersize=16)
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.show()
Siata Nu. 1 “Faalagolago o tupe maua i le masina o le tausaga”
Fofo su'esu'e
Se'i o tatou fa'aogaina meafaigaluega sili ona taatele i totonu python ma foia le faiga o fa'atusa:
amata{equation*}
amata{mataupu}
na + bsumlimits_{i=1}^nx_i — sumlimits_{i=1}^ny_i = 0
maualuga_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i — gata_{i=1}^ny_i) = 0
fa'ai'uga{mataupu}
fa'ai'uga{equation*}
E tusa ai ma le tulafono a Cramer o le a tatou maua le determinant lautele, faapea foi ma determinants e ma e , ina ua uma, vaevae le determinant e i le fua fa'atatau lautele - su'e le coefficient , e faapena foi ona tatou maua le coefficient .
Fa'ailoga fa'amatalaga su'esu'e
# определим функцию для расчета коэффициентов a и b по правилу Крамера
def Kramer_method (x,y):
# сумма значений (все месяца)
sx = sum(x)
# сумма истинных ответов (выручка за весь период)
sy = sum(y)
# сумма произведения значений на истинные ответы
list_xy = []
[list_xy.append(x[i]*y[i]) for i in range(len(x))]
sxy = sum(list_xy)
# сумма квадратов значений
list_x_sq = []
[list_x_sq.append(x[i]**2) for i in range(len(x))]
sx_sq = sum(list_x_sq)
# количество значений
n = len(x)
# общий определитель
det = sx_sq*n - sx*sx
# определитель по a
det_a = sx_sq*sy - sx*sxy
# искомый параметр a
a = (det_a / det)
# определитель по b
det_b = sxy*n - sy*sx
# искомый параметр b
b = (det_b / det)
# контрольные значения (прооверка)
check1 = (n*b + a*sx - sy)
check2 = (b*sx + a*sx_sq - sxy)
return [round(a,4), round(b,4)]
# запустим функцию и запишем правильные ответы
ab_us = Kramer_method(x_us,y_us)
a_us = ab_us[0]
b_us = ab_us[1]
print ' 33[1m' + ' 33[4m' + "Оптимальные значения коэффициентов a и b:" + ' 33[0m'
print 'a =', a_us
print 'b =', b_us
print
# определим функцию для подсчета суммы квадратов ошибок
def errors_sq_Kramer_method(answers,x,y):
list_errors_sq = []
for i in range(len(x)):
err = (answers[0] + answers[1]*x[i] - y[i])**2
list_errors_sq.append(err)
return sum(list_errors_sq)
# запустим функцию и запишем значение ошибки
error_sq = errors_sq_Kramer_method(ab_us,x_us,y_us)
print ' 33[1m' + ' 33[4m' + "Сумма квадратов отклонений" + ' 33[0m'
print error_sq
print
# замерим время расчета
# print ' 33[1m' + ' 33[4m' + "Время выполнения расчета суммы квадратов отклонений:" + ' 33[0m'
# % timeit error_sq = errors_sq_Kramer_method(ab,x_us,y_us)
O mea nei na matou maua:
O lea la, o le tau o coefficients ua maua, o le aofaʻi o faʻailoga sikuea ua faʻamautuina. Tatou tusi se laina sa'o i luga o le histogram fa'ata'ape'apeina e tusa ai ma le fa'atatau na maua.
Fa'ailoga laina toe fo'i
# определим функцию для формирования массива рассчетных значений выручки
def sales_count(ab,x,y):
line_answers = []
[line_answers.append(ab[0]+ab[1]*x[i]) for i in range(len(x))]
return line_answers
# построим графики
print 'Грфик№2 "Правильные и расчетные ответы"'
plt.plot(x_us,y_us,'o',color='green',markersize=16, label = '$True$ $answers$')
plt.plot(x_us, sales_count(ab_us,x_us,y_us), color='red',lw=4,
label='$Function: a + bx,$ $where$ $a='+str(round(ab_us[0],2))+',$ $b='+str(round(ab_us[1],2))+'$')
plt.xlabel('$Months$', size=16)
plt.ylabel('$Sales$', size=16)
plt.legend(loc=1, prop={'size': 16})
plt.show()
Siata Nu. 2 “Tali sa'o ma fuafua”
E mafai ona e vaʻavaʻai i le kalafi faʻafefe mo masina taʻitasi. I la matou tulaga, matou te le maua mai ai se aoga taua tele mai ai, ae o le a matou faamalieina lo matou fia iloa pe o le a le lelei o le faʻasologa o le faʻasologa o laina faigofie e faʻaalia ai le faʻalagolago o tupe maua i le masina o le tausaga.
Fa'ailoga siata fa'asese
# определим функцию для формирования массива отклонений в процентах
def error_per_month(ab,x,y):
sales_c = sales_count(ab,x,y)
errors_percent = []
for i in range(len(x)):
errors_percent.append(100*(sales_c[i]-y[i])/y[i])
return errors_percent
# построим график
print 'График№3 "Отклонения по-месячно, %"'
plt.gca().bar(x_us, error_per_month(ab_us,x_us,y_us), color='brown')
plt.xlabel('Months', size=16)
plt.ylabel('Calculation error, %', size=16)
plt.show()
Siata Nu. 3 “Vaega, %”
E le atoatoa, ae ua mae'a la matou galuega.
Sei o tatou tusia se galuega e, e fuafua ai le coefficients и fa'aaoga le faletusi Numasi, sili atu le saʻo, o le a matou tusia ni galuega se lua: tasi e faʻaaoga ai se pseudoinverse matrix (e le fautuaina i le faʻatinoga, talu ai o le faagasologa e faʻalavelave faʻapitoa ma le mautu), o le isi e faʻaaogaina se faʻatusatusaga matrix.
Fa'ailoga Fa'amatalaga Fa'amatalaga (NumPy)
# для начала добавим столбец с не изменяющимся значением в 1.
# Данный столбец нужен для того, чтобы не обрабатывать отдельно коэффицент a
vector_1 = np.ones((x_np.shape[0],1))
x_np = table_zero[['x']].values # на всякий случай приведем в первичный формат вектор x_np
x_np = np.hstack((vector_1,x_np))
# проверим то, что все сделали правильно
print vector_1[0:3]
print x_np[0:3]
print '***************************************'
print
# напишем функцию, которая определяет значения коэффициентов a и b с использованием псевдообратной матрицы
def pseudoinverse_matrix(X, y):
# задаем явный формат матрицы признаков
X = np.matrix(X)
# определяем транспонированную матрицу
XT = X.T
# определяем квадратную матрицу
XTX = XT*X
# определяем псевдообратную матрицу
inv = np.linalg.pinv(XTX)
# задаем явный формат матрицы ответов
y = np.matrix(y)
# находим вектор весов
return (inv*XT)*y
# запустим функцию
ab_np = pseudoinverse_matrix(x_np, y_np)
print ab_np
print '***************************************'
print
# напишем функцию, которая использует для решения матричное уравнение
def matrix_equation(X,y):
a = np.dot(X.T, X)
b = np.dot(X.T, y)
return np.linalg.solve(a, b)
# запустим функцию
ab_np = matrix_equation(x_np,y_np)
print ab_np
Sei o tatou fa'atusatusa le taimi e fa'aalu i le fuafuaina o coefficients и , e tusa ai ma metotia e 3 na tuʻuina atu.
Fa'ailoga mo le fa'atulagaina o le taimi fa'atatau
print ' 33[1m' + ' 33[4m' + "Время выполнения расчета коэффициентов без использования библиотеки NumPy:" + ' 33[0m'
% timeit ab_us = Kramer_method(x_us,y_us)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "Время выполнения расчета коэффициентов с использованием псевдообратной матрицы:" + ' 33[0m'
%timeit ab_np = pseudoinverse_matrix(x_np, y_np)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "Время выполнения расчета коэффициентов с использованием матричного уравнения:" + ' 33[0m'
%timeit ab_np = matrix_equation(x_np, y_np)
Faatasi ai ma se vaega itiiti o faʻamaumauga, o se galuega "tusia e le tagata lava ia" o loʻo sau i luma, lea e maua ai le coefficients e faʻaaoga ai le auala a Cramer.
Ole taimi nei e mafai ona e fa'agasolo i isi auala e su'e ai coefficients и .
Aga'i Fa'asa'o
Muamua, se'i o tatou faauigaina le mea e ta'u o le gradient. I se faaupuga faigofie, o le gradient o se vaega e faʻaalia ai le itu o le maualuga o le tuputupu aʻe o se galuega. I se talafaatusa ma le a'ea'e i luga o se mauga, o le mea e fa'asaga i ai le fa'ali'i, o le mea lea o lo'o i ai le a'ega aupito maualuga i le tumutumu o le mauga. O le atinaʻeina o le faʻataʻitaʻiga ma le mauga, tatou te manatua o le mea moni tatou te manaʻomia le aʻega sili ona maualuga ina ia oʻo atu i le eleele maualalo i se taimi vave e mafai ai, o lona uiga, le maualalo - o le nofoaga e le faʻateleina pe faʻaitiitia ai le galuega. I le taimi lea, o le a tutusa le fa'asolo ma le zero. O le mea lea, matou te le manaʻomia se gradient, ae o se antigradient. Ina ia maua le antigradient e tatau ona e faʻateleina le gradient e -1 (toese le tasi).
Sei o tatou gauai atu i le mea moni o se galuega e mafai ona i ai ni nai minima, ma o le alu ifo i totonu o se tasi oi latou e faʻaaoga ai le algorithm o loʻo tuʻuina atu i lalo, o le a le mafai ona tatou maua se isi mea maualalo, atonu e maualalo ifo nai lo le mea na maua. Tatou malolo, e le o se taufaamatau ia i tatou! I la matou tulaga o loʻo matou feagai ma se tasi laʻititi, talu mai la matou galuega i luga o le kalafi o se parabola masani. Ma e pei ona tatau ona tatou iloa lelei uma mai la tatou aʻoga o le matematika, o le parabola e naʻo le tasi le laʻititi.
Ina ua uma ona matou iloa pe aisea matou te manaʻomia ai se gradient, ma o le gradient o se vaega, o lona uiga, o se vector ma faʻamaopoopo tuʻufaʻatasia, e tutusa lelei lava coefficients. и e mafai ona tatou fa'atinoina le fa'asolo malie.
Aʻo leʻi amataina, ou te fautua atu e faitau naʻo ni nai fuaiupu e uiga i le alu ifo algorithm:
- Matou te fuafuaina i se pseudo-faafuase'i faiga faamaopoopo o coefficients и . I la tatou faʻataʻitaʻiga, o le a tatou fuafuaina coefficient latalata ile zero. O se faiga masani lea, ae atonu e tofu lava le mataupu ma lana faiga masani.
- Mai le faamaopoopo toese le tau o le fa'asologa muamua o vaega fa'atatau ile mata'upu . O lea la, afai e lelei le faʻasologa, ona faʻateleina lea o le galuega. O le mea lea, e ala i le toesea o le tau o le mea e maua mai ai, o le a tatou agai atu i le itu faafeagai o le tuputupu ae, o lona uiga, i le itu o le tupuaga. Afai e le lelei le fa'atupu, ona fa'aitiitia ai lea o le galuega i le taimi lea ma e ala i le toesea o le tau o le fa'asologa tatou te aga'i i le itu o le fa'asolo.
- Matou te faia se gaioiga tutusa ma le faʻamaopoopo : toese le tau o le vaega e maua mai i le tulaga .
- Ina ia aua neʻi oso i luga ole laʻititi ma lele i le vateatea loloto, e tatau ona seti le laʻa laʻasaga i le itu o le alu ifo. I se tulaga lautele, e mafai ona e tusia se tusiga atoa e uiga i le faʻatulagaina saʻo o le laasaga ma pe faʻafefea ona suia i le taimi o le faʻagasologa o le faʻagasologa ina ia faʻaitiitia ai tau faʻatusatusaga. Ae o le taimi nei o loʻo i ai se matou galuega eseʻese i luma atu, ma o le a matou faʻatuina le laʻasaga laʻasaga e faʻaaoga ai le metotia faasaienisi o le "poke" poʻo, e pei ona latou fai mai i le gagana masani, faʻapitoa.
- O le taimi lava tatou te o mai ai faamaopoopo ua tuuina mai и toese le tau o mea e maua mai, matou te maua ni faʻasalalauga fou и . Matou te faia le isi laasaga (toesea), ua uma mai le faʻatulagaina faʻatulagaina. Ma o lea e amata ai pea le taamilosaga, seia oo ina ausia le convergence manaomia.
Uma! O lea ua matou sauni e o e su'e le alia aupito loloto o le Mariana Trench. Tatou amata.
Fa'ailoga mo le fa'asolo malie
# напишем функцию градиентного спуска без использования библиотеки NumPy.
# Функция на вход принимает диапазоны значений x,y, длину шага (по умолчанию=0,1), допустимую погрешность(tolerance)
def gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001):
# сумма значений (все месяца)
sx = sum(x_us)
# сумма истинных ответов (выручка за весь период)
sy = sum(y_us)
# сумма произведения значений на истинные ответы
list_xy = []
[list_xy.append(x_us[i]*y_us[i]) for i in range(len(x_us))]
sxy = sum(list_xy)
# сумма квадратов значений
list_x_sq = []
[list_x_sq.append(x_us[i]**2) for i in range(len(x_us))]
sx_sq = sum(list_x_sq)
# количество значений
num = len(x_us)
# начальные значения коэффициентов, определенные псевдослучайным образом
a = float(random.uniform(-0.5, 0.5))
b = float(random.uniform(-0.5, 0.5))
# создаем массив с ошибками, для старта используем значения 1 и 0
# после завершения спуска стартовые значения удалим
errors = [1,0]
# запускаем цикл спуска
# цикл работает до тех пор, пока отклонение последней ошибки суммы квадратов от предыдущей, не будет меньше tolerance
while abs(errors[-1]-errors[-2]) > tolerance:
a_step = a - l*(num*a + b*sx - sy)/num
b_step = b - l*(a*sx + b*sx_sq - sxy)/num
a = a_step
b = b_step
ab = [a,b]
errors.append(errors_sq_Kramer_method(ab,x_us,y_us))
return (ab),(errors[2:])
# запишем массив значений
list_parametres_gradient_descence = gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001)
print ' 33[1m' + ' 33[4m' + "Значения коэффициентов a и b:" + ' 33[0m'
print 'a =', round(list_parametres_gradient_descence[0][0],3)
print 'b =', round(list_parametres_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Сумма квадратов отклонений:" + ' 33[0m'
print round(list_parametres_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "Количество итераций в градиентном спуске:" + ' 33[0m'
print len(list_parametres_gradient_descence[1])
print
Na matou maulu i le pito i lalo o le Mariana Trench ma o iina na matou maua ai tutusa uma tau faʻatatau и , o le mea tonu lava lea sa faatalitalia.
Sei o tatou toe maulu, ae o le taimi lenei, o le a faatumulia le tatou taavale i le sami loloto i isi tekinolosi, e pei o le faletusi. Numasi.
Fa'ailoga mo le fa'asolo malie (NumPy)
# перед тем определить функцию для градиентного спуска с использованием библиотеки NumPy,
# напишем функцию определения суммы квадратов отклонений также с использованием NumPy
def error_square_numpy(ab,x_np,y_np):
y_pred = np.dot(x_np,ab)
error = y_pred - y_np
return sum((error)**2)
# напишем функцию градиентного спуска с использованием библиотеки NumPy.
# Функция на вход принимает диапазоны значений x,y, длину шага (по умолчанию=0,1), допустимую погрешность(tolerance)
def gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001):
# сумма значений (все месяца)
sx = float(sum(x_np[:,1]))
# сумма истинных ответов (выручка за весь период)
sy = float(sum(y_np))
# сумма произведения значений на истинные ответы
sxy = x_np*y_np
sxy = float(sum(sxy[:,1]))
# сумма квадратов значений
sx_sq = float(sum(x_np[:,1]**2))
# количество значений
num = float(x_np.shape[0])
# начальные значения коэффициентов, определенные псевдослучайным образом
a = float(random.uniform(-0.5, 0.5))
b = float(random.uniform(-0.5, 0.5))
# создаем массив с ошибками, для старта используем значения 1 и 0
# после завершения спуска стартовые значения удалим
errors = [1,0]
# запускаем цикл спуска
# цикл работает до тех пор, пока отклонение последней ошибки суммы квадратов от предыдущей, не будет меньше tolerance
while abs(errors[-1]-errors[-2]) > tolerance:
a_step = a - l*(num*a + b*sx - sy)/num
b_step = b - l*(a*sx + b*sx_sq - sxy)/num
a = a_step
b = b_step
ab = np.array([[a],[b]])
errors.append(error_square_numpy(ab,x_np,y_np))
return (ab),(errors[2:])
# запишем массив значений
list_parametres_gradient_descence = gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001)
print ' 33[1m' + ' 33[4m' + "Значения коэффициентов a и b:" + ' 33[0m'
print 'a =', round(list_parametres_gradient_descence[0][0],3)
print 'b =', round(list_parametres_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Сумма квадратов отклонений:" + ' 33[0m'
print round(list_parametres_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "Количество итераций в градиентном спуске:" + ' 33[0m'
print len(list_parametres_gradient_descence[1])
print
Tau fa'atatau и e le masuia.
Se'i o tatou va'ai pe na fa'afefea ona suia le mea sese i le taimi o le fa'asolosolo malie, o lona uiga, pe fa'afefea ona suia le aofa'i o fa'ailoga sikuea i la'asaga ta'itasi.
Fa'ailoga mo le fa'avasegaina o aofa'iga o mea fa'atafafa
print 'График№4 "Сумма квадратов отклонений по-шагово"'
plt.plot(range(len(list_parametres_gradient_descence[1])), list_parametres_gradient_descence[1], color='red', lw=3)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
Kalafi Nu. 4 “Aofa'iga o se'ese'ega fa'afafa a'o fa'asolo fa'asolo malie"
I luga o le kalafi tatou te iloa ai o laʻasaga taʻitasi e faʻaitiitia ai le mea sese, ma a maeʻa se numera o faʻasologa tatou te vaʻaia se laina toetoe lava faʻalava.
Ma le mea mulimuli, seʻi o tatou faʻatusatusa le eseesega i le taimi o le faʻatinoina o code:
Fa'ailoga e fuafua ai le fa'asolosolo taimi fa'atatau
print ' 33[1m' + ' 33[4m' + "Время выполнения градиентного спуска без использования библиотеки NumPy:" + ' 33[0m'
%timeit list_parametres_gradient_descence = gradient_descent_usual(x_us,y_us,l=0.1,tolerance=0.000000000001)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' + "Время выполнения градиентного спуска с использованием библиотеки NumPy:" + ' 33[0m'
%timeit list_parametres_gradient_descence = gradient_descent_numpy(x_np,y_np,l=0.1,tolerance=0.000000000001)
Masalo o loʻo tatou faia se mea sese, ae toe fai foi o se galuega faigofie "tusia i le fale" e le faʻaogaina le faletusi Numasi e sili atu i le taimi fa'atatau o se galuega e fa'aaoga ai le faletusi Numasi.
Ae matou te le o tutu pea, ae o loʻo agaʻi atu i le suʻesuʻeina o se isi auala manaia e foia ai le faʻatusatusaga faʻasolosolo faigofie. Feiloai!
Fa'asolo fa'asolo malie
Ina ia vave ona malamalama i le mataupu faavae o le faʻaogaina o le faʻasologa o le stochastic gradient, e sili atu le fuafuaina o ona eseesega mai le faʻasolosolo masani. O matou, i le tulaga o le faasolosolo malie, i le tutusa o mea e maua mai o и fa'aogaina le aofa'iga o tau o foliga uma ma tali moni o lo'o maua i le fa'ata'ita'iga (o lona uiga, o le aofa'i o mea uma и ). I le stochastic gradient descent, matou te le faʻaogaina uma tulaga taua o loʻo i ai i le faʻataʻitaʻiga, ae nai lo lena, pseudo-faʻafuaseʻi filifili le mea e taʻua o faʻataʻitaʻiga faʻasino ma faʻaaoga ona tau.
Mo se faʻataʻitaʻiga, afai o le faʻamaufaʻailoga ua faʻamoemoe e avea ma numera 3 (tolu), ona tatou ave lea o tau и , ona tatou suia lea o tau i totonu o faʻasologa faʻasolosolo ma fuafua faʻasalalauga fou. Ma, i le maeʻa ai o le faʻatulagaina o faʻasalalauga, matou te toe faʻaogaina faʻafuaseʻi le faʻataʻitaʻiga faʻataʻitaʻiga, sui tulaga taua e fetaui ma le faʻailoga i totonu o faʻatusatusaga faʻavasegaina, ma fuafua faʻamaopoopo i se auala fou. и ma isi. seia o'o ina lanu meamata le fa'atasi. I le tepa muamua, atonu e foliga mai e le mafai ona aoga lenei mea, ae e aoga. E moni e taua le matauina e le faʻaitiitia le mea sese i laʻasaga uma, ae e mautinoa lava e iai se faʻalavelave.
O a ni fa'amanuiaga o le fa'asolosolo fa'asolosolo fa'amasani nai lo le fa'agasologa masani? Afai o la tatou faʻataʻitaʻiga lapoʻa e matua tele ma fuaina i le fiasefulu afe o tau, ona sili atu lea ona faigofie le faʻagaioiina, fai mai, o le afe afe o latou, nai lo le faʻataʻitaʻiga atoa. O i'ina e amata mai ai le fa'asolo malie o le stochastic. I la tatou tulaga, ioe, o le a tatou le matauina le tele o se eseesega.
Sei o tatou tilotilo i le code.
Fa'ailoga mo le fa'asolo fa'asolo malie
# определим функцию стох.град.шага
def stoch_grad_step_usual(vector_init, x_us, ind, y_us, l):
# выбираем значение икс, которое соответствует случайному значению параметра ind
# (см.ф-цию stoch_grad_descent_usual)
x = x_us[ind]
# рассчитывыаем значение y (выручку), которая соответствует выбранному значению x
y_pred = vector_init[0] + vector_init[1]*x_us[ind]
# вычисляем ошибку расчетной выручки относительно представленной в выборке
error = y_pred - y_us[ind]
# определяем первую координату градиента ab
grad_a = error
# определяем вторую координату ab
grad_b = x_us[ind]*error
# вычисляем новый вектор коэффициентов
vector_new = [vector_init[0]-l*grad_a, vector_init[1]-l*grad_b]
return vector_new
# определим функцию стох.град.спуска
def stoch_grad_descent_usual(x_us, y_us, l=0.1, steps = 800):
# для самого начала работы функции зададим начальные значения коэффициентов
vector_init = [float(random.uniform(-0.5, 0.5)), float(random.uniform(-0.5, 0.5))]
errors = []
# запустим цикл спуска
# цикл расчитан на определенное количество шагов (steps)
for i in range(steps):
ind = random.choice(range(len(x_us)))
new_vector = stoch_grad_step_usual(vector_init, x_us, ind, y_us, l)
vector_init = new_vector
errors.append(errors_sq_Kramer_method(vector_init,x_us,y_us))
return (vector_init),(errors)
# запишем массив значений
list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.1, steps = 800)
print ' 33[1m' + ' 33[4m' + "Значения коэффициентов a и b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Сумма квадратов отклонений:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "Количество итераций в стохастическом градиентном спуске:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
Matou te vaʻavaʻai ma le totoa i faʻailoga ma maua i matou o loʻo fesiligia le fesili "E faʻapefea ona tupu lenei mea?" Na matou maua isi tau fa'atatau и . Masalo o le fa'asolosolo fa'asolo o le stochastic ua maua ai ni ta'iala sili ona lelei mo le fa'atusa? Ae paga lea e leai. Ua lava le vaʻavaʻai i le aofaʻi o sikuea sikuea ma vaʻai o faʻatasi ai ma tau fou o coefficients, e sili atu le sese. Tatou te le faanatinatia e faanoanoa. Sei o tatou fausia se kalafi o le suiga sese.
Fa'ailoga mo le fa'avasegaina o le aofa'i o fa'afeagai fa'afafa i le fa'asolo fa'asolo malie
print 'График №5 "Сумма квадратов отклонений по-шагово"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1])), list_parametres_stoch_gradient_descence[1], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
Kalafi Nu. 5 “Aofa'iga o se'ese'ega sikuea a'o fa'asolo fa'asolo fa'asolo malie"
A vaʻai i le faʻatulagaga, o mea uma e paʻu i le tulaga ma o lenei o le a matou faʻaleleia mea uma.
O le a la le mea na tupu? O mea nei na tupu. A matou filifilia faʻafuaseʻi se masina, ona mo le masina filifilia lea e taumafai ai le matou algorithm e faʻaitiitia le mea sese i le faʻatulagaina o tupe maua. Ona matou filifilia lea o se isi masina ma toe fai le faʻatusatusaga, ae matou te faʻaitiitia le mea sese mo le masina lona lua ua filifilia. Ia manatua nei o le lua masina muamua e matua ese lava mai le laina o le faʻasologa faʻasolosolo faigofie. O lona uiga pe a filifilia soʻo se tasi o nei masina e lua, e ala i le faʻaitiitia o le sese o latou taʻitoʻatasi, o la matou algorithm e matua faʻateleina le mea sese mo le faʻataʻitaʻiga atoa. O le a la le mea e fai? E faigofie le tali: e tatau ona e faʻaitiitia le laʻasaga o le alu ifo. A uma, e ala i le faʻaitiitia o le laʻasaga o le alu ifo, o le mea sese o le a taofia ai foi le "oso" i luga ma lalo. Pe sili atu, o le mea sese "oso" o le a le taofia, ae o le a le faia vave :) Sei o tatou siaki.
Laiti e fa'agasolo ai le SGD ma fa'aopoopoga laiti
# запустим функцию, уменьшив шаг в 100 раз и увеличив количество шагов соответсвующе
list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.001, steps = 80000)
print ' 33[1m' + ' 33[4m' + "Значения коэффициентов a и b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Сумма квадратов отклонений:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "Количество итераций в стохастическом градиентном спуске:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
print 'График №6 "Сумма квадратов отклонений по-шагово"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1])), list_parametres_stoch_gradient_descence[1], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
Kalafi Nu. 6 “Aofa'iga o eseesega faatafafa i le taimi o le faasolosolo malie (80 afe sitepu)”
Ua faʻaleleia le faʻaupuga, ae e leʻo lelei. Hypothetically, e mafai ona faasaʻoina lenei auala. Matou te filifilia, mo se faʻataʻitaʻiga, i le 1000 faʻataʻitaʻiga mulimuli o tau o le coefficients na faia ai le mea sese maualalo. E moni, mo lenei mea e tatau foi ona tatou tusia i lalo le taua o le coefficient latou lava. Matou te le faia lenei mea, ae ia gauai atu i le faasologa. E foliga lamolemole ma e foliga mai ua faaitiitia tutusa le sese. O le mea moni e le moni lenei mea. Se'i o tatou va'ai i le 1000 muamua ma fa'atusatusa i le mulimuli.
Code mo le siata SGD (muamua 1000 laasaga)
print 'График №7 "Сумма квадратов отклонений по-шагово. Первые 1000 итераций"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1][:1000])),
list_parametres_stoch_gradient_descence[1][:1000], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
print 'График №7 "Сумма квадратов отклонений по-шагово. Последние 1000 итераций"'
plt.plot(range(len(list_parametres_stoch_gradient_descence[1][-1000:])),
list_parametres_stoch_gradient_descence[1][-1000:], color='red', lw=2)
plt.xlabel('Steps (Iteration)', size=16)
plt.ylabel('Sum of squared deviations', size=16)
plt.show()
Kalafi Nu. 7 “Aofa'iga o fa'a'ese'ese sikuea SGD (muamua 1000 sitepu)"
Kalafi Nu. 8 “Aofa'iga o fa'a'ese'ese sikuea SGD (1000 sitepu mulimuli)"
I le amataga lava o le alu ifo, matou te matauina le tutusa lelei ma le faʻaitiitia o mea sese. I faʻamatalaga mulimuli, matou te vaʻai ai o le mea sese e alu solo ma faʻataʻamilo i le tau o le 1,475 ma i nisi taimi e tutusa lava ma lenei tau sili ona lelei, ae o loʻo alu pea i luga ... Ou te toe fai atu, e mafai ona e tusia i lalo tau o le coefficients и , ona filifili lea o mea e itiiti le sese. Ae ui i lea, sa i ai se matou faʻafitauli sili atu ona ogaoga: e tatau ona matou faia le 80 afe laasaga (silasila i le code) e faʻalatalata atu ai tau i le sili. Ma o lea ua fete'ena'i ma le manatu o le fa'asaoina o le taimi fa'atatau i le fa'asolosolo fa'asolosolo fa'atatau i le fa'asolosolo fa'asolosolo. O a mea e mafai ona faasa'oina ma faaleleia? E le faigata ona maitauina i le uluaʻi faʻasologa o loʻo tatou alu ifo i lalo ma, o le mea lea, e tatau ona tatou tuʻuina se laʻasaga tele i faʻasologa muamua ma faʻaitiitia le laasaga aʻo tatou agai i luma. Matou te le faia lenei mea i lenei tusiga - ua leva tele. O i latou e manaʻo e mafai ona mafaufau mo i latou lava pe faʻapefea ona fai lenei mea, e le faigata :)
Se'i o tatou faia le fa'asolo fa'asolo malie fa'ata'atia e fa'aaoga ai le faletusi Numasi (ma aua nei o tatou tautevateva i luga o maa na tatou faailoaina muamua)
Fa'ailoga mo Stochastic Gradient Descent (NumPy)
# для начала напишем функцию градиентного шага
def stoch_grad_step_numpy(vector_init, X, ind, y, l):
x = X[ind]
y_pred = np.dot(x,vector_init)
err = y_pred - y[ind]
grad_a = err
grad_b = x[1]*err
return vector_init - l*np.array([grad_a, grad_b])
# определим функцию стохастического градиентного спуска
def stoch_grad_descent_numpy(X, y, l=0.1, steps = 800):
vector_init = np.array([[np.random.randint(X.shape[0])], [np.random.randint(X.shape[0])]])
errors = []
for i in range(steps):
ind = np.random.randint(X.shape[0])
new_vector = stoch_grad_step_numpy(vector_init, X, ind, y, l)
vector_init = new_vector
errors.append(error_square_numpy(vector_init,X,y))
return (vector_init), (errors)
# запишем массив значений
list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)
print ' 33[1m' + ' 33[4m' + "Значения коэффициентов a и b:" + ' 33[0m'
print 'a =', round(list_parametres_stoch_gradient_descence[0][0],3)
print 'b =', round(list_parametres_stoch_gradient_descence[0][1],3)
print
print ' 33[1m' + ' 33[4m' + "Сумма квадратов отклонений:" + ' 33[0m'
print round(list_parametres_stoch_gradient_descence[1][-1],3)
print
print ' 33[1m' + ' 33[4m' + "Количество итераций в стохастическом градиентном спуске:" + ' 33[0m'
print len(list_parametres_stoch_gradient_descence[1])
print
O tau na foliga mai e toetoe lava tutusa ma le taimi e alu ifo ai e aunoa ma le faʻaaogaina Numasi. Peitaʻi, e talafeagai lenei mea.
Se'i o tatou su'esu'e pe o le a le umi na alu ai le fa'asolo malie o le stochastic.
Laiti mo le fuafuaina o le SGD taimi fa'atatau (80 afe laasaga)
print ' 33[1m' + ' 33[4m' +
"Время выполнения стохастического градиентного спуска без использования библиотеки NumPy:"
+ ' 33[0m'
%timeit list_parametres_stoch_gradient_descence = stoch_grad_descent_usual(x_us, y_us, l=0.001, steps = 80000)
print '***************************************'
print
print ' 33[1m' + ' 33[4m' +
"Время выполнения стохастического градиентного спуска с использованием библиотеки NumPy:"
+ ' 33[0m'
%timeit list_parametres_stoch_gradient_descence = stoch_grad_descent_numpy(x_np, y_np, l=0.001, steps = 80000)
O le sili atu i totonu o le vaomatua, o le pogisa o ao: toe, o le "tusitusi a le tagata lava ia" o loʻo faʻaalia ai le taunuuga sili. O nei mea uma e taʻu mai ai e tatau ona sili atu auala faʻapitoa e faʻaoga ai le faletusi Numasi, lea e matua faatelevaveina ai galuega fa'akomupiuta. I lenei mataupu o le a tatou le aoao e uiga ia i latou. O le ai ai se mea e mafaufau i ai i lou taimi avanoa :)
Se aotelega
Aʻo leʻi faʻauʻuina, ou te fia taliina se fesili e foliga mai na tulaʻi mai le matou au faitau pele. Aisea, o le mea moni, o sea "faʻasalaga" faʻatasi ma auga, aisea e manaʻomia ai ona tatou savavali i luga ma lalo ifo o le mauga (tele lava i lalo) ina ia maua ai le fanua maualalo faʻatauaina, pe afai o loʻo i o tatou lima se masini mamana ma faigofie, i le fo'i o se vaifofo au'ili'ili, lea e fa'afeso'ota'i vave i tatou i le nofoaga Sa'o?
O le tali i lenei fesili o loʻo taoto i luga. O lea ua tatou tilotilo i se faʻataʻitaʻiga faigofie tele, o loʻo i ai le tali moni e faalagolago i le faailoga e tasi . E te le vaʻaia soo lenei mea i le olaga, seʻi o tatou mafaufau e iai a tatou faʻailoga 2, 30, 50 pe sili atu. Sei o tatou faaopoopo i lenei afe, po o le fiasefulu afe foi o tau mo uiga taitasi. I lenei tulaga, o le suʻega suʻesuʻe atonu e le mafai ona tatalia le suʻega ma toilalo. I le isi itu, o le faasolosolo malie ma ona fesuiaiga o le a faasolosolo malie ae mautinoa tatou te latalata atili ai i le sini - o le pito maualalo o le galuega. Ma aua le popole i le saoasaoa - atonu o le a tatou vaʻavaʻai i auala e mafai ai ona tatou seti ma faʻatonutonu le umi o le laasaga (o lona uiga, saoasaoa).
Ma o lenei o le aotelega puupuu moni.
Muamua, ou te faʻamoemoe o mea o loʻo tuʻuina atu i totonu o le tusiga o le a fesoasoani i le amataina o "saienitisi faʻamatalaga" i le malamalama pe faʻafefea ona foia faigofie (ma e le gata) faʻasologa o laina laina.
Lona lua, na matou vaʻavaʻai i le tele o auala e foia ai le faʻatusatusaga. I le taimi nei, e faʻatatau i le tulaga, e mafai ona tatou filifilia le mea e sili ona fetaui e foia ai le faʻafitauli.
Lona tolu, na matou vaʻaia le malosi o faʻaopoopoga faʻaopoopo, e taʻua o le gradient down step length. E le mafai ona le amana'ia lenei fa'ailoga. E pei ona taʻua i luga, ina ia faʻaitiitia le tau o faʻatusatusaga, e tatau ona suia le umi o le laasaga i le taimi o le alu ifo.
Lona fa, i la matou tulaga, o galuega "tusitusi a le fale" na faʻaalia ai taimi sili ona lelei mo faʻatusatusaga. Masalo e mafua ona e le o le fa'aoga sili ona fa'apolofesa o agava'a a le faletusi Numasi. Ae po o le a lava le tulaga, o le faaiuga o loʻo mulimuli mai o loʻo fautua mai ai ia lava. I le tasi itu, o nisi taimi e aoga ai le fesiligia o manatu faʻavae, ma i le isi itu, e le aoga i taimi uma le faʻalavelaveina o mea uma - i se isi itu, o nisi taimi o se auala faigofie e foia ai se faʻafitauli e sili atu ona aoga. Ma talu ai o la matou sini o le suʻesuʻeina lea o auala e tolu e foia ai se faʻatusatusaga faʻasolosolo faigofie, o le faʻaaogaina o galuega "tusitusi a le tagata lava ia" na lava mo i matou.
Tusitala (poʻo se mea faapena)
1. Fa'asologa laina
2. Auala faatafafa aupito itiiti
3. Fa'atupu
4. Gradient
5. Fa'asolo malie
6. Faletusi NumPy