๐‘๐‘œ๐‘ก๐‘’๐‘๐‘œ๐‘œ๐‘˜

์ตœ๊ทผ์ ‘ ์ด์›ƒ ๋ณธ๋ฌธ

๋จธ์‹ ๋Ÿฌ๋‹ ๐Ÿฆพ

์ตœ๊ทผ์ ‘ ์ด์›ƒ

seoa__ 2025. 1. 23. 18:59

 

   [ ๋ชฉ์ฐจ ]

     

    ์ตœ๊ทผ์ ‘ ์ด์›ƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (KNN)

    : ์ฃผ๋ณ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ๋‚ด๊ฐ€ ์•Œ๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ฐฉ์‹

     

    • k=3 ์ด๋ผ๋ฉด ๋ณ„ 1๊ฐœ์™€ ์„ธ๋ชจ 2๊ฐœ์ด๋ฏ€๋กœ ? ๋Š” ์„ธ๋ชจ๋กœ ์˜ˆ์ธก๋  ๊ฒƒ
    • k=7 ์ด๋ผ๋ฉด ๋ณ„ 4๊ฐœ์™€ ์„ธ๋ชจ 3๊ฐœ์ด๋ฏ€๋กœ ? ๋Š” ๋ณ„๋กœ ์˜ˆ์ธก๋  ๊ฒƒ

    โœ”๏ธ ์œ„์™€ ๊ฐ™์ด ํ™•์ผํ•  ์ฃผ๋ณ€ ๋ฐ์ดํ„ฐ k๊ฐœ๋ฅผ ์„ ์ • ํ›„์— ๊ฑฐ๋ฆฌ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์€ ๊ฒƒ์œผ๋กœ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ knn์˜ ๊ธฐ๋ณธ ์›๋ฆฌ์ด๋‹ค ๊ทธ๋Ÿผ k๋Š” ๋ช‡์œผ๋กœ ์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฑธ๊นŒ? ๋˜ ๊ฑฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ์ธก์ • ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

     

    ํ•˜์ดํผ ํŒŒ์ด๋ฏธํ„ฐ์˜ ๊ฐœ๋…

    • ํŒŒ๋ผ๋ฏธํ„ฐ(Parameter): ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด ํ•™์Šต ๊ณผ์ •์—์„œ ์ถ”์ •ํ•˜๋Š” ๋‚ด๋ถ€ ๋ณ€์ˆ˜์ด๋ฉฐ ์ž๋™์œผ๋กœ ๊ฒฐ์ • ๋˜๋Š” ๊ฐ’
      • ex) ์„ ํ˜•ํšŒ๊ท€์—์„œ ๊ฐ€์ค‘์น˜์™€ ํŽธํ–ฅ
      • Python์—์„œ๋Š” ํ•จ์ˆ˜ ์ •์˜์—์„œ ํ•จ์ˆ˜๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ธ์ž(์ž…๋ ฅ ๊ฐ’)๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฐœ๋…
    • ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ(Hyper parameter): ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž๊ฐ€ ๊ธฐ๊ณ„ ํ•™์Šต ๋ชจ๋ธ ํ›ˆ๋ จ์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์™ธ๋ถ€ ๊ตฌ์„ฑ๋ณ€์ˆ˜์ด๋ฉฐ ๋ชจ๋ธ ํ•™์Šต๊ณผ์ •์ด๋‚˜ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ๋ฏธ์นจ
    ์—ฌ๊ธฐ์„œ Data Science ํ•™๋ฌธ๊ณผ ์—ฐ๊ด€๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋‹ค
    ๊ทผ๋ž˜์˜ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ ์ •ํ™•์„ฑ๊ณผ ๋™์‹œ์— ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•ด์„œ, ์™œ ์ข‹์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋Š”์ง€ ๊ทธ ์›๋ฆฌ๋Š” ์ •ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋“ ์š”. ์ด๋•Œ ๋ชจ๋ธ์˜ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊พธ๋ฉด์„œ ์ข‹์€ ํ‰๊ฐ€ ์ง€ํ‘œ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์‹คํ—˜ํ•˜๊ณ  ์›๋ฆฌ๋ฅผ ๋ฐํ˜€๋‚ด๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธ์Šค์˜ ๊ธฐ๋ฐ˜์ด๊ณ  ๊ณผํ•™์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋ถ™์€ ์ด์œ ์ด๋‹ค

     

    ๊ฑฐ๋ฆฌ์˜ ๊ฐœ๋…

    • 2์ฐจ์› ๊ทธ๋ž˜ํ”„์—์„œ ๋‘ ์ ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์‰ฌ์›Œ ๋ณด์ธ๋‹ค ( ์ง์„ ์˜ ๊ฑฐ๋ฆฌ๋ฅด ๊ตฌํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ)
    • ์šฐ๋ฆฌ๋Š” ๋‘ ์ ์˜ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ํ”ผํƒ€๊ณ ๋ผ์Šค์˜ ์ •๋ฆฌ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค โžก๏ธ ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ(Euclidean Distance)
    • ๊ทธ ์™ธ์—๋„ ๋งจํ•ดํŠผ ๊ฑฐ๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค ๊ฑฐ๋ฆฌ ๊ฐœ๋…์€ ๋ฐ์ดํ„ฐ๊ฐ„์˜ ์œ ์‚ฌ๋„๋ฅผ ์ธก์ •ํ•  ๋•Œ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๊ฐœ๋…์ด๋‹ˆ ํ•œ๋ฒˆ ์ดํ•ดํ•ด๋ณด๋Š” ๊ฑธ๋กœ !
    • ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ ๊ณต์‹

     

    ํ‘œ์ค€ํ™”๋Š” ํ•„์ˆ˜ โ€ผ๏ธ

    ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์œ„์˜ ์˜ํ–ฅ์„ ํฌ๊ฒŒ ๋ฐ›๋Š”๋‹ค
    ๋”ฐ๋ผ์„œ ํ”ผ์ฒ˜์— ๋Œ€ํ•œ ํ‘œ์ค€ํ™”๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ˆ˜๋ฐ˜๋˜์–ด์•ผ ํ•œ๋‹ค
    ์ด ๋ถ€๋ถ„์€ ๋ฐ์ดํ„ฐ๋ถ„์„ ํ”„๋กœ์„ธ์Šค - ์Šค์ผ€์ผ๋ง ๋ถ€๋ถ„ ์ฐธ๊ณ 

     

    knn ๋ชจ๋ธ์˜ ์ •๋ฆฌ

    • ์žฅ์ 
      • ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ง๊ด€์ 
      • ๋ชจ์ง‘๋‹จ์˜ ๊ฐ€์ •์ด๋‚˜ ํ˜•ํƒœ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์Œ
      • ํšŒ๊ท€, ๋ถ„๋ฅ˜ ๋ชจ๋‘ ๊ฐ€๋Šฅ
    • ๋‹จ์ 
      • ์ฐจ์› ์ˆ˜๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก ๊ณ„์‚ฐ๋Ÿ‰์ด ๋งŽ์•„์ง
      • ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”ผ์ฒ˜์˜ ํ‘œ์ค€ํ™”๊ฐ€ ํ•„์š”ํ•จ
    • Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
      • sklearn.neighbors.KNeighborsClassifier
      • sklearn.neighbors.KNeighborsRegressor

    ๋ถ€์ŠคํŒ… ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก 

    : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์•ฝํ•œ ํ•™์Šต๊ธฐ (weak learner)๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•™์Šตํ•˜๋ฉด์„œ ์ž˜๋ชป ์˜ˆ์ธกํ•œ ๋ฐ์ดํ„ฐ์— ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ๊ฐœ์„ ํ•ด๋‚˜๊ฐ€๋Š” ํ•™์Šต ๋ฐฉ์‹์ด๋‹ค

    • ๋นจ๊ฐ„์ƒ‰๊ณผ ์ดˆ๋ก์ƒ‰์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ 1๊ฐœ์˜ ์„ (learner)์œผ๋กœ ๊ตฌ๋ณ„๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค
    • ์ด๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ learner๋ฅผ ํ•ฉ์นœ ensemble์„ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค
    • ๋ถ€์ŠคํŒ… ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜
      • Gradient Boosting Model
        • ํŠน์ง•
          • ๊ฐ€์ค‘์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฒฝ์‚ฌํ•˜๊ฐ•๋ฒ• ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ง„ํ–‰
        • Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
          • sklearn.ensemble.GradientBoostingClassifier
          • sklearn.ensemble.GradientBoostingRegressor
      • XGBoost
        • ํŠน์ง•
          • ํŠธ๋ฆฌ๊ธฐ๋ฐ˜ ์•™์ƒ๋ธ” ๊ธฐ๋ฒ•์œผ๋กœ, ๊ฐ€์žฅ ๊ฐ๊ด‘๋ฐ›์œผ๋ฉฐ Kaggle์˜ ์ƒ์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜
          • ๋ณ‘๋ ฌํ•™์Šต์ด ๊ฐ€๋Šฅํ•ด ์†๋„๊ฐ€ ๋น ๋ฆ„
        • Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
          • xgboost.XGBRegressor
          • xgboost.XGBRegressor
      • LightGBM
        • ํŠน์ง•
          • XGBoost์™€ ํ•จ๊ป˜ ๊ฐ€์žฅ ๊ฐ๊ด‘๋ฐ›๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
          • XGBoost๋ณด๋‹ค ํ•™์Šต์‹œ๊ฐ„์ด ์งง๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ž‘์Œ
          • ์ž‘์€ ๋ฐ์ดํ„ฐ(10,000๊ฑด ์ดํ•˜)์˜ ๊ฒฝ์šฐ ๊ณผ์ ํ•ฉ ๋ฐœ์ƒ
        • Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
          • lightgbm.LGBMClassifier
          • lightgbm.LGBMRegressor