์ธ๊ณต์ง€๋Šฅ

[Day 8] Math for AI - Pandas & MLP

Frank_the_Tank 2021. 1. 27. 18:02

๐Ÿ“ Pandas - Python Data Analysis Library

 

    - Panel datas -> Pandas๋กœ R๊ณผ ๋น„์Šทํ•œ ๊ตฌ์กฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ numpy์™€ ํ†ตํ•ฉํ•ด ๊ฐ•๋ ฅํ•œ "์Šคํ”„๋ ˆ๋“œ์‹œํŠธ" ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

    - ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋Š” Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Python๊ณ„์˜ ์—‘์…€์ด๋ผ ๋ถˆ๋ฆฐ๋‹ค.

    - ์ธ๋ฑ์‹ฑ, ์—ฐ์‚ฐ์šฉ ํ•จ์ˆ˜, ์ „์ฒ˜๋ฆฌ ํ•จ์ˆ˜ ๋“ฑ์„ ์ œ๊ณตํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ํ†ต๊ณ„ ๋ถ„์„์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค.

ํŒ๋‹ค์Šค๋Š” tabular ํ˜•ํƒœ์˜ data๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ชจ๋“ˆ

 

  ๐Ÿ”ฅ Pandas์˜ Data Frame ๊ตฌ์„ฑ

    - ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ DataFrame์ด๋ผ ํ•˜๊ณ  df๋กœ ์ค„์—ฌ์„œ ๋ถ€๋ฅธ๋‹ค.

    - ํ•œ Column์˜ ์—ด์„ Series๋ผ๊ณ  ๋ถ€๋ฆ„

 

  ๐Ÿ”ฅ Series - column vector๋กœ ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ object

     - index๋ฅผ ์ˆซ์ž ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜์–ด๋กœ๋„ ๊ฐ€๋Šฅ

    - astype() ํ•จ์ˆ˜๋กœ Series data type์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ.

    - values, index ๋“ฑ์˜ ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    - loc() : index location     /     iloc() : index position

 

-> loc์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์˜ ์ด๋ฆ„์„ ์ฐพ์•„๊ฐ€์„œ ์ž˜๋ผ์ค€๋‹ค

 

-> iloc์˜ ๊ฒฝ์šฐ๊ฐ€ ์›๋ž˜ list์—์„œ ์•Œ๊ณ ์žˆ๋Š” ์˜๋ฏธ๋กœ ์“ฐ์ธ๋‹ค

 

 

 

 

 

 

 

 

  ๐Ÿ”ฅ Data Frame - Series object๋ฅผ ๋ชจ์•„๋‘” ๊ฒƒ.

    - ๋Œ€๋ถ€๋ถ„ csvํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.(Dict type์œผ๋กœ๋„ data๋ฅผ ๋ถˆ๋Ÿฌ ์˜ฌ ์ˆ˜ ์žˆ์Œ)

    - del, drop()์œผ๋กœ column ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ del์˜ ๊ฒฝ์šฐ ์›๋ž˜์˜ df์— ์˜ํ–ฅ์„ ์ฃผ๊ณ  drop์˜ ๊ฒฝ์šฐ๋Š” inplace = true๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ์›๋ณธ df์— ์˜ํ–ฅ์„ ์คŒ

    - Selection

     โ”Œ> df["a"].read(3)  <-  ํ•œ๊ฐœ์˜ column ์„ ํƒ์‹œ(Seriesํ˜•ํƒœ๋กœ ์ถœ๋ ฅ)     <->  df[['a']]๋กœ ํ•˜๋ฉด Dataframeํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜

     โ””> df[['a', 'b', 'c',]].head(3) <- ์—ฌ๋Ÿฌ๊ฐœ์˜ column์„ dataframeํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜, head(3)์€ ์œ„์—์„œ 3๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ˜ํ™˜

 

      โ”Œ> df[:3] - column์ด ์•„๋‹Œ index๊ธฐ์ค€์œผ๋กœ row๊ฐ€ ๋ฐ˜ํ™˜

      โ””> df['a'][:3] - column๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ์‹œ, ํ•ด๋‹น column์˜ row๊ฐ€ ๋ฐ˜ํ™˜

 

      โ”Œ> df[['name', 'street']][:2]  -  column๊ณผ index number

      โ”œ> df.loc[['a', 'b']]['name', 'stree'] - column๊ณผ index name

      โ””> df.iloc[:2, :2] - column number ๊ณผ index number

 

     - Reindex

      -> df.index = list(range(0, 15)) - index ์ง€์ •(0~14)

      -> df.reset_index()  - index ์ดˆ๊ธฐํ™”(๋‹ค๋ฅธ ์ด๋ฆ„์˜ index์˜€๋”๋ผ๋„ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด index ์ง€์ •)

          โ””> drop = True ์‹œ, ๊ธฐ์กด index ์‚ญ์ œ

          โ””> inplace = True ์‹œ, data frame ์ž์ฒด๊ฐ€ ๋ณ€ํ˜•

 

    - drop(index, axis, inplace)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ column์„ ์‚ญ์ œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

 

  ๐Ÿ”ฅ Data Frame Operations

    - Series: add(+)๋กœ ๊ฐ™์€ ์ธ๋ฑ์Šค๋ผ๋ฆฌ ์—ฐ์‚ฐ(๋งŒ์•ฝ ๊ฒน์น˜๋Š” index๊ฐ€ ์—†๋‹ค๋ฉด NaN๊ฐ’ ๋ฐ˜ํ™˜)

    - data frame: add(+)๋กœ column๊ณผ index๋ชจ๋‘ ๊ณ ๋ คํ•ด ์—ฐ์‚ฐ

       โ””> add์—ฐ์‚ฐ์ž ์‚ฌ์šฉ์‹œ fill_value=0์„ ์‚ฌ์šฉํ•˜์—ฌ column๊ณผ row์˜ index๊ฐ€ ๋‹ฌ๋ผ๋„ 0์œผ๋กœ ๊ฐ„์ฃผ(sub, mul div ๋‹ค ๊ฐ€๋Šฅ)

    - Series + data frame: add๋กœ ๊ฐ€๋Šฅํ•˜๊ณ  Series๊ฐ€ broadcating๋˜์–ด ์—ฐ์‚ฐ๋œ๋‹ค

 

  ๐Ÿ”ฅ Map: function, dict, sequenceํ˜• ์ž๋ฃŒ๋“ฑ์œผ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅ(lambda ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

 

-> dictionary type์œผ๋กœ ๊ต์ฒด๊ฐ€ ๊ฐ€๋Šฅ(data ์—†๋‹ค๋ฉด NaN๊ฐ’)

 

 

 

-> ๊ฐ™์€ ์œ„์น˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์น˜ํ™˜

 

 

 

    - replace: Mapํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ ์ค‘ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜๋งŒ ๋‹ด๋‹นํ•˜๋Š” ํ•จ์ˆ˜ -> ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ์‹œ ๋งŽ์ด ์‚ฌ์šฉ

    - Apply: map๊ณผ ๋‹ฌ๋ฆฌ series ์ „์ฒด(column)์— ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋Š” ํ•จ์ˆ˜

      -> ์ž…๋ ฅ๊ฐ’์ด Series๋ฐ์ดํ„ฐ๋กœ ์ž…๋ ฅ๋ฐ›์•„ handling ๊ฐ€๋Šฅ

      -> ๋‚ด์žฅ ์—ฐ์‚ฐ ํ•จ์ˆ˜๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ(sum, mean, std ๋“ฑ)

      -> scalar๊ฐ’ ์ด์™ธ์— Series๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ

      -> element๋‹จ์œ„๋กœ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ

 

  ๐Ÿ”ฅ pandas built-in function

    - describe - numeric type ๋ฐ์ดํ„ฐ์˜ ์š”์•ฝ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์คŒ

    - unique - Series data์˜ ์œ ์ผํ•œ ๊ฐ’์„ list๋กœ ๋ฐ˜ํ™˜

    - sum - axis๋กœ column(0) ๋˜๋Š” row(1)๊ฐ’์˜ ์—ฐ์‚ฐ ์ง€์›(sub, mean, min, max, count, median, mad, var ๋“ฑ ์ง€์›)

    - is_null - column or row ๊ฐ’์˜ NaN๊ฐ’์˜ index๋ฅผ ๋ฐ˜ํ™˜(sum๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด NaN๊ฐ’์ด ๋ช‡๊ฐœ์ธ์ง€ ํŒŒ์•…)

    - sort_values - column ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ sorting(ascenting์„ ์‚ฌ์šฉํ•ด ์˜ค๋ฆ„(True)/๋‚ด๋ฆผ(False) ๊ฒฐ์ •)

 

    - correlation & covariance - ์ƒ๊ด€๊ณ„์ˆ˜์™€ ๊ณต๋ถ„์‚ฐ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜(corr, cov, corrwith - ์ „์ฒด์™€์˜ ๋น„๊ต)

 

๐Ÿ“ ๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต๋ฐฉ๋ฒ• ์ดํ•ดํ•˜๊ธฐ

      ๐Ÿ”ฅ ์„ ํ˜•๋ชจ๋ธ 

- ์œ„์˜ ์‹์„ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์˜†๊ณผ ๊ฐ™์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

- d๊ฐœ์˜ ๋ณ€์ˆ˜๋กœ p๊ฐœ์˜ ์„ ํ˜•๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด์„œ p๊ฐœ์˜ ์ž ์žฌ๋ณ€์ˆ˜๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ชจ๋ธ์„ ์ƒ์ƒํ•ด ๋ณผ์ˆ˜ ์žˆ๋‹ค.

- ์„ ์„ W๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  ๐Ÿ”ฅ Softmaxํ•จ์ˆ˜

    - ๋ถ„๋ฅ˜๋ฌธ์ œ๋ฅผ ํ’€๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์œผ๋กœ ๋ชจ๋ธ์˜ ์ถœ๋ ฅ์„ ํ™•๋ฅ ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€ํ˜•ํ•ด ์ฃผ๋Š” ์—ฐ์‚ฐ

      -> ex) [0, 1, 2]๋ฅผ softmax ์ทจํ•ด์ฃผ์—ˆ์„ ๋•Œ, [0, 0.34, 0.66]์ด ๋‚˜์˜ค๋Š” ๊ฒƒ

    - ์ถ”๋ก ์‹œ์—๋Š” One-hot encoding์„ ์‚ฌ์šฉํ•ด ์ตœ๋Œ€๊ฐ’์„ ๊ฐ€์ง„ ์ฃผ์†Œ๋งŒ ์ถœ๋ ฅํ•˜๋Š” ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•œ๋‹ค.(์ตœ๋Œ€๊ฐ’ - 1, ๋‚˜๋จธ์ง€ - 0)

exp๋Š” ์ง€์ˆ˜์Šน์„ ๋งํ•˜๋Š” ๊ฒƒ e^x

 

  ๐Ÿ”ฅ ์‹ ๊ฒฝ๋ง์„ ์ˆ˜์‹์œผ๋กœ ๋ถ„ํ•ดํ•ด๋ณด์ž

    - ๋ถ„๋ฅ˜(Classification)์—์„œ softmax๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋น„์„ ํ˜• ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ ์ ์ ˆํ•œ Activation Function(ํ™œ์„ฑ ํ•จ์ˆ˜)๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

    - ํ™œ์„ฑ ํ•จ์ˆ˜(Activation Function, sigma): ๋น„์„ ํ˜• ํ•จ์ˆ˜๋กœ ์ž ์žฌ๋ฒกํ„ฐ O=(O1, O2, ..., Op)์˜ ๊ฐ ๋…ธ๋“œ์— ๊ฐœ๋ณ„์ ์œผ๋กœ ์ ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ž ์žฌ๋ฒกํ„ฐ H=(sigma(O1), ..., sigma(Op))(๋‰ด๋Ÿฐ, Hidden vector๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ)๋ฅผ ๋งŒ๋“ฌ

      -> ํ™œ์„ฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋”ฅ๋Ÿฌ๋‹์€ ์„ ํ˜• ๋ชจํ˜•๊ณผ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.(๋”ฅ๋Ÿฌ๋‹์—์„œ๋Š” Relu๋ฅผ ๋งŽ์ด ์”€)

Activation Function ์ข…๋ฅ˜

 

    - ์‹ ๊ฒฝ๋ง์€ ์„ ํ˜•๋ชจ๋ธ๊ณผ ํ™œ์„ฑํ•จ์ˆ˜๋ฅผ ํ•ฉ์„ฑํ•œ ํ•จ์ˆ˜์ด๋‹ค.

 

  ๐Ÿ”ฅ MLP(Multi-Layer Perceptron, ๋‹ค์ธต ํผ์…‰ํŠธ๋ก )

    - ์‹ ๊ฒฝ๋ง์ด ์—ฌ๋Ÿฌ์ธต ํ•ฉ์„ฑ๋œ ํ•จ์ˆ˜

    - Parameter์˜ ๊ฐœ์ˆ˜๋Š” L๊ฐœ์˜ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ(w1, w2, ..., wl)๊ณผ biasํ–‰๋ ฌ(b1, b2, ..., bl)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

    - ์ˆœ์ฐจ์ ์œผ๋กœ ์‹ ๊ฒฝ๋ง์„ ๊ณ„์‚ฐํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ฉด Forward Propagation(์ˆœ์ „ํŒŒ)๋ผ๊ณ  ํ•˜๊ณ , ์ด ๊ณผ์ •์€ ํ•™์Šต์ด ์•„๋‹Œ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

  ๐Ÿ“Œ ์™œ ์ธต์„ ์—ฌ๋Ÿฌ๊ฐœ ์Œ“๋Š” ๊ฑด๊ฐ€์š”?

    - ์ด๋ก ์ ์œผ๋กœ๋Š” 2๊ฐœ์˜ ์ธต์œผ๋กœ๋„ ์ž„์˜์˜ ์—ฐ์†ํ•จ์ˆ˜๋ฅผ ๊ทผ์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค(Universial approximation theorem)

    - ํ•˜์ง€๋งŒ, ์ธต์ด ๊นŠ์–ด์ง€๋ฉด ๋ชฉ์ ํ•จ์ˆ˜์— ๊ทผ์‚ฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋‰ด๋Ÿฐ(๋…ธ๋“œ)์˜ ์ˆ˜์ž๊ฐ€ ํ›จ์”ฌ ๋นจ๋ฆฌ ์ค„์–ด๋“ค์–ด ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ํ•™์Šต์ด ๊ฐ€๋Šฅํ•˜๋‹ค. <-> ์ธต์ด ์–‡๋‹ค๋ฉด ๋‰ด๋ จ์˜ ์ˆ˜๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜ ๋„“์€ ์‹ ๊ฒฝ๋ง์ด ํ•„์š”ํ•˜๋‹ค.

    - ๊ทธ๋Ÿผ์—๋„ ์ธต์ด ๊นŠ์–ด์ง„๋‹ค๊ณ  ์ตœ์ ํ™”๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค(์˜คํžˆ๋ ค ํ•™์Šต์ด ์–ด๋ ค์šธ ์ˆ˜๋„ ์žˆ๋‹ค. ํ›„์˜ ํ•ฉ์„ฑ๊ณฑ ์‹ ๊ฒฝ๋ง์—์„œ ๋‹ค๋ฃธ)

 

  ๐Ÿ”ฅ ์—ญ์ „ํŒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Back-Propagation)

    - ๊ฐ ์ธต์— ์‚ฌ์šฉ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ {wl, bl}_l=1 ^L๋ฅผ ํ•™์Šต

    - ๊ฐ ์ธต ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ทธ๋ ˆ๋””์–ธํŠธ ๋ฒกํ„ฐ๋Š” ์œ—์ธต๋ถ€ํ„ฐ ์—ญ์ˆœ์œผ๋กœ ๊ณ„์‚ฐ    - ํ•ฉ์„ฑํ•จ์ˆ˜ ๋ฏธ๋ถ„๋ฒ•์ธ ์—ฐ์‡„๋ฒ•์น™(Chain-rule)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ๋ฏธ๋ถ„(Auto differentiation)์„ ์‚ฌ์šฉ    - ๊ฐ ๋…ธ๋“œ์˜ ํ…์„œ ๊ฐ’(๋‰ด๋Ÿฐ์˜ ๊ฐ’)์„ ์ปดํ“จํ„ฐ๊ฐ€ ๊ธฐ์–ตํ•ด์•ผ ๋ฏธ๋ถ„ ๊ณ„์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์ „ํŒŒ๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉ

Back-Propagation

 

 

์—ฐ์‡„ ๋ฒ•์น™(Chain-rule)

์—ญ์ „ํŒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜์ƒ
https://www.youtube.com/watch?v=573EZkzfnZ0