Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ka matapakihia e te tuhinga nga huarahi maha ki te whakatau i te wharite pangarau o te raina whakaheke (taurua) ngawari.

Ko nga tikanga katoa hei whakaoti i te wharite e korerohia ana i konei ka ahu mai i te tikanga tapawha iti rawa. Me tohu nga tikanga penei:

  • Te otinga tātari
  • Whakaheke Rōnaki
  • Hekenga rōnaki Stochastic

Mo ia tikanga whakaoti i te wharite o te raina torotika, ka whakaratohia e te tuhinga nga momo mahi, ka wehewehea te nuinga ki nga mea kua tuhia me te kore e whakamahi i te whare pukapuka. numpy me te hunga e whakamahi ana mo nga tatauranga numpy. E whakaponohia ana he mohio te whakamahi numpy ka whakaitihia nga utu rorohiko.

Ko nga waehere katoa i hoatu i roto i te tuhinga ka tuhia ki te reo te python 2.7 te whakamahi Jupyter Notebook. Ka whakairihia te waehere puna me te konae me nga tauira raraunga Github

Ko te tuhinga he mea nui ake mo te hunga timata me te hunga kua timata kua timata ki te mohio ki te ako mo te waahanga tino whanui i roto i te matauranga mohio - ako miihini.

Hei whakaatu i te rauemi, ka whakamahia e matou he tauira tino ngawari.

Tauira tikanga

E rima nga uara e tohu ana i te ti'aturi Y i X (Ripanga Nama 1):

Ripanga Nama 1 “Tautuhinga Tauira”

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ka whakaaro tatou ko nga uara Te whakaoti i te whārite o te whakahekenga rārangi māmā ko te marama o te tau, a Te whakaoti i te whārite o te whakahekenga rārangi māmā — moni i tenei marama. I etahi atu kupu, ka whakawhirinaki nga moni ki te marama o te tau, a Te whakaoti i te whārite o te whakahekenga rārangi māmā - ko te tohu anake e whakawhirinaki ai nga moni whiwhi.

Ko te tauira he pera, e rua mai i te tirohanga o te ti'aturi herenga o nga moni whiwhi i runga i te marama o te tau, mai i te tirohanga o te maha o nga uara - he iti noa o raatau. Heoi ano, ma taua whakangawaritanga ka taea, e kii ana ratou, ki te whakamarama, ehara i te mea ngawari i nga wa katoa, nga mea e whakauruhia ana e te hunga timata. Na te ngawari o nga nama ka taea e te hunga e hiahia ana ki te whakaoti i te tauira ki runga pepa kaore he utu nui mo te mahi.

Me whakaaro tatou ko te ti'aturi e homai ana i roto i te tauira ka taea te tata pai e te wharite pangarau o te rarangi whakahekenga ngawari (takirua) o te puka:

Te whakaoti i te whārite o te whakahekenga rārangi māmā

te wahi Te whakaoti i te whārite o te whakahekenga rārangi māmā ko te marama i riro mai ai nga hua, Te whakaoti i te whārite o te whakahekenga rārangi māmā - moni e rite ana ki te marama, Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā ko nga whakarea whakahekenga o te raina whakatau.

Kia mahara ko te whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā ka kiia ko te titahatanga, te rōnaki ranei o te raina i whakatauhia; e tohu ana i te nui o te Te whakaoti i te whārite o te whakahekenga rārangi māmā ina huri Te whakaoti i te whārite o te whakahekenga rārangi māmā.

Ko te tikanga, ko ta maatau mahi i roto i te tauira ko te kowhiri i nga whakarea penei i roto i te wharite Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā, ko nga rereke o a tatou uara moni tatau i te marama mai i nga whakautu pono, i.e. he iti noa nga uara e whakaatuhia ana i te tauira.

Tikanga tapawha iti rawa

E ai ki nga tikanga tapawha iti rawa, me tatau te ine ma te tapawha. Ma tenei tikanga ka taea e koe te karo i te whakakore tahi i nga rereketanga mena he rereke nga tohu. Hei tauira, mena i roto i tetahi keehi, ko te rereke +5 (me te rima), me tetahi atu -5 (haunga te rima), katahi ka whakakorehia e te tapeke o nga wehenga tetahi ki tetahi ka nui ki te 0 (kore). E kore e taea te tapawha i te inenga, engari me whakamahi i te taonga o te waahanga, katahi ka pai nga rereke katoa ka whakaemi. E kore matou e noho korero mo tenei waahanga, engari he tohu noa mo te waatea o nga tatauranga, he tikanga ki te tapawha i te rereke.

Koinei te ahua o te tauira ka whakatauhia e matou te iti rawa o nga wehenga tapawha (he hapa):

Te whakaoti i te whārite o te whakahekenga rārangi māmā

te wahi Te whakaoti i te whārite o te whakahekenga rārangi māmā he mahi mo te tata o nga whakautu pono (ara, ko nga moni i tatauhia e matou),

Te whakaoti i te whārite o te whakahekenga rārangi māmā Ko nga whakautu pono (he moni whiwhi i roto i te tauira),

Te whakaoti i te whārite o te whakahekenga rārangi māmā ko te taupū tauira (tau o te marama e whakatauhia ai te ine)

Me whakawehewehe i te mahi, ka tautuhi i nga wharite wehewehe wehewehenga, ka noho reri ki te haere ki te otinga tātari. Engari i te tuatahi, me haere tatou he haerenga poto mo te rereketanga me te mahara ki te tikanga ahuahanga o te pärönaki.

Te wehewehenga

Ko te rereketanga ko te mahi kimi i te pärönaki o te taumahi.

He aha te pärönaki e whakamahia ana? Ko te pärönaki o tëtahi taumahi e tohu ana i te tere o te huringa o te mahi me te whakaatu mai i töna ahunga. Mēnā he tōrunga te pārōnaki i tētahi wāhi, ka piki ake te mahi; ki te kore, ka heke te mahi. A, ka nui ake te uara o te pärönaki tino, ka piki ake te tere o te huringa o nga uara mahi, me te pikinga o te kauwhata mahi.

Hei tauira, i raro i nga tikanga o te punaha taunga Cartesian, he rite te uara o te pärönaki i te ira M(0,0) ki te + 25 ko te tikanga i tetahi waahi, ka nekehia te uara Te whakaoti i te whārite o te whakahekenga rārangi māmā ki te taha matau e te waeine tikanga, uara Te whakaoti i te whārite o te whakahekenga rārangi māmā piki ake e 25 waeine tikanga. I runga i te kauwhata he ahua tino piki te pikinga o nga uara Te whakaoti i te whārite o te whakahekenga rārangi māmā mai i tetahi waahi.

Ko tetahi atu tauira. He rite te uara pärönaki -0,1 te tikanga ka nukuhia Te whakaoti i te whārite o te whakahekenga rārangi māmā ia kotahi waeine tikanga, uara Te whakaoti i te whārite o te whakahekenga rārangi māmā ka heke ma te 0,1 noa te waeine tikanga. I te wa ano, i runga i te kauwhata o te mahi, ka kite tatou i te hekenga whakararo. Ma te tuhi i te whakataurite ki te maunga, me te mea kei te ata heke iho tatou i te pikitanga mai i te maunga, kaore i rite ki te tauira o mua, me piki ki nga tihi tino pari :)

Na, i muri i te wehewehe i te mahi Te whakaoti i te whārite o te whakahekenga rārangi māmā na te kino Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā, ka tautuhia e matou te raupapa tuatahi o nga wharite wehewehe wehewehe. I muri i te whakatau i nga wharite, ka whiwhi tatou i tetahi punaha o nga wharite e rua, ma te whakaoti ka taea e tatou te kowhiri i nga uara o nga taurite. Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā, mo te mea ka huri nga uara o nga päröpü e rite ana ki nga waahi kua tohua ma te iti rawa, a, i te keehi o te otinga tātari karekau e rereke. I etahi atu kupu, ko te mahi hapa i nga taunga kua kitea ka tae ki te iti, na te mea ko nga uara o nga waahanga waahanga i enei waahi ka rite ki te kore.

No reira, i runga i nga ture o te rereketanga, ko te wharite päröpü wähanga o te raupapa tuatahi e pa ana ki te whakarea. Te whakaoti i te whārite o te whakahekenga rārangi māmā ka tango i te ahua:

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ota tuatahi te whārite pārōnaki wāhanga e pā ana ki Te whakaoti i te whārite o te whakahekenga rārangi māmā ka tango i te ahua:

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ko te mutunga mai, ka whiwhi matou i tetahi punaha wharite he otinga tātari ngawari noa:

timata{equation*}
timata{take}
na + bsumlimits_{i=1}^nx_i — sumlimits_{i=1}^ny_i = 0

whakarunga_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i — whakarunga_{i=1}^ny_i) = 0
mutunga{take}
mutunga{write*}

I mua i te whakaoti i te whārite, me utaina, tirohia kei te tika te uta, ka whakahōputuhia te raraunga.

Te uta me te whakahōputu raraunga

Me tohu na te mea mo te otinga tātari, a muri ake mo te rerenga rōnaki me te stochastic, ka whakamahia e matou te waehere i roto i nga rereketanga e rua: te whakamahi i te whare pukapuka. numpy me te kore e whakamahi, katahi ka hiahia kia tika te whakahōputu raraunga (tirohia te waehere).

Te uta raraunga me te waehere tukatuka

# импортируем все нужные нам библиотеки
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 '********************************************'

Whakaaturanga

Inaianei, i muri i to maatau, tuatahi, utaina nga raraunga, tuarua, tirohia te tika o te uta me te whakaoti i nga raraunga, ka mahia e matou te tirohanga tuatahi. Ko te tikanga e whakamahia ana mo tenei wahi takirua whare pukapuka Kaimoana. I roto i ta maatau tauira, na te iti o nga nama, kaore he take ki te whakamahi i te whare pukapuka Kaimoana. Ka whakamahia e matou te whare pukapuka matplotlib a titiro noa ki te marara.

Waehere marara

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()

Tūtohi Nama 1 "Te ti'aturi o te moni whiwhi i te marama o te tau"

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Te otinga tātari

Kia whakamahia nga taputapu tino noa i roto nānati me te whakaoti i te pūnaha whārite:

timata{equation*}
timata{take}
na + bsumlimits_{i=1}^nx_i — sumlimits_{i=1}^ny_i = 0

whakarunga_{i=1}^nx_i(a +bsumlimits_{i=1}^nx_i — whakarunga_{i=1}^ny_i) = 0
mutunga{take}
mutunga{write*}

E ai ki te ture a Cramer ka kitea e tatou te taupatupatu whanui, me nga whakatau na Te whakaoti i te whārite o te whakahekenga rārangi māmā a e Te whakaoti i te whārite o te whakahekenga rārangi māmā, ka mutu, ka wehewehea te whakatau ma te Te whakaoti i te whārite o te whakahekenga rārangi māmā ki te tauwhāinga whānui - kimihia te whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā, pera ano ka kitea e tatou te whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā.

Waehere otinga tātari

# определим функцию для расчета коэффициентов 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)

Anei ta matou i whiwhi:

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Na, kua kitea nga uara o nga whakarea, kua whakatauhia te tapeke o nga wehenga tapawha. Me tuhi he rarangi torotika ki runga i te histogram marara i runga i nga whakarea kua kitea.

Waehere raina whakamuri

# определим функцию для формирования массива рассчетных значений выручки
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()

Tūtohi Nama 2 “Nga whakautu tika me te tatau”

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ka taea e koe te titiro ki te kauwhata ine mo ia marama. I roto i a maatau, kaore matou e whiwhi i tetahi uara mahi nui mai i tera, engari ka makona to maatau hiahia mo te pai o te wharite regression linear ngawari e whakaatu ana i te whakawhirinaki o nga moni whiwhi ki te marama o te tau.

Waehere tūtohi wehe

# определим функцию для формирования массива отклонений в процентах
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()

Tūtohi Nama 3 “Wehewehenga, %”

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ehara i te mea tino tika, engari kua oti ta maatau mahi.

Me tuhi he mahi, hei whakatau i nga whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā ka whakamahi i te whare pukapuka numpy, he tika ake, ka tuhia e matou nga mahi e rua: ko tetahi ma te whakamahi i te matrix pseudoinverse (kaore i te taunakitia i roto i nga mahi, i te mea he uaua te mahi, he koretake te mahi), ko tetahi e whakamahi ana i te wharite matrix.

Waehere Otinga 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

Me whakatairitehia te wa i pau ki te whakatau i nga whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā, i runga ano i nga tikanga e 3 kua whakaatuhia.

Waehere mo te tatau i te taima tatau

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)

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ma te iti o nga raraunga, ka puta mai he mahi "tuhi-whaiaro", ka kitea nga taurangi ma te whakamahi i te tikanga a Cramer.

Inaianei ka taea e koe te neke ki etahi atu huarahi ki te rapu whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā.

Whakaheke Rōnaki

Tuatahi, me tautuhi he aha te rōnaki. Me korero noa, ko te rōnaki he wahanga e tohu ana i te ahunga o te tipu morahi o tetahi mahi. Ma te whakataurite ki te piki maunga, kei te anga te rōnaki kei reira te tino piki ki te tihi o te maunga. Ko te whakawhanake i te tauira me te maunga, ka maumahara tatou me te tino heke kia tere te eke ki te whenua mania, ara, te iti - te waahi kaore e piki, e heke iho ranei te mahi. I tenei wa ka rite te pärönaki ki te kore. No reira, kaore e hiahiatia he rōnaki, engari he antigradient. Hei kimi i te antigradient me whakareatia te rōnaki ki te -1 (haunga kotahi).

Kia aro tatou ki te mea he maha nga iti o te mahi, a, ka heke ki tetahi o aua mea ma te whakamahi i te algorithm e whakaarohia ana i raro nei, kare e taea e tatou te kimi i tetahi atu iti, he iti ake pea i tera i kitea. Kia whakangawari tatou, ehara tenei i te riri mo tatou! I roto i to maatau take kei te mahi matou ki te iti rawa, mai i ta maatau mahi Te whakaoti i te whārite o te whakahekenga rārangi māmā kei te kauwhata he parapara auau. A, me tino mohio tatou katoa mai i ta tatou akoranga pangarau kura, kotahi noa te iti o te parapara.

Whai muri i te kitenga he aha te take i hiahiatia ai he rōnaki, ā, ko te rōnaki he wāhanga, ara, he vector me nga taunga kua hoatu, he rite tonu nga whakarea. Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā ka taea e tatou te whakatinana i te whakaheke rōnaki.

I mua i te tiimata, ka whakaaro ahau ki te panui i etahi rerenga korero mo te hekenga algorithm:

  • Ka whakatauhia e matou i roto i te tikanga pseudo-tupurangi nga taunga o nga taurangi Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā. I roto i ta maatau tauira, ka whakatauhia e matou nga whakarea tata ki te kore. He mahi noa tenei, engari tera pea kei ia keehi tana ake mahi.
  • Mai i te ruruku Te whakaoti i te whārite o te whakahekenga rārangi māmā tango i te uara o te ota tuatahi pärönaki wähanga i te ira Te whakaoti i te whārite o te whakahekenga rārangi māmā. Na, ki te pai te whakaputanga, ka piki ake te mahi. No reira, ma te tango i te uara o te pärönaki, ka nuku ki te taha o te tipuranga, ara, ki te hekenga. Mēnā he tōraro te pārōnaki, ka heke te mahi i tēnei wāhi, ā, mā te tango i te wāriu o te pārōnaki ka neke mātou ki te ahunga o te hekenga.
  • Ka mahia e matou he mahi pera me te ruruku Te whakaoti i te whārite o te whakahekenga rārangi māmā: tango i te uara o te päröpü wähanga i te ira Te whakaoti i te whārite o te whakahekenga rārangi māmā.
  • Kia kore ai e peke i runga i te iti ka rere ki te waahi hohonu, he mea tika ki te whakarite i te rahi o te taahiraa ki te ahunga o te heke. I te nuinga o te waa, ka taea e koe te tuhi i tetahi tuhinga katoa mo te whakatakoto tika i te hikoi me te whakarereke i te waa o te hekenga kia whakaitihia nga utu kaute. Inaianei he mahi rereke kei mua i a maatau, ka whakatauhia te rahi o te hikoi ma te whakamahi i te tikanga putaiao o te "poke" ranei, e kii ana ratou i roto i nga korero noa, i runga i nga tikanga.
  • Kia tae mai tatou i nga taunga kua homai Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā tangohia nga uara o nga pärönaki, ka whiwhi taunga hou Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā. Ka mahia e matou te taahiraa e whai ake nei (tangohanga), mai i nga taunga tatau. Na ka timata ano te huringa, kia tutuki ra ano te whakakotahitanga e hiahiatia ana.

Katoa! Inaianei kua reri matou ki te haere ki te rapu i te awaawa hohonu o te awa o Mariana. Kia timata tatou.

Waehere mo te whakaheke rōnaki

# напишем функцию градиентного спуска без использования библиотеки 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

Te whakaoti i te whārite o te whakahekenga rārangi māmā

I ruku matou ki raro rawa o te awa o Mariana ka kitea i reira nga uara whakarea rite katoa Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā, koinei tonu te mea i tumanakohia.

Me ruku ano tatou, hei tenei wa, ka whakakiia to tatou waka moana hohonu ki etahi atu hangarau, ara he whare pukapuka. numpy.

Waehere mo te whakaheke rōnaki (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

Te whakaoti i te whārite o te whakahekenga rārangi māmā
Nga uara whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā kore e taea te huri.

Me titiro ki te huringa o te hapa i te hekenga rōnaki, ara, i pehea te huri o te tapeke o nga wehenga tapawha ki ia kaupae.

Waehere mo te whakatakoto i nga tapeketanga tapawha

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()

Kauwhata Nama 4 “Tapeke o nga wehenga tapawha i te wa e heke ana te rōnaki”

Te whakaoti i te whārite o te whakahekenga rārangi māmā

I runga i te kauwhata ka kite tatou i ia hikoinga ka heke te hapa, a, i muri i te maha o nga whitiwhitinga ka kite tatou i tetahi raina tata whakapae.

Hei whakamutunga, me whakatauhia te rereketanga o te wa mahi waehere:

Waehere hei whakatau i te wa tataitanga hekenga rōnaki

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)

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Akene kei te he taatau, engari ano he mahi "tuhi-whare" ngawari kaore e whakamahi i te whare pukapuka. numpy he pai ake i te wa tatau o te mahi ma te whakamahi i te whare pukapuka numpy.

Engari kaore matou i te tu tonu, engari kei te anga whakamua ki te ako i tetahi atu huarahi whakahihiri hei whakaoti i te wharite whakaheke ahorangi ngawari. Tutaki!

Hekenga rōnaki Stochastic

Kia mohio wawe ai koe ki te maataapono o te mahi o te hekenga rōnaki stochastic, he pai ake te whakatau i ona rereketanga mai i te hekenga rōnaki noa. Ko tatou, i roto i te take o te hekenga rōnaki, i roto i nga whārite o ngā pārōnaki o Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā i whakamahia nga tapeke o nga uara o nga ahuatanga katoa me nga whakautu pono e waatea ana i roto i te tauira (ara, nga moni katoa Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā). I roto i te hekenga rōnaki stochastic, e kore matou e whakamahi i nga uara katoa kei roto i te tauira, engari, pseudo-tupu noa te kowhiri i te taurangi tauira e kiia nei ka whakamahi i ona uara.

Hei tauira, ki te whakatauhia te taurangi ko te nama 3 (toru), katahi ka tangohia nga uara Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā, ka whakakapihia nga uara ki roto i nga wharite pärönaki me te whakatau i nga taunga hou. Na, ka whakatau i nga taunga, ka whakatauhia ano e matou te taurangi tauira, ka whakakapi i nga uara e rite ana ki te taurangi ki roto i nga wharite rereke, ka whakatau i nga taunga ma te huarahi hou. Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā etc. kia huri kakariki te whakakotahitanga. I te tuatahi o te titiro, kaore pea tenei e mahi, engari ka mahi. He pono e tika ana kia mohio ko te hapa kaore e heke i nga waahanga katoa, engari he pono te ahua.

He aha nga painga o te hekenga rōnaki stochastic i te hekenga tikanga? Mena he nui rawa te rahi o to tatou tauira me te ine i roto i nga tekau mano o nga uara, he maamaa ake te mahi, penei, he mano matapōkere o ratou, kaua ki te tauira katoa. I konei ka uru mai te hekenga rōnaki stochastic. I roto i to maatau, ko te tikanga, kaore matou e kite i te rereketanga.

Kia titiro tatou ki te waehere.

Waehere mo te heke rōnaki 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])

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ka ata titiro tatou ki nga whakarea ka mau tatou i te patai "Me pehea tenei?" I whiwhi tatou i etahi atu uara whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā. Kua kitea pea e te hekenga rōnaki stochastic etahi tawhā tino pai mo te whārite? Kia aroha mai kaore. He nui noa ki te tiro i te tapeke o nga wehenga tapawha me te kite na nga uara hou o nga whakarea, ka nui ake te hapa. Kaore matou i te tere ki te pouri. Me hanga kauwhata mo te huringa hapa.

Waehere mo te whakatakoto i te tapeke o nga wehenga tapawha i roto i te hekenga rōnaki 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()

Kauwhata Nama 5 “Tapeke o nga wehenga tapawha i te hekenga rōnaki stochastic”

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ma te titiro ki te raarangi, ka taka nga mea katoa, inaianei ka whakatikahia e matou nga mea katoa.

Na he aha te mea i tupu? Ko nga mea e whai ake nei i tupu. Ka kowhiri matapōkeretia he marama, na mo te marama kua tohua e whai ana ta maatau algorithm ki te whakaiti i te hapa o te tatau moni. Na ka tohua e matou tetahi atu marama ka whakahoki ano i te tatauranga, engari ka whakaitihia te hapa mo te marama tuarua kua tohua. Inaianei kia mahara ko nga marama tuatahi e rua ka rerekee mai i te rarangi o te wharite whakahekenga ahorangi ngawari. Ko te tikanga ka kowhiria tetahi o enei marama e rua, ma te whakaiti i te hapa o ia o ratou, ka tino whakanuia e ta maatau algorithm te hapa mo te tauira katoa. Na me aha? He ngawari te whakautu: me whakaiti koe i te hikoi heke. I muri i nga mea katoa, ma te whakaiti i te taahiraa whakaheke, ka mutu ano te hapa "peke" ki runga, ki raro. Engari, ko te hapa "peke" e kore e mutu, engari e kore e tere tere :) Kia tirohia.

Waehere hei whakahaere i te SGD me te iti ake o nga pikinga

# запустим функцию, уменьшив шаг в 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()

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Kauwhata Nama 6 “Tapeke o nga wehenga tapawha i te hekenga rōnaki stochastic (80 mano kaupae)”

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Kua pai ake nga whakarea, engari kaore i te pai. Ma te whakapae, ka taea te whakatika i tenei huarahi. Ka tohua e matou, hei tauira, i roto i nga huringa 1000 whakamutunga nga uara o nga whakarea i mahia ai te hapa iti. He pono, mo tenei me tuhi ano tatou i nga uara o nga whakarea. E kore matou e mahi i tenei, engari ka aro atu ki te raarangi. He maeneene te ahua me te ahua o te heke o te hapa. Inaa ehara tenei i te pono. Ka titiro tatou ki nga whitiwhitinga tuatahi 1000 ka whakatauritea ki te whakamutunga.

Waehere mo te tūtohi SGD (1000 kaupae tuatahi)

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()

Kauwhata Nama 7 “Tapeke o nga wehenga tapawha SGD (1000 kaupae tuatahi)”

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Kauwhata Nama 8 “Tapeke o nga wehenga tapawha SGD (1000 kaupae whakamutunga)”

Te whakaoti i te whārite o te whakahekenga rārangi māmā

I te timatanga o te hekenga, ka kite matou i te ahua o te ahua me te tino heke o te he. I nga waahanga whakamutunga, ka kite tatou kei te huri haere te hapa i te uara o te 1,475 a i etahi wa ka rite ki tenei uara tino pai, engari ka piki tonu ... Ka whakahoki ano ahau, ka taea e koe te tuhi i nga uara o te whakarea Te whakaoti i te whārite o te whakahekenga rārangi māmā и Te whakaoti i te whārite o te whakahekenga rārangi māmā, ka kowhiri i nga mea he iti te hapa. Heoi, he raru nui ake taatau: me 80 mano nga hikoi (tirohia te waehere) kia tata ai nga uara ki te tino pai. A kua whakahē kē tēnei i te whakaaro o te penapena wā tātaitanga me te hekenga rōnaki stochastic e pā ana ki te hekenga rōnaki. He aha te mea ka taea te whakatika me te whakapai ake? Ehara i te mea uaua ki te kite i nga waahanga tuatahi kei te maia tatou ki te heke, no reira, me waiho he hikoi nui ki nga whitiwhitinga tuatahi me te whakaiti i te hikoi i a tatou e anga whakamua ana. E kore matou e mahi i tenei tuhinga - he roa rawa. Ka taea e te hunga e hiahia ana te whakaaro ma ratou ano me pehea te mahi, ehara i te mea uaua :)

Inaianei me mahi te hekenga rōnaki stochastic ma te whakamahi i te whare pukapuka numpy (a kaua tatou e tutuki ki runga i nga kohatu i tohuhia e tatou i mua)

Waehere mo te Whakaheke Rōnaki 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

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ko nga uara ka tata te rite ki te hekenga me te kore whakamahi numpy. Heoi, he arorau tenei.

Kia mohio tatou he pehea te roa o te hekenga rōnaki stochastic.

Waehere mo te whakatau i te wa tatauranga SGD (80 mano nga taahiraa)

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)

Te whakaoti i te whārite o te whakahekenga rārangi māmā

Ko te haere atu ki roto i te ngahere, ka pouri nga kapua: ano, ko te tauira "tuhi-whaiaro" e whakaatu ana i te hua pai. Ko enei katoa e tohu ana me nui ake nga huarahi mohio ki te whakamahi i te whare pukapuka numpy, e tino tere ake ana nga mahi rorohiko. I tenei tuhinga kaore matou e ako mo ratou. He mea hei whakaaro mo to wa waatea :)

Ka whakarāpopototia e mātou

I mua i te whakarapopototanga, e hiahia ana ahau ki te whakautu i tetahi patai i ara ake pea mai i ta maatau kaipanui aroha. He aha, he aha te "whakamamae" me nga heke, he aha te take me hikoi ki runga, ki raro i te maunga (te nuinga ki raro) kia kitea ai te whenua mania, mena kei o tatou ringa he taputapu kaha me te ngawari, i roto i te te ahua o te otinga tātari, e kawe ana i a maatau ki te waahi Matau?

Ko te whakautu ki tenei patai kei runga i te mata. Inaianei kua titiro tatou ki tetahi tauira tino ngawari, kei roto te whakautu pono Te whakaoti i te whārite o te whakahekenga rārangi māmā ka whakawhirinaki ki tetahi tohu Te whakaoti i te whārite o te whakahekenga rārangi māmā. Kaore koe e kite i tenei i te nuinga o te wa i roto i te ao, na me whakaaro e 2, 30, 50, neke atu ranei nga tohu. Me taapiri atu ki tenei nga mano, ahakoa nga tekau mano o nga uara mo ia huanga. I tenei keehi, kaore pea te otinga tātari e tu ki te whakamatautau me te kore. Ka huri, ko te hekenga rōnaki me ona rerekētanga ka āta whakatata atu ki te whainga - te iti rawa o te mahi. A kaua e manukanuka ki te tere - ka titiro pea tatou ki nga huarahi ka taea e tatou te whakarite me te whakarite i te roa o te hikoi (ara te tere).

Na inaianei ko te whakarāpopototanga poto.

Tuatahi, ko taku tumanako ka awhina nga korero i roto i te tuhinga ki te timata i nga "kaiputaiao raraunga" ki te mohio me pehea te whakaoti i nga wharite whakahekenga ngawari (a ehara i te mea anake).

Tuarua, he maha nga huarahi i tirohia e matou hei whakaoti i te wharite. Inaianei, i runga i te ahuatanga, ka taea e tatou te whiriwhiri i te mea e pai ana ki te whakaoti rapanga.

Tuatoru, i kite matou i te kaha o etahi atu tautuhinga, ara ko te roa o te hikoi whakahekenga rōnaki. Kaore e taea te warewarehia tenei tawhā. Ka rite ki te korero i runga ake nei, hei whakaiti i te utu o nga tatauranga, me whakarereke te roa o te taahiraa i te wa e heke ana.

Tuawha, i roto i a maatau, ko nga mahi "tuhi-whare" i whakaatu i nga hua wa pai mo nga tatauranga. Ko tenei pea na te mea ehara i te tino tohunga te whakamahi i nga kaha o te whare pukapuka numpy. Engari ahakoa he aha, ko te whakatau e whai ake nei e tohu ana. I tetahi taha, i etahi wa he pai ki te uiui i nga whakaaro kua whakapumautia, a, i tetahi atu taha, kaore e pai ki te whakararu i nga mea katoa - engari, i etahi wa ka pai ake te huarahi ngawari ki te whakaoti rapanga. A, i te mea ko ta matou whainga ko te wetewete i nga huarahi e toru ki te whakaoti i te wharite regression linear ngawari, ko te whakamahi i nga mahi "tuhi-whaiaro" i tino nui mo matou.

Tuhituhi (he penei ranei)

1. Rerereretanga raina

http://statistica.ru/theory/osnovy-lineynoy-regressii/

2. Tikanga tapawha iti rawa

mathprofi.ru/metod_naimenshih_kvadratov.html

3. Putanga

www.mathprofi.ru/chastnye_proizvodnye_primery.html

4. Rōnaki

mathprofi.ru/proizvodnaja_po_napravleniju_i_gradient.html

5. Whakahekenga Rōnaki

habr.com/en/post/471458

habr.com/en/post/307312

artemarakcheev.com//2017-12-31/linear_regression

6. whare pukapuka NumPy

docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.linalg.solve.html

docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.linalg.pinv.html

pythonworld.ru/numpy/2.html

Source: will.com

Tāpiri i te kōrero