Kūkākūkā ka ʻatikala i nā ʻano he nui e hoʻoholo ai i ka hoʻohālikelike makemakika o kahi laina hoʻihoʻi maʻalahi (pālua).
ʻO nā ʻano hana a pau o ka hoʻoponopono ʻana i ka hoohalike i kūkākūkā ʻia ma ʻaneʻi, ua hoʻokumu ʻia ma luna o ke ʻano huinahā liʻiliʻi. E hōʻike i nā ʻano hana penei:
- ʻO ka hoʻoponopono hoʻoponopono
- Ka Descent Gradient
- Ka iho gradient Stochastic
No kēlā me kēia ʻano o ka hoʻoponopono ʻana i ka hoʻohālikelike o kahi laina pololei, hāʻawi ka ʻatikala i nā hana like ʻole, i māhele nui ʻia i nā mea i kākau ʻia me ka hoʻohana ʻole ʻana i ka waihona. Nā NumPy a me nā mea hoʻohana no ka helu ʻana Nā NumPy. Manaʻo ʻia ka hoʻohana akamai Nā NumPy e hoemi ana i na koina helu.
Ua kākau ʻia nā code āpau i hāʻawi ʻia ma ka ʻatikala ma ka ʻōlelo ʻthlelo 2.7 hoʻohana ʻana Puke Memo Jupyter. Hoʻopuka ʻia ka code kumu a me ka faila me ka ʻikepili laʻana
ʻOi aku ka manaʻo o ka ʻatikala i nā poʻe hoʻomaka a me ka poʻe i hoʻomaka mālie i ka hoʻopaʻa ʻana i kahi ʻāpana ākea loa i ka naʻauao artificial - aʻo mīkini.
No ka hōʻike ʻana i ka mea, hoʻohana mākou i kahi laʻana maʻalahi loa.
Kūlana laʻana
Loaʻa iā mākou nā waiwai ʻelima e hōʻike ana i ka hilinaʻi Y от X (Papa No. 1):
Papa No. 1 "Nā kūlana hoʻohālike"
E manaʻo mākou i nā waiwai oia ka malama o ka makahiki, a - loaʻa i kēia mahina. I nā huaʻōlelo ʻē aʻe, pili ka loaʻa kālā i ka mahina o ka makahiki, a - ka hōʻailona wale nō e hilinaʻi ai ka loaʻa kālā.
ʻO ka hiʻohiʻona ka mea, mai ka manaʻo o ka hilinaʻi o ka loaʻa kālā ma ka mahina o ka makahiki, a mai ka manaʻo o ka helu o nā waiwai - he liʻiliʻi loa o lākou. Eia nō naʻe, ʻo ia ʻano maʻalahi e hiki ai, e like me kā lākou e ʻōlelo nei, e wehewehe, ʻaʻole i nā manawa a pau me ka maʻalahi, nā mea i hoʻohui ʻia e nā mea hoʻomaka. A ʻo ka maʻalahi hoʻi o nā helu e ʻae i ka poʻe makemake e hoʻoponopono i ka laʻana ma ka pepa me ka ʻole o nā uku hana nui.
E noʻonoʻo kākou e hiki ke hoʻohālikelike ʻia ka hilinaʻi i hāʻawi ʻia i ka laʻana e ka hoʻohālikelike makemakika o kahi laina regression maʻalahi (paired) o ke ʻano:
kahi ka malama i loaa mai ai ka loaa. - loaʻa kālā e pili ana i ka mahina, и ʻo ia nā koena hoʻihoʻi o ka laina i manaʻo ʻia.
E hoʻomanaʻo i ka coefficient kapa pinepine ʻia ʻo ka slope a i ʻole gradient o ka laina i manaʻo ʻia; hōʻike i ka nui o ka ke hoololi .
ʻIke loa, ʻo kā mākou hana ma ka laʻana e koho i nā coefficients i ka hoohalike и , kahi i hoʻokaʻawale ʻia ai kā mākou mau waiwai i helu ʻia e ka mahina mai nā pane ʻoiaʻiʻo, ʻo ia hoʻi. liʻiliʻi nā waiwai i hōʻike ʻia ma ka hāpana.
ʻO ke ʻano huinahā liʻiliʻi loa
E like me ke ʻano o nā huinahā liʻiliʻi, pono e helu ʻia ka haʻalele ʻana ma ka hoʻohālikelike ʻana. Hāʻawi kēia ʻenehana iā ʻoe e pale i ka hoʻopau like ʻana o nā deviations inā loaʻa iā lākou nā hōʻailona kū'ē. No ka laʻana, inā ma kekahi hihia, ʻo ka deviation +5 (me ʻelima), a ma kekahi -5 (hōʻemi ʻelima), a laila e hoʻopau ka huina o nā ʻokoʻa i kekahi i kekahi a hiki i ka 0 (zero). ʻAʻole hiki ke hoʻokaʻawale i ka deviation, akā, e hoʻohana i ka waiwai o ka modulus a laila e maikaʻi nā deviations a pau a e hōʻiliʻili. ʻAʻole mākou e noʻonoʻo i kēia kikoʻī, akā hōʻike wale ʻia no ka maʻalahi o ka helu ʻana, he mea maʻamau ka hoʻohālikelike ʻana i ka deviation.
ʻO kēia ke ʻano o ke ʻano e hoʻoholo ai mākou i ka huina liʻiliʻi o nā haʻihaʻi huinaha (hewa):
kahi He hana ia o ka hoʻopili ʻana i nā pane ʻoiaʻiʻo (ʻo ia hoʻi, ka loaʻa kālā a mākou i helu ai),
ʻo nā pane ʻoiaʻiʻo (nā loaʻa i hāʻawi ʻia ma ka laʻana),
ʻo ia ka hōʻailona hōʻailona (helu o ka mahina i hoʻoholo ʻia ai ka haʻalele ʻana)
E hoʻokaʻawale i ka hana, e wehewehe i nā haʻihaʻi ʻokoʻa hapa, a mākaukau e neʻe i ka hopena analytical. Akā ʻo ka mea mua, e hele mākou i kahi huakaʻi pōkole e pili ana i ke ʻano o ka ʻokoʻa a hoʻomanaʻo i ke ʻano geometric o ka derivative.
ʻokoʻa
ʻO ka ʻokoʻa ka hana o ka ʻimi ʻana i ka derivative o kahi hana.
He aha ka derivative i hoʻohana ʻia no? Hōʻike ka derivative o kahi hana i ka wikiwiki o ka loli o ka hana a haʻi iā mākou i kona kuhikuhi. Inā maikaʻi ka derivative ma kahi kiko, a laila e piʻi ka hana, a i ʻole, e emi ka hana. A ʻoi aku ka nui o ka waiwai o ka derivative paʻa, ʻoi aku ka kiʻekiʻe o ka hoʻololi ʻana o nā waiwai hana, a me ka ʻoi aku o ka pali o ka pakuhi hana.
No ka laʻana, ma lalo o nā kūlana o kahi ʻōnaehana hoʻonohonoho Cartesian, ua like ka waiwai o ka derivative ma ke kiko M(0,0) me 25 + 'o ia ho'i ma kahi kiko'ī, ke ho'ololi 'ia ka waiwai i ka ʻākau e kahi ʻāpana maʻamau, waiwai piʻi e 25 mau ʻāpana maʻamau. Ma ka pakuhi, ua like ia me ka pi'i 'ana o ka waiwai mai kahi i hāʻawi ʻia.
ʻO kekahi laʻana. Ua like ka waiwai kumu -0,1 ʻo ia hoʻi ke hoʻoneʻe ʻia i hoʻokahi ʻāpana maʻamau, waiwai e emi iho ana ma ka 0,1 wae wale no. Ma ka manawa like, ma ka pakuhi o ka hana, hiki iā mākou ke nānā i kahi ʻano ʻike ʻole i lalo. Ke kiʻi ʻana i kahi hoʻohālikelike me kahi mauna, me he mea lā e iho mālie mākou i kahi pali mālie mai kahi mauna mai, ʻaʻole like me ka laʻana mua, kahi mākou e piʻi ai i nā piko pali loa :)
No laila, ma hope o ka hoʻokaʻawale ʻana i ka hana ma ke kuʻikahi и , wehewehe mākou i nā hoʻohālikelike hapa ʻokoʻa. Ma hope o ka hoʻoholo ʻana i nā hoʻohālikelike, e loaʻa iā mākou kahi ʻōnaehana o nā hoʻohālikelike ʻelua, ma ka hoʻoholo ʻana e hiki ai iā mākou ke koho i nā waiwai o nā coefficients. и , no ka mea e hoʻololi ʻia nā waiwai o nā derivatives e pili ana i nā wahi i hāʻawi ʻia e ka liʻiliʻi loa, a i ka hihia o kahi hopena analytical ʻaʻole e loli iki. I nā huaʻōlelo ʻē aʻe, ʻo ka hana hewa i nā coefficients i ʻike ʻia e hōʻea i ka liʻiliʻi, no ka mea, e like nā waiwai o nā derivatives hapa ma kēia mau wahi me ka zero.
No laila, e like me nā lula o ka hoʻokaʻawale ʻana, ʻo ka haʻihaʻi derivative hapa o ka papa mua e pili ana i ka coefficient. e lawe i ke ʻano:
ʻO ka hoʻokaʻina haʻihaʻi hapa mua e pili ana i e lawe i ke ʻano:
ʻO ka hopena, ua loaʻa iā mākou kahi ʻōnaehana hoʻohālikelike i loaʻa kahi hopena analytical maʻalahi:
hoʻomaka{equation*}
hoʻomaka{hihia}
na + bsumlimits_{i=1}^nx_i — huina_{i=1}^ny_i = 0
huina_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i — palena_{i=1}^ny_i) = 0
hope{hihia}
pau{equation*}
Ma mua o ka hoʻoholo ʻana i ka hoohalike, e hoʻouka mua kākou, e nānā i ka pololei o ka hoʻouka ʻana, a e hoʻopololei i ka ʻikepili.
Hoʻouka a hoʻopololei i ka ʻikepili
Pono e hoʻomaopopo ʻia ma muli o ka ʻoiaʻiʻo no ka hopena analytical, a ma hope no ka gradient a me ka stochastic gradient descent, e hoʻohana mākou i ke code ma nā ʻano ʻelua: me ka hoʻohana ʻana i ka waihona. Nā NumPy a me ka hoʻohana ʻole ʻana, a laila pono mākou i ka hoʻopololei ʻikepili kūpono (e ʻike i ke code).
Hoʻouka ʻikepili a me ke code hana
# импортируем все нужные нам библиотеки
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 '********************************************'
Hōʻikeʻike
I kēia manawa, ma hope o ka hoʻouka ʻana i ka ʻikepili, ʻo ka lua, nānā i ka pololei o ka hoʻouka ʻana a hoʻopau hope i ka ʻikepili, e hoʻokō mākou i ka ʻike mua. ʻO ke ʻano i hoʻohana pinepine ʻia no kēia papalua hale waihona puke Kapakai. I kā mākou laʻana, ma muli o nā helu liʻiliʻi, ʻaʻohe kumu o ka hoʻohana ʻana i ka waihona Kapakai. E hoʻohana mākou i ka waihona maʻamau matplotlib a e nana wale i ka scatterplot.
Code Scatterplot
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()
Palapala No. 1 "Ka hilinaʻi o ka loaʻa kālā ma ka mahina o ka makahiki"
ʻO ka hoʻoponopono hoʻoponopono
E hoʻohana kākou i nā mea hana maʻamau i python a hoʻoponopono i ka ʻōnaehana o nā hoohalike:
hoʻomaka{equation*}
hoʻomaka{hihia}
na + bsumlimits_{i=1}^nx_i — huina_{i=1}^ny_i = 0
huina_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i — palena_{i=1}^ny_i) = 0
hope{hihia}
pau{equation*}
E like me ke kānāwai o Cramer e loaʻa iā mākou ka mea hoʻoholo maʻamau, a me nā mea hoʻoholo e a e , mahope iho, e puunaue ana i ka mea hooholo e i ka mea hoʻoholo maʻamau - e ʻimi i ke koena , ʻike like mākou i ka coefficient .
Code hoʻonā analytical
# определим функцию для расчета коэффициентов 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)
Eia ka mea i loaa ia makou:
No laila, ua ʻike ʻia nā waiwai o nā coefficients, ua hoʻokumu ʻia ka huina o nā deviations squared. E kahakiʻi i kahi laina pololei ma ka histogram hoʻopuehu e like me nā coefficient i loaʻa.
Code laina regression
# определим функцию для формирования массива рассчетных значений выручки
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()
Papa helu 2 “Nā pane pololei a helu ʻia”
Hiki iā ʻoe ke nānā i ka pakuhi hoʻokaʻawale no kēlā me kēia mahina. I kā mākou hihia, ʻaʻole mākou e loaʻa i kekahi waiwai kūpono nui mai ia mea, akā e hoʻomāʻona mākou i ko mākou ʻimi e pili ana i ka maikaʻi o ka hoʻohālikelike ʻana o ka linear regression equation i ka hilinaʻi o ka loaʻa kālā ma ka mahina o ka makahiki.
Kiʻi palapala kuhi
# определим функцию для формирования массива отклонений в процентах
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()
Palapala No. 3 “Kuhie, %”
ʻAʻole maikaʻi, akā ua hoʻopau mākou i kā mākou hana.
E kākau kākou i kekahi hana i mea, e hoʻoholo i nā coefficients и hoʻohana i ka waihona Nā NumPy, ʻoi aku ka pololei, e kākau mākou i ʻelua mau hana: hoʻohana kekahi i ka matrix pseudoinverse (ʻaʻole ʻōlelo ʻia ma ka hana, no ka mea he paʻakikī a paʻa ʻole ke kaʻina hana), ʻo kekahi e hoʻohana ana i ka hoʻohālikelike matrix.
Code Hoʻoponopono Analytical (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
E hoʻohālikelike kākou i ka manawa e hoʻoholo ai i nā coefficients и , e like me nā ʻano hana 3 i hōʻike ʻia.
Code no ka helu ʻana i ka manawa helu
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)
Me ka liʻiliʻi o ka ʻikepili, e puka mai ana kahi hana "kākau pono'ī" i mua, e ʻike ai i nā coefficient e hoʻohana ana i ke ʻano o Cramer.
I kēia manawa hiki iā ʻoe ke neʻe i nā ala ʻē aʻe e ʻike ai i nā coefficient и .
Ka Descent Gradient
ʻO ka mua, e wehewehe kākou i ke ʻano o ka gradient. ʻO ka ʻōlelo maʻalahi, ʻo ka gradient kahi ʻāpana e hōʻike ana i ke kuhikuhi o ka ulu kiʻekiʻe o kahi hana. Ma ka hoʻohālikelike me ka piʻi ʻana i ke kuahiwi, ma kahi e kū pono ai ka gradient ma kahi o ka piʻi ʻoi loa o ka piko o ke kuahiwi. Ke hoʻomohala nei i ka laʻana me ka mauna, hoʻomanaʻo mākou i ka ʻoiaʻiʻo pono mākou i ka iho kiʻekiʻe loa e hiki ai i ka ʻāina haʻahaʻa me ka wikiwiki e hiki ai, ʻo ia hoʻi, ka liʻiliʻi loa - kahi kahi i piʻi ʻole ai ka hana. I kēia manawa e like ka derivative me ka ʻole. No laila, ʻaʻole pono mākou i kahi gradient, akā he antigradient. No ka huli ʻana i ka antigradient pono ʻoe e hoʻonui i ka gradient me -1 (emi hoʻokahi).
E hoʻolohe kākou i ka mea hiki ke loaʻa i kahi hana he mau minima, a i ka iho ʻana i loko o kekahi o lākou me ka hoʻohana ʻana i ka algorithm i manaʻo ʻia ma lalo nei, ʻaʻole hiki iā mākou ke ʻimi i kahi liʻiliʻi ʻē aʻe, ʻoi aku ka haʻahaʻa ma mua o ka mea i loaʻa. E hoʻomaha kākou, ʻaʻole kēia he mea hoʻoweliweli iā kākou! I kā mākou hihia, ke hana nei mākou me ka liʻiliʻi hoʻokahi, mai kā mākou hana ma ka pakuhi he parabola mau. A ʻoiai e ʻike pono kākou a pau mai kā mākou papa makemakika kula, hoʻokahi wale nō ka liʻiliʻi o ka parabola.
Ma hope o ko mākou ʻike ʻana i ke kumu e pono ai mākou i kahi gradient, a ʻo ka gradient kekahi ʻāpana, ʻo ia hoʻi, he vector me nā koina i hāʻawi ʻia, ʻo ia hoʻi nā coefficients like. и hiki iā mākou ke hoʻokō i ka iho gradient.
Ma mua o ka hoʻomaka ʻana, manaʻo wau e heluhelu i kekahi mau ʻōlelo e pili ana i ka algorithm descent:
- Hoʻoholo mākou ma ke ʻano pseudo-random i nā hoʻonohonoho o nā coefficients и . Ma kā mākou laʻana, e hoʻoholo mākou i nā coefficient kokoke i ka zero. He hana maʻamau kēia, akā hiki i kēlā me kēia hihia ke hana ponoʻī.
- Mai ka coordinate e unuhi i ka waiwai o ka 1st order partial derivative ma ke kiko . No laila, inā maikaʻi ka derivative, a laila hoʻonui ka hana. No laila, ma ka unuhi ʻana i ka waiwai o ka derivative, e neʻe mākou ma ka ʻaoʻao ʻē aʻe o ka ulu ʻana, ʻo ia hoʻi, ma ke ala o ka iho. Inā maikaʻi ʻole ka derivative, a laila e emi ka hana ma kēia wahi a ma ka unuhi ʻana i ka waiwai o ka derivative e neʻe mākou i ke ala o ka iho.
- Hana mākou i kahi hana like me ka coordinate : e unuhi i ka waiwai o ka huina hapa ma ke kiko .
- Iʻole e lele i luna o ka liʻiliʻi a lele i ka hohonu hohonu, pono e hoʻonohonoho i ka nui o ka paepae i ke ala o ka iho. Ma keʻano laulā, hiki iā ʻoe ke kākau i kahi ʻatikala holoʻokoʻa e pili ana i ka hoʻonohonoho pono ʻana i ka ʻanuʻu a pehea e hoʻololi ai i ka wā o ka iho ʻana i mea e hōʻemi ai i nā kumukūʻai helu. Akā i kēia manawa he hana ʻē aʻe kā mākou ma mua o mākou, a e hoʻokumu mākou i ka nui o ka ʻanuʻu me ka hoʻohana ʻana i ke ʻano ʻepekema o "poke" a i ʻole, e like me kā lākou e ʻōlelo nei ma ka ʻōlelo maʻamau, empirically.
- Ke hele mākou mai nā hoʻonohonoho i hāʻawi ʻia и e unuhi i nā waiwai o nā derivatives, loaʻa iā mākou nā hoʻonohonoho hou и . Lawe mākou i ka ʻanuʻu aʻe (unuhi), mai nā hoʻonohonoho i helu ʻia. A no laila, hoʻomaka hou ka pōʻai, a hiki i ka hoʻokō ʻana i ka convergence i makemake ʻia.
ʻO nā mea a pau! I kēia manawa ua mākaukau mākou e hele e ʻimi i ke awāwa hohonu loa o ka ʻAuwai ʻo Mariana. E hoʻomaka kākou.
Code no ka iho gradient
# напишем функцию градиентного спуска без использования библиотеки 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
Luʻu mākou i lalo loa o ka ʻAuwai ʻo Mariana a ma laila mākou i ʻike ai i nā helu helu helu like и , ʻo ia ka mea i manaʻo ʻia.
E luʻu hou kākou, i kēia manawa wale nō, e hoʻopiha ʻia ko kākou kaʻa kai hohonu i nā ʻenehana ʻē aʻe, ʻo ia hoʻi he waihona. Nā NumPy.
Code no ka iho ʻana i ka gradient (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
Koefficient waiwai и hiki ole ke hoololiia.
E nānā i ke ʻano o ka hoʻololi ʻana o ka hewa i ka iho ʻana o ka gradient, ʻo ia hoʻi, pehea ka hoʻololi ʻana o ka huina o nā haʻihaʻi huinaha me kēlā me kēia ʻanuʻu.
Code no ka hoʻolālā ʻana i nā hōʻuluʻulu o nā haʻihaʻi huinaha
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()
Kiʻikuhi No. 4 “Ka huina o nā haʻihaʻi huinahā like i ka wā e iho ana i ka gradient”
Ma ka pakuhi ʻike mākou i kēlā me kēia ʻanuʻu e emi ana ka hewa, a ma hope o kekahi mau helu o ka hoʻomaʻamaʻa ʻike mākou i kahi laina kokoke.
ʻO ka hope, e koho i ka ʻokoʻa o ka manawa hoʻokō code:
Code no ka hoʻoholo ʻana i ka manawa helu gradient iho
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)
Malia paha ke hana hewa nei mākou, akā he hana maʻalahi "home-kākau" ʻaʻole hoʻohana i ka waihona. Nā NumPy ʻoi aku ka maikaʻi o ka manawa helu o kahi hana me ka hoʻohana ʻana i ka waihona Nā NumPy.
ʻAʻole naʻe mākou e kū mālie, akā ke neʻe nei mākou i ke aʻo ʻana i kahi ala ʻē aʻe e hoʻoponopono ai i ka hoʻohālikelike hoʻihoʻi laina maʻalahi. E hālāwai me mākou!
Ka iho gradient Stochastic
I mea e hoʻomaopopo koke ai i ke kumumanaʻo o ka hana o ka iho gradient stochastic, ʻoi aku ka maikaʻi o ka hoʻoholo ʻana i kona ʻokoʻa mai ka iho gradient maʻamau. Mākou, ma ka hihia o ka gradient iho, ma ka hoohalike o na derivatives o и ua hoʻohana i nā huina o nā waiwai o nā hiʻohiʻona a me nā pane ʻoiaʻiʻo i loaʻa i ka hāpana (ʻo ia hoʻi, nā huina o nā mea a pau и ). I ka stochastic gradient descent, ʻaʻole mākou e hoʻohana i nā waiwai āpau i loaʻa i ka hāpana, akā, koho pseudo-randomly i ka mea i kapa ʻia ʻo sample index a hoʻohana i kāna mau waiwai.
No ka laʻana, inā hoʻoholo ʻia ka helu helu 3 (ʻekolu), a laila lawe mākou i nā waiwai и , a laila hoʻololi mākou i nā waiwai i nā hoʻohālikelike derivative a hoʻoholo i nā hoʻonohonoho hou. A laila, i ka hoʻoholo ʻana i nā coordinate, hoʻoholo hou mākou i ka index index, hoʻololi i nā waiwai e pili ana i ka index i loko o nā hoʻohālikelike ʻokoʻa ʻāpana, a hoʻoholo i nā hoʻonohonoho i kahi ala hou. и etc. a hiki i ka ʻōmaʻomaʻo o ka hui ʻana. I ka nānā mua ʻana, ʻaʻole paha e hiki ke hana i kēia, akā hana. He ʻoiaʻiʻo he mea pono e hoʻomaopopo ʻaʻole e emi ka hewa i kēlā me kēia pae, akā aia nō ke ʻano.
He aha nā mea maikaʻi o ka iho gradient stochastic ma mua o ka mea maʻamau? Inā nui loa kā mākou hāpana nui a ana ʻia i nā ʻumi kaukani o nā waiwai, a laila ʻoi aku ka maʻalahi o ka hana ʻana, e ʻōlelo, he kaukani maʻamau o lākou, ma mua o ka hāpana holoʻokoʻa. ʻO kēia kahi e pāʻani ai ka iho gradient stochastic. I kā mākou hihia, ʻoiaʻiʻo, ʻaʻole mākou e ʻike i kahi ʻokoʻa.
E nānā kākou i ke code.
Code no ka iho gradient stochastic
# определим функцию стох.град.шага
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])
Ke nānā pono nei mākou i nā coefficient a hopu iā mākou iho e nīnau ana i ka nīnau "Pehea e hiki ai kēia?" Loaʻa iā mākou nā waiwai coefficient ʻē aʻe и . Ua loaʻa paha i ka iho gradient stochastic nā ʻāpana kūpono loa no ka hoohalike? ʻAʻole naʻe. Ua lawa ka nānā ʻana i ka huina o nā deviations squared a ʻike me nā waiwai hou o nā coefficients, ʻoi aku ka nui o ka hewa. ʻAʻole mākou wikiwiki i ka manaʻolana. E kūkulu kākou i pakuhi o ka hoʻololi hewa.
Code no ka hoʻolālā ʻana i ka hōʻuluʻulu ʻana o nā haʻihaʻi ʻaoʻao i ka iho gradient stochastic
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()
Kiʻikuhi No. 5 “Ka huina o nā haʻihaʻi huinaha i ka wā e iho ana i ka gradient stochastic”
Ke nānā nei i ka papahana, hāʻule nā mea āpau a i kēia manawa e hoʻoponopono mākou i nā mea āpau.
No laila he aha ka mea i hana? Ua hiki mai keia. Ke koho wale mākou i ka mahina, a laila no ka mahina i koho ʻia e ʻimi ai kā mākou algorithm e hōʻemi i ka hewa i ka helu ʻana i ka loaʻa kālā. A laila koho mākou i kahi mahina ʻē aʻe a hana hou i ka helu ʻana, akā hoʻemi mākou i ka hewa no ka mahina ʻelua i koho ʻia. I kēia manawa, e hoʻomanaʻo ʻoe ua haʻalele nui nā mahina ʻelua mai ka laina o ka hoʻohālikelike hoʻihoʻi laina maʻalahi. 'O ia ho'i, ke koho 'ia kekahi o kēia mau mahina 'elua, ma ka ho'emi 'ana i ka hewa o kēlā me kēia, ho'onui nui kā mākou algorithm i ka hewa no ka hāpana holo'oko'a. No laila he aha ka hana? He mea maʻalahi ka pane: pono ʻoe e hōʻemi i ka pae iho. Ma hope o nā mea a pau, ma ka hōʻemi ʻana i ka pae iho, e pau ka hewa i ka "lele" i luna a i lalo. A i ʻole, ʻaʻole e pau ka hewa "lele", akā ʻaʻole ia e hana wikiwiki :) E nānā kāua.
Code e holo SGD me nā mea liʻiliʻi liʻiliʻi
# запустим функцию, уменьшив шаг в 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()
Kiʻikuhi No. 6 “Ka huina o nā haʻihaʻi huinaha i ka wā o ka iho gradient stochastic (80 tausani kapuaʻi)”
Ua hoʻomaikaʻi nā coefficient, akā ʻaʻole naʻe i kūpono. Hypothetically, hiki ke hoʻoponopono ʻia kēia ʻano. Koho mākou, no ka laʻana, i nā helu 1000 hope loa i nā waiwai o nā coefficient i hana ʻia ai ka hapa liʻiliʻi. ʻOiaʻiʻo, no kēia, pono mākou e kākau i nā waiwai o nā coefficient iā lākou iho. ʻAʻole mākou e hana i kēia, akā e hoʻolohe pono i ka papahana. ʻIke ʻia ke ʻano maʻalahi a me he mea lā e emi like ana ka hewa. ʻAʻole ʻoiaʻiʻo kēia. E nānā kākou i nā 1000 mua a hoʻohālikelike iā lākou me ka hope.
Code no ka pakuhi SGD (nā ʻanuʻu mua 1000)
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()
Kiʻikuhi No. 7 “Ka huina o ka huinahā like SGD (1000 kapuaʻi mua)”
Kiʻikuhi No. 8 “Ka huina o ka huina huinahalike SGD (nā ʻanuʻu 1000 hope loa)”
I ka hoʻomaka ʻana o ka iho ʻana, ʻike mākou i ka emi ʻana o ka hewa. I nā ʻōlelo hope loa, ʻike mākou e hele a puni ka hewa i ka waiwai o 1,475 a i kekahi manawa e like me kēia waiwai maikaʻi loa, akā ke piʻi mau nei ia ... Ke haʻi hou nei au, hiki iā ʻoe ke kākau i nā waiwai coefficients и , a laila koho i nā mea i liʻiliʻi ka hewa. Eia naʻe, ua loaʻa iā mākou kahi pilikia koʻikoʻi: pono mākou e lawe i 80 tausani mau ʻanuʻu (e ʻike i ke code) e hoʻokokoke i nā waiwai i ka maikaʻi. A ua kūʻē kēia i ka manaʻo o ka mālama ʻana i ka manawa helu me ka stochastic gradient descent e pili ana i ka gradient descent. He aha ka mea hiki ke hoʻoponopono a hoʻomaikaʻi? ʻAʻole paʻakikī ke hoʻomaopopo ʻana i ka hoʻomaʻamaʻa mua ʻana mākou me ka hilinaʻi e iho i lalo a no laila, pono mākou e waiho i kahi ʻanuʻu nui i nā ʻōkuhi mua a hoʻemi i ka pae i ko mākou neʻe ʻana i mua. ʻAʻole mākou e hana i kēia ma kēia ʻatikala - ua lōʻihi loa ia. Hiki i ka poʻe makemake ke noʻonoʻo iā lākou iho pehea e hana ai i kēia, ʻaʻole paʻakikī :)
I kēia manawa, e hana kākou i ka stochastic gradient descent me ka hoʻohana ʻana i ka waihona Nā NumPy (a ʻaʻole kākou e hina i nā pōhaku a kākou i ʻike mua ai)
Code no ka Descent Gradient Stochastic (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
Ua aneane like nā waiwai me ka iho ʻana me ka hoʻohana ʻole Nā NumPy. Eia naʻe, kūpono kēia.
E ʻike kākou i ka lōʻihi o ka iho ʻana o ka stochastic gradient.
Code no ka hoʻoholo ʻana i ka manawa helu SGD (80 tausani kapuaʻi)
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 kaʻoi aku i loko o ka ululāʻau,ʻo ka pōʻeleʻele o nā ao: eia hou,ʻo ka hua'ōlelo "kaukau iho" hōʻike i ka hopena maikaʻi loa. ʻO kēia mau mea a pau e hōʻike ana he pono nā ala maʻalahi e hoʻohana ai i ka waihona Nā NumPy, ka mea e wikiwiki ai i na hana helu. Ma kēia ʻatikala ʻaʻole mākou e aʻo e pili ana iā lākou. Aia kekahi mea e noʻonoʻo ai i kou manawa manawaleʻa :)
Kūkākūkā mākou
Ma mua o ka hōʻuluʻulu ʻana, makemake wau e pane i kahi nīnau i ala mai paha mai kā mākou makamaka heluhelu. No ke aha, ʻoiaʻiʻo, ʻo ia ʻano "hoʻomāinoino" me nā iho, no ke aha e pono ai mākou e hele i luna a iho i ka mauna (ka hapa nui i lalo) i mea e ʻike ai i ka ʻāina haʻahaʻa waiwai, inā aia i loko o ko mākou mau lima kahi mea ikaika a maʻalahi, i ka ʻano o kahi hoʻonā analytical, e hoʻouna koke iā mākou i kahi kūpono?
Aia ka pane i kēia nīnau ma ka ʻili. I kēia manawa ua nānā mākou i kahi hiʻohiʻona maʻalahi loa, aia ka pane ʻoiaʻiʻo pili i kekahi hōʻailona . ʻAʻole ʻoe e ʻike pinepine i kēia i ke ola, no laila e noʻonoʻo mākou he 2, 30, 50 a ʻoi aku paha nā hōʻailona. E hoʻohui kākou i kēia mau tausani, a i ʻole ʻumi tausani o nā waiwai no kēlā me kēia ʻano. I kēia hihia, ʻaʻole hiki i ka hopena analytical ke kū i ka hoʻāʻo a hāʻule. I ka huli ʻana, ʻo ka iho gradient a me kāna mau ʻokoʻa e hoʻokokoke mai iā mākou i ka pahuhopu - ka liʻiliʻi o ka hana. Mai hopohopo no ka wikiwiki - e nānā paha mākou i nā ala e hiki ai iā mākou ke hoʻonohonoho a hoʻoponopono i ka lōʻihi o ka pae (ʻo ia hoʻi, ka wikiwiki).
A i kēia manawa ka hōʻuluʻulu pōkole maoli.
ʻO ka mea mua, manaʻo wau e kōkua nā mea i hōʻike ʻia ma ka ʻatikala e hoʻomaka i nā "ʻepekema data" i ka hoʻomaopopo ʻana i ka hoʻoponopono ʻana i nā hoʻohālikelike laina maʻalahi (a ʻaʻole wale).
ʻO ka lua, ua nānā mākou i kekahi mau ala e hoʻoponopono ai i ka hoohalike. I kēia manawa, ma muli o ke kūlana, hiki iā mākou ke koho i ka mea kūpono loa e hoʻoponopono i ka pilikia.
ʻO ke kolu, ua ʻike mākou i ka mana o nā hoʻonohonoho ʻē aʻe, ʻo ia hoʻi ka lōʻihi o ka gradient descent step long. ʻAʻole hiki ke mālama ʻia kēia ʻāpana. E like me ka mea i hōʻike ʻia ma luna, i mea e hōʻemi ai i ke kumukūʻai o ka helu ʻana, pono e hoʻololi ʻia ka lōʻihi o ka wāwae i ka wā e iho ai.
ʻO ka hā, i kā mākou hihia, ua hōʻike nā hana "home-kākau" i nā hopena manawa maikaʻi loa no ka helu ʻana. ʻAʻole paha kēia ma muli o ka hoʻohana ʻoihana ʻoi loa o nā hiki o ka waihona Nā NumPy. Akā, inā paha, ʻo ka hopena hope e hōʻike iā ia iho. Ma kekahiʻaoʻao, i kekahi manawa pono e nīnau i nā manaʻo i hoʻokumuʻia, a ma kekahiʻaoʻao,ʻaʻole pono e hoʻopili i nā mea a pau - akā, i kekahi manawa,ʻoi aku ka maikaʻi o ke ala maʻalahi o ka hoʻoponoponoʻana i kahi pilikia. A no ka mea, ʻo kā mākou pahuhopu ke kālailai ʻana i ʻekolu ala e hoʻoholo ai i ka hoʻohālikelike hoʻihoʻi laina maʻalahi, ua lawa ka hoʻohana ʻana i nā hana "kākau ponoʻī" iā mākou.
Palapala (a i ʻole kekahi mea like)
1. Hoʻihoʻi laina
2. Keʻano huinahā liʻiliʻi loa
3. Puka
4. Gradient
5. Ka iho gradient
6. Hale waihona puke NumPy