Réamhrá don Algartam Naive Bayes

ML
ML algartam
aicmiú
Réamhrá don Algartam Naive Bayes cover image

Tábla:

Réamhrá

Is algartam foghlama meaisín aicmithe é Naive Bayes atá bunaithe ar theoirim Bayes. Tá sé an-éifeachtach go háirithe nuair a dhéileáiltear le sonraí téacsúla mar: Anailís Mothúchán, Brath Turscar agus aicmiú téacs.

Tugtar “Naive” ar an algartam seo mar gheall ar an mbonn tuisceana go bhfuil na hathróga tacair sonraí ar fad neamhspleách, rud nach amhlaidh i gcónaí.

Sula dtéann tú níos faide chun míniú a thabhairt ar an gcaoi a n-oibríonn bánna Naive, déanaimis cinnte go dtuigeann muid na rudaí seo a leanas:

Dóchúlacht choinníollach

Tá algartam Naive Bayes bunaithe ar theoirim Bayes atá bunaithe ar dhóchúlacht choinníollach: is é an dóchúlacht go dtarlóidh teagmhas A toisc gur tharla teagmhas B cheana féin.

Sampla:

Bíodh dhá phróca againn ina bhfuil liathróidí daite:

  • Tá 3 liathróid ghorma, 2 liathróid dhearga agus 4 liathróid ghlasa ag Jar 1.

  • Tá 1 liathróid ghorm, 4 liathróid dhearga agus 3 liathróid ghlasa ag Jar 2.

Teastaíonn uainn an dóchúlacht go roghnófar liathróid ghorm go randamach as ceann de na prócaí a ríomh

equations

Ní hionann é agus suim na ndóchúlachtaí maidir le liathróid ghorm a roghnú as Jar1 nó Jar2.

Anois, ba mhaith linn an dóchúlacht go roghnófar liathróid ghorm a ríomh toisc gur roghnaigh muid Jar1:

equations

Ar deireadh, ba mhaith linn an dóchúlacht go roghnódh Jar1 a ríomh toisc gur tharraingeamar liathróid ghorm. Anseo úsáidimid Teoirim Bayes a luaitear mar seo a leanas:

equations

equations

Aicmiú Naive Bayes

In aicmitheoir Naive Bayes, ba mhaith linn an aicme a fháil a uasmhéadaíonn an dóchúlacht choinníollach i bhfianaise an veicteoir ionchuir X; mar sin, is féidir Naive Bayes a fhoirmiú mar seo a leanas:

equations

Le húsáid Teoirim Bayes, déantar an fheidhm:

equations

Sa fhoirmliú seo, tá sé éasca P(Ci) nach ionann é agus dóchúlacht an aicme Ci a ríomh, agus is furasta P(x) a ríomh arb é an dóchúlacht go dtarlóidh an teagmhas x.

Is é an rud atá deacair a ríomh ná P(x|Ci); dóchúlacht an teagmhais x tugtha don rang Ci. Chun é seo a shimpliú tuilleadh, ní mór dúinn glacadh leis go bhfuil na hathróga ionchuir go léir neamhspleách; mar sin, is féidir linn scríobh:

equations

Agus is mar gheall ar an toimhde seo a thugaimid “Naive” ar an aicmitheoir seo, toisc nach féidir linn neamhspleáchas na n-athróg ionchuir a ráthú i gcónaí. Éiríonn an t-aicmitheoir Naive Bayes:

equations

Déanta na fírinne, is féidir linn an fhoirmliú seo a shimpliú tuilleadh trí P(x) a dhíchur, mar tá sé mar an gcéanna do gach rang:

equations

Anois, déanaimis féachaint ar shampla:

| Aimsir | Am | Lá na seachtaine | Dinnéar |

| ------- | -------- | --------------- | ------ |

| Geal | Tráthnóna | Deireadh Seachtaine | Cócairí |

| Scamaill Scaipthe | Oíche | Lá na seachtaine | Orduithe |

| Báistí | Oíche | Lá na seachtaine | Orduithe |

| Báistí | Meán lae | Lá na seachtaine | Orduithe |

| Scamaill Scaipthe | Meán lae | Deireadh Seachtaine | Cócairí |

| Geal | Oíche | Deireadh Seachtaine | Cócairí |

| Sneachta | Tráthnóna | Deireadh Seachtaine | Orduithe |

| Geal | Oíche | Lá na seachtaine | Cócairí |

| Geal | Meán oíche | Deireadh Seachtaine | Orduithe |

Anseo, tá tacar sonraí beag againn ina bhfuil 3 athróg ionchuir: Aimsir, Am agus Lá na seachtaine, agus athróg sprice amháin: “Dinnéar” a thugann le fios cé acu a chócaíonn nó a ordaíonn duine a dhinnéar . Ba mhaith linn rang an ionchuir x={Glan, Tráthnóna, Deireadh Seachtaine} a fháil:

equations

Ní mór dúinn an dóchúlacht choinníollach don rang “Cócaire” agus don rang “Orduithe” a ríomh nuair a thugtar an t-ionchur x={Soiléir, Tráthnóna, Deireadh Seachtaine}. Is é an rang tuartha an ceann a bhfuil an dóchúlacht choinníollach is airde aige.

Tosaímid trí dhóchúlacht choinníollach an ranga “Cócaire” a ríomh:

equations

Anois ríomhaimid gach dóchúlacht choinníollach leis féin:

Is é an dóchúlacht aimsire = “Soiléir” ós rud é gur “Cócaire” an rang ná líon na línte a bhfuil an aimsir “Soiléir” agus “Cócaire” ranga orthu thar líon iomlán na línte le rang “Cócaire”

equations

Baineann an rud céanna leis na dóchúlachtaí coinníollach eile:

equations

Anois le haghaidh na dóchúlachta P(Cooks) is é sin líon na línte a bhfuil “Cooks” ranga orthu thar líon iomlán na línte:

equations

Anois ríomhaimid toradh na ndóchúlachtaí seo:

equations

Ba é sin don rang “Cooks”, anois caithfimid an rud céanna a dhéanamh don rang “Orduithe”:

equations

Ríomhaimid na dóchúlachtaí aonair:

equations

Agus ar deireadh ríomhaimid táirge na dóchúlachta:

equations

Ar deireadh, glacaimid an rang leis an dóchúlacht is airde, is é sin an rang “Cócaireáin”:

equations

equations

equations

equations

equations

equations

Buntáistí agus teorainneacha an algartam seo

Buntáistí:

  • Is aicmitheora an-tapa é.

  • Tá sé éasca a chur i bhfeidhm.

  • Níl aon chéim oiliúna ann, ach níl ann ach tátal.

  • Ní éilíonn sé go leor sonraí chun tátail a dhéanamh.

Teorainneacha:

  • Glacann Naive Bayes leis go bhfuil na hathróga ionchuir neamhspleách, rud nach mbíonn fíor i gcónaí.

  • Tá fadhb náid-minicíocht ag baint le Naive Bayes: is é an tráth a sannann sé dóchúlacht nialasach d’athróg ionchuir. Ní bhainfidh sé seo amach an dóchúlacht choinníollach go léir P(C|x). Cleas amháin chun é seo a sheachaint ná minicíocht íosta 1 ( in ionad 0 ) a úsáid i ngach athróg.

Aclaíocht

Seo é fráma sonraí an tacair sonraí céanna atá feicthe againn sa sampla.

Is é an tasc atá agat Naive Bayes a chur i bhfeidhm tú féin ag baint úsáide as python:

import pandas as pd
dataset = pd.DataFrame()
dataset['Weather'] = ['Clear', 'Cloudy', 'Rainy', 'Rainy', 'Cloudy', 'Clear', 'Snowy', 'Clear', 'Clear']
dataset['Time'] = ['Evening', 'Night', 'Night', 'Midday', 'Midday', 'Night', 'Evening', 'Night', 'Midnight']
dataset['Day'] = ['Weekend', 'Weekday', 'Weekday', 'Weekday', 'Weekend', 'Weekend', 'Weekend', 'Weekday', 'Weekend']
dataset['Class'] = ['Cooks', 'Orders', 'Orders', 'Orders', 'Cooks', 'Cooks', 'Orders', 'Cooks', 'Orders']

def naive_bayes(weather, time, day):

# res_dict = {class1: probability of class 1, class1: probability of class 1
return res_dict

Réiteach


def naive_bayes(x_weather, x_time, x_day):
  TARGET = 'Dinner' # The name of the target variable
  CLASSES = list(dataset['Dinner'].unique()) # The classes of the target variable
len_dataset = len(dataset) # The length of the dataset
res_dict = {} # res_dict = {class1:probability1, ..., class_n:probability_n}

# for each class of the target classes, we calculate the it's conditional probability
for class_name in CLASSES:
# the number of lines that belong to the class "class_name"
len_c  = len(dataset[ (dataset[TARGET] == class_name) ])

# the number of lines that belong to the class "class_name" and have weather="x_weather"
n_weather = len(dataset[ (dataset[TARGET] == class_name) & (dataset['Weather'] == x_weather) ])
# the number of lines that belong to the class "class_name" and have time="x_time"
n_time = len(dataset[ (dataset[TARGET] == class_name) & (dataset['Time'] == x_time) ])

# the number of lines that belong to the class "class_name" and have day="x_day"
n_day  = len(dataset[ (dataset[TARGET] == class_name) & (dataset['Day'] == x_day) ])

# We calculate the conditional probability:
# P(class|x) = P(weather|class) x P(time|class) x P(day|class) x P(class)
p = (n_weather / len_c) * (n_time / len_c) * (n_day / len_c) * (len_c / len_dataset)        res_dict[class_name] = p
return res_dict



Career Services background pattern

Seirbhísí Gairme

Contact Section background image

Bígí i dteagmháil

Code Labs Academy © 2024 Gach ceart ar cosaint.