San artaigil seo, nì sinn mion-sgrùdadh air àireamhachadh teòiridheach a’ chruth-atharrachaidh gnìomhan ais-tharraing sreathach в gnìomh cruth-atharrachaidh logit inverse (ris an canar cuideachd gnìomh freagairt loidsigeach). An uairsin, a 'cleachdadh an arsenal dòigh-obrach as coltaiche, a rèir a’ mhodail ais-tharraing loidsigeach, bidh sinn a’ faighinn a’ ghnìomh call Call Logistic, no ann am faclan eile, mìnichidh sinn gnìomh leis am bi paramadairean an vectar cuideam air an taghadh anns a’ mhodal ais-tharraing loidsigeach .
Geàrr-chunntas artaigil:
- Leig leinn a-rithist an dàimh sreathach eadar dà chaochladair
- Feuch an aithnich sinn an fheum air cruth-atharrachadh gnìomhan ais-tharraing sreathach в gnìomh freagairt loidsigeach
- Dèanamaid na h-atharrachaidhean agus an toradh gnìomh freagairt loidsigeach
- Feuchaidh sinn ri tuigsinn carson a tha an dòigh as lugha de cheàrnagan dona nuair a tha sinn a 'taghadh crìochan gnìomhan Call Logistic
- Cleachd dòigh-obrach as coltaiche airson a dhearbhadh gnìomhan taghadh paramadair :
5.1. Cùis 1: gnìomh Call Logistic airson stuthan le sònrachaidhean clas 0 и 1:
5.2. Cùis 2: gnìomh Call Logistic airson stuthan le sònrachaidhean clas -1 и +1:
Tha an artaigil làn eisimpleirean sìmplidh anns a bheil a h-uile àireamhachadh furasta a dhèanamh beòil no air pàipear; ann an cuid de chùisean, is dòcha gum bi feum air àireamhair. Mar sin dèan deiseil :)
Tha an artaigil seo gu sònraichte airson luchd-saidheans dàta aig a bheil ìre eòlais tùsail ann am bunaitean ionnsachadh innealan.
Bheir an artaigil cuideachd seachad còd airson grafaichean agus àireamhachadh a tharraing. Tha a h-uile còd sgrìobhte sa chànan python-2.7. Leig leam mìneachadh ro-làimh mun “ùr-sgeul” den dreach a chaidh a chleachdadh - is e seo aon de na cumhaichean airson a’ chùrsa ainmeil a ghabhail bho Yandex air àrd-ùrlar foghlaim air-loidhne a tha a cheart cho aithnichte Coursera, agus, mar a dh’ fhaodadh a bhith den bheachd, chaidh an stuth ullachadh a rèir a’ chùrsa seo.
01. An urra ri loidhne dhìreach
Tha e gu math reusanta a’ cheist fhaighneachd - dè a th’ aig eisimeileachd sreathach agus ais-tharraing loidsigeach ris?
Tha e sìmplidh! Is e ais-tharraing loidsigeach aon de na modailean a bhuineas don neach-seòrsachaidh sreathach. Ann am faclan sìmplidh, is e obair seòrsaiche sreathach ro-innse luachan targaid bho chaochladairean (regressors) . Thathar a 'creidsinn gu bheil an eisimeileachd eadar na feartan agus luachan targaid sreathach. Mar sin tha ainm an neach-seòrsachaidh - sreathach. Gus a chuir gu math garbh, tha am modal ais-tharraing loidsigeach stèidhichte air a’ bharail gu bheil dàimh sreathach eadar na feartan agus luachan targaid . Is e seo an ceangal.
Tha a 'chiad eisimpleir anns an stiùidio, agus tha e, gu ceart, mu dheidhinn eisimeileachd ceart-cheàrnach nan tomhasan a thathar a' sgrùdadh. Ann a bhith ag ullachadh an artaigil, thàinig mi tarsainn air eisimpleir a tha mar-thà air mòran dhaoine a chuir air an oir - an urra ri sruth air bholtadh (“Mion-sgrùdadh ath-tharraing gnìomhaichte”, N. Draper, G. Smith). Bheir sinn sùil air an seo cuideachd.
A rèir lagh Ohm:
càite - neart làithreach, - bholtaids, - strì.
Mura robh fios againn lagh Ohm, an uairsin b 'urrainn dhuinn an eisimeileachd a lorg gu empirigeach le bhith ag atharrachadh agus tomhas , fhad 'sa tha e a' toirt taic stèidhichte. An uairsin chitheadh sinn gu bheil an graf eisimeileachd от a’ toirt loidhne dhìreach nas lugha no nas lugha tron tùs. Bidh sinn ag ràdh “barrachd no nas lugha” oir, ged a tha an dàimh dha-rìribh ceart, is dòcha gu bheil mearachdan beaga anns na tomhasan againn, agus mar sin is dòcha nach tuit na puingean air a’ ghraf dìreach air an loidhne, ach gun tèid an sgapadh timcheall air air thuaiream.
Graf 1 “eisimeileachd” от »
Còd tarraing cairt
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import random
R = 13.75
x_line = np.arange(0,220,1)
y_line = []
for i in x_line:
y_line.append(i/R)
y_dot = []
for i in y_line:
y_dot.append(i+random.uniform(-0.9,0.9))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(x_line,y_line,color = 'purple',lw = 3, label = 'I = U/R')
plt.scatter(x_line,y_dot,color = 'red', label = 'Actual results')
plt.xlabel('I', size = 16)
plt.ylabel('U', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
02. An fheum air an co-aontar ais-tharraing sreathach atharrachadh
Bheir sinn sùil air eisimpleir eile. Smaoinich gu bheil sinn ag obair ann am banca agus is e ar n-obair a bhith a’ dearbhadh an coltachd gum pàigh an neach-iasaid an iasad a rèir cuid de nithean. Gus an obair a dhèanamh nas sìmplidhe, cha bheachdaich sinn ach air dà fheart: tuarastal mìosail an neach-iasaid agus an t-suim ath-phàighidh iasad mìosail.
Tha an obair gu math cumhach, ach leis an eisimpleir seo tuigidh sinn carson nach eil e gu leòr airson a chleachdadh gnìomhan ais-tharraing sreathach, agus cuideachd faighinn a-mach dè na h-atharrachaidhean a dh'fheumar a dhèanamh leis a 'ghnìomh.
Tillidh sinn chun an eisimpleir. Thathas a’ tuigsinn mar as àirde an tuarastal, is ann as motha a bhios an neach-iasaid comasach air a riarachadh gach mìos gus an iasad a phàigheadh air ais. Aig an aon àm, airson raon tuarastail sònraichte bidh an dàimh seo gu math sreathach. Mar eisimpleir, gabhamaid raon tuarastail bho 60.000 RUR gu 200.000 RUR agus gabhail ris, anns an raon tuarastail ainmichte, gu bheil eisimeileachd meud a’ phàighidh mhìosail air meud an tuarastail sreathach. Canaidh sinn, airson an raon tuarastail ainmichte, gun deach innse nach urrainn an co-mheas tuarastail-gu-pàighidh tuiteam fo 3 agus feumaidh fhathast 5.000 RUR a bhith aig an neach-iasaid mar chùl-stòr. Agus a-mhàin anns a 'chùis seo, bidh sinn a' gabhail ris gum bi an neach-iasaid a 'pàigheadh air ais an iasad don bhanca. An uairsin, bidh an co-aontar ais-tharraing sreathach ann an cruth:
far a bheil , , , - tuarastal - an neach-iasaid, - pàigheadh iasaid -th iasadaiche.
A’ cur an àite tuarastal agus pàigheadh iasaid le crìochan stèidhichte a-steach don cho-aontar Faodaidh tu co-dhùnadh am bu chòir dhut iasad a thoirt seachad no a dhiùltadh.
A’ coimhead air adhart, tha sinn a’ toirt fa-near, leis na paramadairean a chaidh a thoirt seachad gnìomh ais-tharraing sreathach, air a chleachdadh ann an gnìomhan freagairt loidsigeach bheir e gu buil luachan mòra a nì iom-fhillte air àireamhachadh gus faighinn a-mach dè cho coltach ‘s a tha e ath-phàigheadh iasad. Mar sin, thathas a’ moladh na co-èifeachdan againn a lughdachadh, canaidh sinn, 25.000 uair. Chan atharraich an cruth-atharrachadh seo anns na co-èifeachdan an co-dhùnadh iasad a thoirt seachad. Cuimhnichidh sinn a’ phuing seo airson an ama ri teachd, ach a-nis, gus a dhèanamh eadhon nas soilleire na tha sinn a’ bruidhinn, beachdaichidh sinn air an t-suidheachadh le triùir luchd-iasaid a dh’fhaodadh a bhith ann.
Clàr 1 “Luchd-iasaid comasach”
Còd airson a bhith a ' cruthachadh clàr
import pandas as pd
r = 25000.0
w_0 = -5000.0/r
w_1 = 1.0/r
w_2 = -3.0/r
data = {'The borrower':np.array(['Vasya', 'Fedya', 'Lesha']),
'Salary':np.array([120000,180000,210000]),
'Payment':np.array([3000,50000,70000])}
df = pd.DataFrame(data)
df['f(w,x)'] = w_0 + df['Salary']*w_1 + df['Payment']*w_2
decision = []
for i in df['f(w,x)']:
if i > 0:
dec = 'Approved'
decision.append(dec)
else:
dec = 'Refusal'
decision.append(dec)
df['Decision'] = decision
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision']]
A rèir an dàta sa chlàr, tha Vasya, le tuarastal de 120.000 RUR, ag iarraidh iasad fhaighinn gus an urrainn dha a phàigheadh air ais gach mìos aig 3.000 RUR. Cho-dhùin sinn, gus an iasad aontachadh, gum feum tuarastal Vasya a bhith nas àirde na trì uiread na tha den phàigheadh, agus feumaidh fhathast 5.000 RUR a bhith air fhàgail. Tha Vasya a’ coinneachadh ris an riatanas seo: . Tha eadhon 106.000 RUR air fhàgail. A dh'aindeoin 's gu bheil nuair a àireamhachadh tha sinn air na cothroman a lughdachadh 25.000 uair, bha an toradh mar an ceudna - faodar an iasad aontachadh. Gheibh Fedya iasad cuideachd, ach feumaidh Lesha, a dh’ aindeoin gur e as motha a gheibh e, casg a chuir air a bhiadh.
Tarraingidh sinn graf airson a’ chùis seo.
Cairt 2 “Seòrsachadh luchd-iasaid”
Còdan airson tarraing graf
salary = np.arange(60000,240000,20000)
payment = (-w_0-w_1*salary)/w_2
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(salary, payment, color = 'grey', lw = 2, label = '$f(w,x_i)=w_0 + w_1x_{i1} + w_2x_{i2}$')
plt.plot(df[df['Decision'] == 'Approved']['Salary'], df[df['Decision'] == 'Approved']['Payment'],
'o', color ='green', markersize = 12, label = 'Decision - Loan approved')
plt.plot(df[df['Decision'] == 'Refusal']['Salary'], df[df['Decision'] == 'Refusal']['Payment'],
's', color = 'red', markersize = 12, label = 'Decision - Loan refusal')
plt.xlabel('Salary', size = 16)
plt.ylabel('Payment', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
Mar sin, ar loidhne dhìreach, air a thogail a rèir a 'ghnìomh , a’ sgaradh luchd-iasaid “dona” bho fheadhainn “math”. Tha an luchd-iasaid sin aig nach eil na miannan aca aig an aon àm ri na comasan aca os cionn na loidhne (Lesha), agus tha an fheadhainn a tha, a rèir crìochan ar modail, comasach air an iasad a phàigheadh air ais fon loidhne (Vasya agus Fedya). Ann am faclan eile, is urrainn dhuinn seo a ràdh: tha an loidhne dhìreach againn a 'roinn luchd-iasaid ann an dà chlas. Leig dhuinn an comharrachadh mar a leanas: gu clas Bidh sinn a’ seòrsachadh an luchd-iasaid sin a tha dualtach an iasad a phàigheadh air ais mar no Gabhaidh sinn a-steach an luchd-iasaid sin as coltaiche nach bi e comasach dhaibh an iasad a phàigheadh air ais.
Leig dhuinn geàrr-chunntas a dhèanamh air na co-dhùnaidhean bhon eisimpleir shìmplidh seo. Gabhamaid puing agus, a' cur co-chomharran a' phuing an àite co-aontar na loidhne , beachdaich air trì roghainnean:
- Ma tha am puing fon loidhne agus bidh sinn ga shònrachadh don chlas , an uairsin luach an gnìomh bidh deimhinneach bho gu . Tha seo a’ ciallachadh gun urrainn dhuinn gabhail ris gu bheil coltachd an iasad a phàigheadh air ais taobh a-staigh . Mar as motha an luach gnìomh, is ann as àirde an coltachd.
- Ma tha puing os cionn loidhne agus bidh sinn ga shònrachadh don chlas no , an uairsin bidh luach na gnìomh àicheil bho gu . An uairsin gabhaidh sinn ris gu bheil coltachd ath-phàigheadh fhiachan taobh a-staigh agus, mar as motha a tha luach iomlan na gnìomh, is ann as àirde a bhios ar misneachd.
- Tha a’ phuing air loidhne dhìreach, air a’ chrìoch eadar dà chlas. Anns a 'chùis seo, luach an gnìomh bidh co-ionnan agus tha an coltachd an iasad a phàigheadh air ais co-ionann ri .
A-nis, smaoinichidh sinn nach eil dà fheart againn, ach dusanan, agus chan e trì, ach mìltean de luchd-iasaid. An uairsin an àite loidhne dhìreach bidh againn m-thaobhach plèana agus co-èifeachdan cha bhith sinn air ar toirt a-mach à èadhar tana, ach air a thoirt a-mach a rèir nan riaghailtean gu lèir, agus air bunait dàta cruinnichte air luchd-iasaid a tha air an iasad a phàigheadh air ais no nach do phàigh. Agus gu dearbh, thoir an aire gu bheil sinn a-nis a 'taghadh luchd-iasaid a' cleachdadh co-èifeachdan aithnichte mar-thà . Gu dearbh, is e obair a ’mhodail ais-tharraing loidsigeach gu mionaideach na crìochan a dhearbhadh , aig a bheil luach an gnìomh call Call Logistic bidh e buailteach don ìre as ìsle. Ach mu dheidhinn mar a tha an vector air a thomhas , gheibh sinn a-mach barrachd anns a’ 5mh earrann den artaigil. Anns an eadar-ama, bidh sinn a 'tilleadh chun fhearann a chaidh a ghealltainn - chun bancair againn agus a thriùir luchd-dèiligidh.
Taing don ghnìomh tha fios againn cò as urrainn iasad a thoirt seachad agus cò a dh'fheumas a bhith air a dhiùltadh. Ach chan urrainn dhut a dhol chun an stiùiriche leis an fhiosrachadh sin, oir bha iad airson faighinn bhuainn an coltachd gum biodh gach neach-iasaid air an iasad a phàigheadh air ais. Dè a nì thu? Tha am freagairt sìmplidh - feumaidh sinn dòigh air choireigin atharrachadh a dhèanamh air a 'ghnìomh , aig a bheil luachan anns an raon gu gnìomh aig am bi luachan anns an raon . Agus tha leithid de ghnìomh ann, canar ris gnìomh freagairt loidsigeach no cruth-atharrachadh inverse-logit. Coinnich:
Chì sinn ceum air cheum mar a tha e ag obair gnìomh freagairt loidsigeach. Thoir an aire gun coisich sinn an taobh eile, i.e. gabhaidh sinn ris gu bheil fios againn air an luach coltachd, a tha anns an raon bho gu agus an uairsin bidh sinn “a’ leigeil a-mach ”an luach seo gu raon iomlan nan àireamhan bho gu .
03. Tha sinn a' faighinn a' ghnìomh freagairt loidsigeach
Ceum 1. Convert na luachan coltachd a-steach raon
Aig àm cruth-atharrachadh a 'ghnìomh в gnìomh freagairt loidsigeach Fàgaidh sinn ar n-anailisiche creideis leis fhèin agus bheir sinn cuairt timcheall nan geallaichean na àite. Chan e, gu dearbh, cha chuir sinn geall, is e a h-uile rud a tha inntinneach dhuinn an sin brìgh an fhacail, mar eisimpleir, is e 4 gu 1 an cothrom. fàilligidhean." A thaobh coltachd, tha coltas ann gun tachair tachartas air a roinn leis an coltachd nach tachair an tachartas. Sgrìobhamaid sìos am foirmle airson an cothrom gun tachair tachartas :
càite - coltachd gun tachair tachartas, - coltachd nach tachair tachartas
Mar eisimpleir, ma tha an coltachd gun dèan each òg, làidir agus spòrsail leis an fhar-ainm “Veterok” a’ chùis air seann bhoireannach flabby leis an t-ainm “Matilda” aig rèis co-ionann ri , an uairsin bidh an cothrom soirbheachais airson "Veterok". к agus a chaochladh, le fios air na cothroman, cha bhi e doirbh dhuinn an coltachd obrachadh a-mach :
Mar sin, tha sinn air ionnsachadh “eadar-theangachadh” coltachd gu cothroman, a bheir luachan bho gu . Gabhamaid aon cheum eile agus ionnsaichidh sinn “eadar-theangachadh” air coltachd gu loidhne àireimh gu lèir bho gu .
Ceum 2. Convert na luachan coltachd a-steach raon
Tha an ceum seo gu math sìmplidh - bheir sinn logarithm nan cothroman gu bonn àireamh Euler agus gheibh sinn:
A-nis tha fios againn ma tha , an uairsin obraich a-mach an luach bidh e gu math sìmplidh agus, a bharrachd air sin, bu chòir dha a bhith deimhinneach: . Tha seo fìor.
A-mach à feòrachas, leig dhuinn sùil a thoirt air dè ma tha , an uairsin tha sinn an dùil luach àicheil fhaicinn . Nì sinn sgrùdadh: . Tha sin ceart.
A-nis tha fios againn mar a thionndadh an luach coltachd bho gu air feadh na loidhne àireimh gu lèir bho gu . Anns an ath cheum nì sinn an taobh eile.
Airson a-nis, tha sinn a 'toirt fa-near, a rèir riaghailtean logarithm, fios a bhith agad air luach a' ghnìomh , faodaidh tu na cothroman a thomhas:
Bidh an dòigh seo gus cothroman a dhearbhadh feumail dhuinn anns an ath cheum.
Ceum 3. Leig dhuinn foirmle a dhearbhadh
Mar sin dh'ionnsaich sinn, le fios , lorg luachan gnìomh . Ach, gu dearbh, feumaidh sinn dìreach a chaochladh - fios an luach a lorg . Gus seo a dhèanamh, leig dhuinn tionndadh gu leithid de bhun-bheachd mar an gnìomh inverse odds, a rèir dè:
Anns an artaigil chan fhaigh sinn am foirmle gu h-àrd, ach bheir sinn sùil air a’ cleachdadh na h-àireamhan bhon eisimpleir gu h-àrd. Tha fios againn, le coltas 4 gu 1 (), is e an coltachd gun tachair an tachartas 0.8 (). Dèanamaid neach-ionaid: . Tha seo aig an aon àm ris an àireamhachadh a rinn sinn na bu thràithe. Rachamaid air adhart.
Anns a’ cheum mu dheireadh thug sinn a-mach sin , a tha a’ ciallachadh gun urrainn dhut neach-ionaid a dhèanamh anns a’ ghnìomh inverse odds. Gheibh sinn:
Roinn an dà chuid an àireamhaiche agus an t-ainmiche le , An uairsin:
Dìreach air eagal, gus dèanamh cinnteach nach do rinn sinn mearachd an àite sam bith, dèanamaid aon sgrùdadh beag eile. Ann an ceum 2, tha sinn airson air a cho-dhùnadh sin . An uairsin, cuir an àite an luach a-steach don ghnìomh freagairt loidsigeach, tha sinn an dùil faighinn . Bidh sinn a 'toirt a-steach agus a' faighinn:
Meal do naidheachd, a leughadair, tha sinn dìreach air a’ ghnìomh freagairt loidsigeach fhaighinn agus a dhearbhadh. Bheir sinn sùil air graf a’ ghnìomh.
Graf 3 “Gnìomh freagairt loidsigeach”
Còdan airson tarraing graf
import math
def logit (f):
return 1/(1+math.exp(-f))
f = np.arange(-7,7,0.05)
p = []
for i in f:
p.append(logit(i))
fig, axes = plt.subplots(figsize = (14,6), dpi = 80)
plt.plot(f, p, color = 'grey', label = '$ 1 / (1+e^{-w^Tx_i})$')
plt.xlabel('$f(w,x_i) = w^Tx_i$', size = 16)
plt.ylabel('$p_{i+}$', size = 16)
plt.legend(prop = {'size': 14})
plt.show()
Anns an litreachas gheibh thu cuideachd ainm a 'ghnìomh seo mar gnìomh sigmoid. Tha an graf a’ sealltainn gu soilleir gu bheil am prìomh atharrachadh ann an coltachd nì a bhuineas do chlas a’ tachairt taobh a-staigh raon caran beag , àiteigin bho gu .
Tha mi a’ moladh tilleadh chun mhion-sgrùdair creideas againn agus a chuideachadh le bhith a’ tomhas coltachd ath-phàigheadh iasad, air neo tha cunnart ann gum fàg e às aonais bònas :)
Clàr 2 “Luchd-iasaid comasach”
Còd airson a bhith a ' cruthachadh clàr
proba = []
for i in df['f(w,x)']:
proba.append(round(logit(i),2))
df['Probability'] = proba
df[['The borrower', 'Salary', 'Payment', 'f(w,x)', 'Decision', 'Probability']]
Mar sin, tha sinn air dearbhadh a dhèanamh air coltachd ath-phàigheadh iasad. San fharsaingeachd, tha e coltach gu bheil seo fìor.
Gu dearbh, tha an coltachd gum bi Vasya, le tuarastal de 120.000 RUR, comasach air 3.000 RUR a thoirt don bhanca gach mìos faisg air 100%. Co-dhiù, feumaidh sinn tuigsinn gum faod banca iasad a chuir a-mach gu Lesha ma tha poileasaidh a’ bhanca a’ toirt seachad, mar eisimpleir, airson iasad a thoirt do luchd-dèiligidh le coltachd ath-phàigheadh air iasad nas motha na, can, 0.3. Is e dìreach sa chùis seo a chruthaicheas am banca tèarmann nas motha airson call a dh’ fhaodadh a bhith ann.
Bu chòir a thoirt fa-near cuideachd gun deach an co-mheas tuarastail-gu-pàighidh de 3 co-dhiù agus le iomall de 5.000 RUR a thoirt bhon mhullach. Mar sin, cha b’ urrainn dhuinn vectar cuideaman a chleachdadh anns a’ chruth thùsail aige . Dh'fheumadh sinn na co-èifeachdan a lùghdachadh gu mòr, agus anns a 'chùis seo roinn sinn gach co-èifeachd le 25.000, is e sin, gu dearbh, dh' atharraich sinn an toradh. Ach chaidh seo a dhèanamh gu sònraichte gus tuigse air an stuth a dhèanamh nas sìmplidhe aig a’ chiad ìre. Ann am beatha, cha bhith feum againn air co-èifeachdan a chruthachadh agus atharrachadh, ach lorg iad. Anns na h-ath earrannan den artaigil gheibh sinn na co-aontaran leis a bheil na crìochan air an taghadh .
04. An dòigh as lugha de cheàrnagan airson a bhith a' dearbhadh vectar cuideaman ann an gnìomh freagairt loidsigeach
Tha fios againn mu thràth air an dòigh seo airson vectar cuideaman a thaghadh mar a tha modh nan ceàrnagan as lugha (LSM) agus gu dearbh, carson nach bi sinn an uairsin ga chleachdadh ann an duilgheadasan seòrsachaidh binary? Gu dearbh, chan eil dad a 'cur bacadh ort bho bhith a' cleachdadh MNC, chan eil ach an dòigh seo ann an duilgheadasan seòrsachaidh a 'toirt seachad toraidhean nach eil cho ceart Call Logistic. Tha bunait teòiridheach ann airson seo. Feuch gun coimhead sinn an toiseach air aon eisimpleir shìmplidh.
Gabhamaid ris gu bheil na modailean againn (a 'cleachdadh MSE и Call Logistic) mu thràth air tòiseachadh a’ taghadh vectar cuideaman agus stad sinn an àireamhachadh aig ceum air choreigin. Chan eil e gu diofar co-dhiù sa mheadhan, aig an deireadh no aig an toiseach, is e am prìomh rud gu bheil cuid de luachan againn mu thràth air vectar cuideaman agus gabhamaid ris aig a’ cheum seo, an vectar cuideaman airson an dà mhodail chan eil eadar-dhealachaidhean ann. An uairsin gabh na cuideaman a thig às agus cuir a-steach iad gnìomh freagairt loidsigeach () airson nì air choireigin a bhuineas don chlas . Bidh sinn a’ sgrùdadh dà chùis nuair a tha, a rèir an vectar cuideaman taghte, gu bheil am modail againn gu math ceàrr agus a chaochladh - tha am modail glè mhisneachail gur ann leis a’ chlas a tha an nì. . Feuch sinn a-mach dè na cìsean a thèid a thoirt seachad nuair a bhios tu gan cleachdadh MNC и Call Logistic.
Còd gus peanasan obrachadh a-mach a rèir an gnìomh call a thathar a’ cleachdadh
# класс объекта
y = 1
# вероятность отнесения объекта к классу в соответствии с параметрами w
proba_1 = 0.01
MSE_1 = (y - proba_1)**2
print 'Штраф MSE при грубой ошибке =', MSE_1
# напишем функцию для вычисления f(w,x) при известной вероятности отнесения объекта к классу +1 (f(w,x)=ln(odds+))
def f_w_x(proba):
return math.log(proba/(1-proba))
LogLoss_1 = math.log(1+math.exp(-y*f_w_x(proba_1)))
print 'Штраф Log Loss при грубой ошибке =', LogLoss_1
proba_2 = 0.99
MSE_2 = (y - proba_2)**2
LogLoss_2 = math.log(1+math.exp(-y*f_w_x(proba_2)))
print '**************************************************************'
print 'Штраф MSE при сильной уверенности =', MSE_2
print 'Штраф Log Loss при сильной уверенности =', LogLoss_2
Cùis de mhearachd - bidh am modail a’ sònrachadh nì do chlas le coltachd de 0,01
Peanas air cleachdadh MNC Bidh:
Peanas air cleachdadh Call Logistic Bidh:
Cùis de mhisneachd làidir - bidh am modail a’ sònrachadh nì do chlas le coltachd de 0,99
Peanas air cleachdadh MNC Bidh:
Peanas air cleachdadh Call Logistic Bidh:
Tha an eisimpleir seo a’ sealltainn gu math ma tha mearachd mòr ann gum bi an gnìomh call Loss Log a’ peanasachadh a’ mhodail gu math nas motha na MSE. Tuigidh sinn a-nis dè an cùl-raon teòiridheach a th’ ann a bhith a’ cleachdadh a’ ghnìomh call Loss Log ann an duilgheadasan seòrsachaidh.
05. An dòigh as coltaiche agus ais-tharraing loidsigeach
Mar a chaidh a ghealltainn aig an toiseach, tha an artaigil làn de eisimpleirean sìmplidh. Anns an stiùidio tha eisimpleir eile agus seann aoighean - luchd-iasaid banca: Vasya, Fedya agus Lesha.
Dìreach air eagal, mus leasaich mi an eisimpleir, leig dhomh do chuimhneachadh gu bheil sinn nar beatha a ’dèiligeadh ri sampall trèanaidh de mhìltean no milleanan de nithean le deichean no ceudan de fheartan. Ach, an seo tha na h-àireamhan air an toirt gus an urrainn dhaibh a dhol a-steach do cheann neach-saidheans dàta ùr-nodha.
Tillidh sinn chun an eisimpleir. Feuch an smaoinich sinn gun do cho-dhùin stiùiriche a ’bhanca iasad a thoirt don h-uile duine ann an fheum, a dh’ aindeoin gun do dh’ innis an algairim dha gun a bhith ga chuir gu Lesha. Agus a-nis tha ùine gu leòr air a dhol seachad agus tha fios againn cò de na trì gaisgich a phàigh an iasad air ais agus nach do phàigh. Na bha dùil: phàigh Vasya agus Fedya an iasad air ais, ach cha do rinn Lesha. A-nis smaoinichidh sinn gum bi an toradh seo na shampall trèanaidh ùr dhuinn agus, aig an aon àm, tha e mar gum biodh a h-uile dàta air na factaran a bheir buaidh air an coltas gun tèid an iasad a phàigheadh air ais (tuarastal an neach-iasaid, meud a’ phàighidh mhìosail) air a dhol à bith. An uairsin, gu intuitive, faodaidh sinn gabhail ris nach bi a h-uile treas neach-iasaid a’ pàigheadh air ais an iasad don bhanca, no ann am faclan eile, an coltachd gum pàigh an ath neach-iasaid an iasad. . Tha dearbhadh teòiridheach aig a’ bharail ghoireasach seo agus tha e stèidhichte air dòigh-obrach as coltaiche, gu tric anns an litreachas tha e air ainmeachadh prionnsapal coltas as àirde.
An toiseach, leig dhuinn eòlas fhaighinn air an uidheamachd bun-bheachdail.
Samhlachadh coltachd a bheil coltachd a leithid de shampall fhaighinn, a’ faighinn dìreach a leithid de bheachdan/toraidhean, i.e. toradh nan coltachd a bhith a 'faighinn gach toradh sampall (mar eisimpleir, co dhiubh a chaidh iasad Vasya, Fedya agus Lesha a phàigheadh air ais no nach deach a phàigheadh air ais aig an aon àm).
Gnìomh coltas a’ ceangal an coltas gum bi sampall ann ri luachan nam paramadairean cuairteachaidh.
Anns a 'chùis againn, tha an sampall trèanaidh na sgeama Bernoulli coitcheann, anns nach eil an caochladair air thuaiream a' toirt ach dà luach: no . Mar sin, faodar coltas an t-sampall a sgrìobhadh mar ghnìomh coltach ris a’ pharamadair mar a leanas:
Faodar an inntrig gu h-àrd a mhìneachadh mar a leanas. Tha an co-choltachd gum pàigh Vasya agus Fedya an iasad air ais co-ionann , tha an coltachd nach pàigh Lesha an iasad air ais co-ionann ris (leis NACH b’ e ath-phàigheadh iasad a thachair), mar sin tha coltachd nan trì tachartasan co-ionann .
An dòigh as àirde de choltas mar dhòigh air paramadair neo-aithnichte a thomhas le bhith a’ meudachadh gnìomhan coltachd. Anns a 'chùis againn, feumaidh sinn a leithid de luach a lorg aig am a’ ruighinn a h-àirde.
Cò às a tha an dearbh bheachd a’ tighinn - a bhith a’ coimhead airson luach paramadair neo-aithnichte aig a bheil an gnìomh coltachd a’ ruighinn an ìre as àirde? Tha tùs a’ bheachd a’ tighinn bhon bheachd gur e sampall an aon thùs fiosrachaidh a tha ri fhaighinn dhuinn mun t-sluagh. Tha a h-uile dad a tha fios againn mun t-sluagh air a riochdachadh anns an sampall. Mar sin, chan urrainn dhuinn a ràdh ach gur e sampall an sgàthan as mionaidiche den t-sluagh a tha ri fhaighinn dhuinn. Mar sin, feumaidh sinn paramadair a lorg far am bi an sampall a tha ri fhaighinn mar an fheadhainn as coltaiche.
Gu follaiseach, tha sinn a’ dèiligeadh ri duilgheadas optimization anns am feum sinn fìor phuing gnìomh a lorg. Gus an fhìor phuing a lorg, feumar beachdachadh air suidheachadh a ’chiad òrdugh, is e sin, toradh a’ ghnìomh co-ionann ri neoni agus fuasgladh fhaighinn air a ’cho-aontar a thaobh a’ pharamadair a tha thu ag iarraidh. Ach, faodaidh obair fhada a bhith ann a bhith a’ lorg toradh toraidh bho ghrunn fhactaran; gus seo a sheachnadh, tha dòigh-obrach sònraichte ann - atharrachadh chun logarithm. gnìomhan coltachd. Carson a tha leithid de ghluasad comasach? Bheir sinn an aire nach eil sinn a’ coimhead airson crìoch na h-obrach fhèin, agus an fhìor phuing, is e sin, luach am paramadair neo-aithnichte aig am a’ ruighinn a h-àirde. Nuair a ghluaiseas tu gu logarithm, chan eil am puing as àirde ag atharrachadh (ged a bhios an fhìor cheann fhèin eadar-dhealaichte), leis gu bheil an logarithm na ghnìomh monotonach.
Leig leinn, a rèir na tha gu h-àrd, leantainn air adhart a 'leasachadh ar n-eisimpleir le iasadan bho Vasya, Fedya agus Lesha. An toiseach gluais sinn air adhart gu logarithm den ghnìomh coltas:
A-nis is urrainn dhuinn gu furasta eadar-dhealachadh a dhèanamh air an abairt le :
Agus mu dheireadh, beachdaich air suidheachadh a 'chiad òrdugh - bidh sinn a' co-ionnanachadh toradh a 'ghnìomh gu neoni:
Mar sin, tha an tuairmse intuitive againn air coltachd ath-phàigheadh iasad bha e air fhìreanachadh gu teòiridheach.
Sgoinneil, ach dè a bu chòir dhuinn a dhèanamh leis an fhiosrachadh seo a-nis? Ma tha sinn a 'gabhail ris nach eil a h-uile treas neach-iasaid a' tilleadh an airgid chun a 'bhanca, tha e do-sheachanta gum bi an dàrna fear briste ann an creideas. Tha sin ceart, ach dìreach nuair a thathar a’ measadh coltachd ath-phàigheadh iasad co-ionann ri Cha tug sinn aire do na factaran a tha a’ toirt buaidh air ath-phàigheadh iasad: tuarastal an neach-iasaid agus meud a’ phàighidh mhìosail. Cuimhnichidh sinn gun do rinn sinn cunntas air an coltachd a thaobh ath-phàigheadh an iasaid le gach neach-dèiligidh, a’ toirt aire do na h-aon fhactaran sin. Tha e loidsigeach gun d’ fhuair sinn coltachd eadar-dhealaichte bhon cho-ionannachd sheasmhach .
Leig dhuinn mìneachadh dè cho coltach 'sa tha samples:
Còd airson àireamhachadh coltachd sampall
from functools import reduce
def likelihood(y,p):
line_true_proba = []
for i in range(len(y)):
ltp_i = p[i]**y[i]*(1-p[i])**(1-y[i])
line_true_proba.append(ltp_i)
likelihood = []
return reduce(lambda a, b: a*b, line_true_proba)
y = [1.0,1.0,0.0]
p_log_response = df['Probability']
const = 2.0/3.0
p_const = [const, const, const]
print 'Правдоподобие выборки при константном значении p=2/3:', round(likelihood(y,p_const),3)
print '****************************************************************************************************'
print 'Правдоподобие выборки при расчетном значении p:', round(likelihood(y,p_log_response),3)
Sampall coltachd aig luach seasmhach :
Sampall coltachd nuair a thathar a’ tomhas coltachd ath-phàigheadh iasaid a’ toirt aire do fhactaran :
Thionndaidh an coltas gum biodh sampall le coltachd air a thomhas a rèir nam feartan nas àirde na an coltas le luach coltachd seasmhach. Dè tha seo a' ciallachadh? Tha seo a 'moladh gun robh eòlas air na factaran ga dhèanamh comasach a bhith a' taghadh nas cinntiche coltachd ath-phàigheadh iasad airson gach neach-dèiligidh. Mar sin, nuair a thèid an ath iasad a thoirt a-mach, bhiodh e na bu chòir am modail a chaidh a mholadh aig deireadh earrann 3 den artaigil a chleachdadh airson measadh a dhèanamh air coltachd ath-phàigheadh fhiachan.
Ach an uairsin, ma tha sinn airson a mheudachadh gnìomh coltachd sampall, an uairsin carson nach cleachd thu cuid de algairim a bheir a-mach coltachd airson Vasya, Fedya agus Lesha, mar eisimpleir, co-ionann ri 0.99, 0.99 agus 0.01, fa leth. Is dòcha gun dèan an leithid de algairim coileanadh gu math air an sampall trèanaidh, oir bheir e luach coltas an t-sampall nas fhaisge air , ach, an toiseach, bidh e coltach gum bi duilgheadasan aig a leithid de algairim le comas coitcheann, agus san dàrna àite, gu cinnteach cha bhith an algairim seo sreathach. Agus ma tha e soilleir nach eil dòighean airson cuir an-aghaidh cus trèanaidh (comas coitcheannachadh lag) air an toirt a-steach don phlana san artaigil seo, an uairsin rachamaid tron dàrna puing ann am barrachd mionaideachd. Gus seo a dhèanamh, dìreach freagair ceist shìmplidh. Am b’ urrainn dha Vasya agus Fedya an aon rud a phàigheadh air ais, a’ toirt aire do na factaran as aithne dhuinn? Bho shealladh loidsig fuaim, gu dearbh chan eil, chan urrainn. Mar sin pàighidh Vasya 2.5% den tuarastal aige gach mìos gus an iasad a phàigheadh air ais, agus Fedya - faisg air 27,8%. Cuideachd ann an graf 2 “Seòrsachadh teachdaiche” chì sinn gu bheil Vasya fada nas fhaide bhon loidhne a’ sgaradh nan clasaichean na Fedya. Agus mu dheireadh, tha fios againn gu bheil an gnìomh airson Vasya agus bidh Fedya a’ gabhail luachan eadar-dhealaichte: 4.24 airson Vasya agus 1.0 airson Fedya. A-nis, nam biodh Fedya, mar eisimpleir, a 'cosnadh òrdugh meudachd nas motha no ag iarraidh iasad nas lugha, bhiodh na coltachd airson an iasad a phàigheadh air ais airson Vasya agus Fedya coltach. Ann am faclan eile, chan urrainnear eisimeileachd sreathach a shàrachadh. Agus ma tha sinn dha-rìribh a’ tomhas nan cothroman , agus nach tug sinn a-mach à èadhar tana iad, b’ urrainn dhuinn a ràdh gu sàbhailte na luachan againn leigeil leinn tuairmse a dhèanamh air coltachd ath-phàighidh an iasaid le gach neach-iasaid, ach bhon a dh’ aontaich sinn gabhail ris gu bheil co-èifeachdan air an dearbhadh. air a dhèanamh a rèir nan riaghailtean gu lèir, an uairsin gabhaidh sinn ris - tha na co-èifeachdan againn a’ toirt cothrom dhuinn tuairmse nas fheàrr a thoirt air coltachd :)
Ge-tà, tha sinn a 'seargadh. Anns an earrainn seo feumaidh sinn tuigsinn mar a tha an vectar cuideaman air a dhearbhadh , a tha riatanach gus measadh a dhèanamh air coltachd ath-phàighidh an iasaid le gach neach-iasaid.
Leig dhuinn geàrr-chunntas goirid a dhèanamh air an arsenal a bhios sinn a’ cleachdadh gus cothroman a lorg :
1. Tha sinn a 'gabhail ris gu bheil an dàimh eadar an caochladair targaid (luach ro-innse) agus am bàillidh a' toirt buaidh air an toradh sreathach. Airson seo tha e air a chleachdadh gnìomh ais-tharraing sreathach ghnèithean , leis a bheil an loidhne a’ roinn nithean (luchd-dèiligidh) gu clasaichean и no (luchd-dèiligidh a tha comasach air an iasad a phàigheadh air ais agus an fheadhainn nach eil). Anns a 'chùis againn, tha am foirm aig a' cho-aontar .
2. Bidh sinn a ’cleachdadh gnìomh logit inverse ghnèithean gus faighinn a-mach an coltachd a tha nì a bhuineas do chlas .
3. Bidh sinn a 'beachdachadh air an t-seata trèanaidh againn mar chur an gnìomh coitcheann Sgeama Bernoulli, is e sin, airson gach nì tha caochladair air thuaiream air a chruthachadh, a tha coltach ri (a chuid fhèin airson gach nì) a’ gabhail an luach 1 agus le coltachd - 0.
4. Tha fios againn dè a dh'fheumas sinn a mheudachadh gnìomh coltachd sampall a’ toirt aire do na factaran ris an deach gabhail gus am bi an sampall a tha ri fhaighinn cho so-chreidsinneach. Ann am faclan eile, feumaidh sinn crìochan a thaghadh aig am bi an sampall as so-chreidsinneach. Anns a 'chùis againn, is e am paramadair taghte an coltachd ath-phàigheadh iasad , a tha e fhèin an urra ri co-èifeachdan neo-aithnichte . Mar sin feumaidh sinn a leithid de vectar de chuideaman a lorg , aig am bi an coltas gum bi an sampall aig a’ char as àirde.
5. Tha fios againn dè a mheudachadh gnìomhan coltachd sampall faodaidh tu a chleachdadh dòigh-obrach as coltaiche. Agus tha fios againn air na cleasan duilich a bhith ag obair leis an dòigh seo.
Seo mar a thionndaidh e a-mach gur e gluasad ioma-cheum a th’ ann :)
A-nis cuimhnich gun robh sinn aig fìor thoiseach an artaigil a bha sinn airson dà sheòrsa de ghnìomhan call fhaighinn Call Logistic a rèir mar a tha clasaichean nì air an sònrachadh. Tha e mar sin a thachair, ann an duilgheadasan seòrsachaidh le dà chlas, gu bheil na clasaichean air an comharrachadh mar и no . A rèir a’ chomharra, bidh gnìomh call co-fhreagarrach aig an toradh.
Cùis 1. Seòrsachadh nithean a-steach и
Na bu thràithe, nuair a bhathas a’ dearbhadh dè cho coltach ‘s a bhiodh sampall, anns an deach coltachd ath-phàigheadh fhiachan leis an neach-iasaid a thomhas a rèir factaran agus co-èifeachdan a chaidh a thoirt seachad. , chuir sinn an gnìomh am foirmle:
Gu dearbh tha an ciall gnìomhan freagairt loidsigeach airson vector cuideam sònraichte
An uairsin chan eil dad a’ cur stad oirnn bho bhith a’ sgrìobhadh a’ ghnìomh coltachd sampall mar a leanas:
Tha e a 'tachairt gu bheil e uaireannan doirbh do chuid de luchd-anailis ùr-nodha a bhith a' tuigsinn mar a tha an gnìomh seo ag obair. Bheir sinn sùil air 4 eisimpleirean goirid a shoilleiricheas a h-uile càil:
1. ma (ie, a rèir an sampall trèanaidh, buinidh an nì don chlas +1), agus an algairim againn a’ dearbhadh an coltachd gun tèid nì a sheòrsachadh gu clas co-ionann ri 0.9, an uairsin thèid am pìos sampall seo a thomhas mar a leanas:
2. ma agus , an uairsin bidh an àireamhachadh mar seo:
3. ma agus , an uairsin bidh an àireamhachadh mar seo:
4. ma agus , an uairsin bidh an àireamhachadh mar seo:
Tha e follaiseach gun tèid an gnìomh coltas a mheudachadh ann an cùisean 1 agus 3 no anns a’ chùis choitcheann - le luachan air an tomhas gu ceart mu na coltachd a thaobh a bhith a’ sònrachadh nì do chlas .
Air sgàth 's nuair a thathar a' dearbhadh dè cho coltach 'sa tha e cuspair a shònrachadh do chlas Chan eil fios againn ach na co-èifeachdan , an sin seallaidh sinn air an son. Mar a chaidh ainmeachadh gu h-àrd, is e duilgheadas optimization a tha seo anns am feum sinn an toiseach faighinn a-mach dè an toradh a th ’aig a’ ghnìomh coltas a thaobh vectar cuideaman . Ach, an toiseach tha e ciallach an obair a dhèanamh nas sìmplidhe dhuinn fhìn: bidh sinn a’ coimhead airson derivative an logarithm gnìomhan coltachd.
Carson an dèidh logarithm, ann an gnìomhan mearachd loidsigeach, dh'atharraich sinn an soidhne bho air . Tha a h-uile dad sìmplidh, oir ann an duilgheadasan le measadh càileachd modail tha e àbhaisteach luach gnìomh a lughdachadh, rinn sinn iomadachadh air taobh deas an abairt le agus a rèir sin, an àite a bhith a 'meudachadh, a-nis tha sinn a' lùghdachadh a 'ghnìomh.
Gu fìrinneach, an-dràsta, ro do shùilean, thàinig gnìomh call gu faiceallach - Call Logistic airson seata trèanaidh le dà chlas: и .
A-nis, gus na co-èifeachdan a lorg, feumaidh sinn dìreach an derivative a lorg gnìomhan mearachd loidsigeach agus an uairsin, a’ cleachdadh dhòighean optimization àireamhach, leithid teàrnadh caisead no teàrnadh caisead stochastic, tagh na co-èifeachdan as fheàrr . Ach, leis cho mòr 'sa tha an artaigil, thathar a' moladh an eadar-dhealachadh a dhèanamh leat fhèin, no 's dòcha gum bi seo na chuspair airson an ath artaigil le tòrr àireamhachd gun eisimpleirean cho mionaideach.
Cùis 2. Seòrsachadh nithean a-steach и
Bidh an dòigh-obrach an seo mar an ceudna ri clasaichean и , ach an t-slighe fhèin gu toradh a 'ghnìomh call Call Logistic, bidh e nas sgeadaichte. Feuch an tòisich sinn. Airson an gnìomh coltas cleachdaidh sinn an gnìomhaiche "ma tha... an uairsin ...". Is e sin, ma tha Buinidh an nì don chlas , an uair sin airson obrachadh a-mach dè cho coltach 'sa tha an sampall bidh sinn a' cleachdadh an coltachd , ma bhuineas an nì don chlas , an uairsin bidh sinn a 'toirt a-steach an coltas . Seo mar a tha an gnìomh coltas coltach:
Bheir sinn cunntas air ar corragan mar a tha e ag obair. Beachdaichidh sinn air 4 cùisean:
1. ma и , an uairsin bidh an coltas samplachaidh “a’ dol ”
2. ma и , an uairsin bidh an coltas samplachaidh “a’ dol ”
3. ma и , an uairsin bidh an coltas samplachaidh “a’ dol ”
4. ma и , an uairsin bidh an coltas samplachaidh “a’ dol ”
Tha e follaiseach, ann an cùisean 1 agus 3, nuair a chaidh na coltachdan a dhearbhadh gu ceart leis an algairim, gnìomh coltachd air a mheudachadh, is e sin, is e seo dìreach a bha sinn airson faighinn. Ach, tha an dòigh-obrach seo gu math duilich agus an ath rud beachdaichidh sinn air comharradh nas toinnte. Ach an toiseach, leig dhuinn logarithm an gnìomh coltas le atharrachadh soidhne, oir a-nis bidh sinn ga lughdachadh.
Leigamaid an àite sin faireachdainn :
Nì sinn an teirm cheart fon logarithm a dhèanamh nas sìmplidhe le bhith a’ cleachdadh dòighean àireamhachd sìmplidh agus faigh:
A-nis tha an t-àm ann cur às don ghnìomhaiche "ma tha... an uairsin ...". Thoir an aire nuair a nì a bhuineas don chlas , an uairsin anns an abairt fon logarithm, anns an ainmiche, air a thogail suas do'n chumhachd , ma bhuineas an nì don chlas , an uairsin tha $e$ air a thogail don chumhachd . Mar sin, faodar an comharradh airson na h-ìre a dhèanamh nas sìmplidhe le bhith a’ cothlamadh an dà chùis ann an aon: . An uair sin gnìomh mearachd loidsigeach bidh am foirm:
A rèir riaghailtean logarithm, bidh sinn a’ tionndadh a’ bhloigh thairis agus a’ cuir a-mach an soidhne "" (nas lugha) airson an logarithm, gheibh sinn:
Seo an gnìomh call call loidsistigs, a tha air a chleachdadh anns an t-seata trèanaidh le stuthan air an sònrachadh do chlasaichean: и .
Uill, aig an ìre seo tha mi a’ gabhail mo chead agus bidh sinn a’ crìochnachadh an artaigil.
Stuthan taice
1. Litreachas
1) Mion-sgrùdadh ath-thionndaidh gnìomhaichte / N. Draper, G. Smith - 2na deas. - M.: Ionmhas is Staitistig, 1986 (eadar-theangachadh bhon Bheurla)
2) Teòiridh coltachd agus staitistig matamataigeach / V.E. Gmurman - 9mh deas. - M.: Àrd-sgoil, 2003
3) Teòiridh coltachd / N.I. Chernova - Novosibirsk: Oilthigh Stàite Novosibirsk, 2007
4) Mion-sgrùdadh gnìomhachais: bho dhàta gu eòlas / Paklin N. B., Oreshkov V. I. - 2na deas. — St. Petersburg: Peadar, 2013
5) Saidheans Dàta Saidheans dàta bhon fhìor thoiseach / Joel Gras - St. Petersburg: BHV Petersburg, 2017
6) Staitistigean practaigeach airson eòlaichean Saidheans Dàta / P. Bruce, E. Bruce - St. Petersburg: BHV Petersburg, 2018
2. Òraidean, cùrsaichean (bhidio)
1)
2)
3)
4)
5)
3. Stòran eadar-lìn
1)
2)
3)
4)
6)
7)
Source: www.habr.com