[{"data":1,"prerenderedAt":1016},["ShallowReactive",2],{"post-document:\u002Fdeep_learning\u002Fbasic\u002F2026\u002F09\u002F01\u002Fml-introduction\u002F":3},{"id":4,"title":5,"body":6,"categories":997,"date":1000,"description":1001,"extension":1002,"image":1003,"key_concepts":1003,"last_modified_at":1003,"legacyPath":1004,"meta":1005,"navigation":485,"part":1003,"path":1007,"published":485,"robots":1003,"seo":1008,"series":1003,"stem":1009,"strengths":1003,"summary":1010,"tags":1011,"tradeoffs":1003,"__hash__":1015},"posts\u002Fposts\u002FDeep_Learning\u002FBasic\u002FML_입문.md","머신러닝 입문",{"type":7,"value":8,"toc":983},"minimark",[9,14,25,33,39,45,51,54,58,64,67,73,76,82,85,91,94,98,104,107,112,115,121,126,129,135,138,141,145,150,153,156,161,164,170,173,176,179,185,189,195,198,201,207,210,215,219,225,228,232,237,240,244,249,252,258,261,265,270,273,279,282,286,289,292,295,301,304,310,313,318,321,325,331,335,338,381,384,387,391,397,400,404,407,413,416,426,429,444,450,453,459,590,593,598,601,615,618,622,628,633,637,642,648,651,656,659,662,676,679,683,686,691,695,698,704,707,713,716,722,726,729,735,740,746,749,753,759,764,767,773,776,782,785,788,800,809,813,816,821,827,830,833,836,839,843,846,849,853,856,859,865,871,874,880,884,962,966,969,975,979],[10,11,13],"h1",{"id":12},"_1-입문","1. 입문",[15,16,22],"pre",{"className":17,"code":19,"language":20,"meta":21},[18],"language-text","Artificial Intelligence\n  → Machine Learning\n    → Deep Learning\n","text","",[23,24,19],"code",{"__ignoreMap":21},[26,27,28,32],"p",{},[29,30,31],"strong",{},"AI","는 인간의 지능적인 행동을 컴퓨터로 구현한다는 큰 목표다.",[26,34,35,38],{},[29,36,37],{},"ML","은 사람이 모든 규칙을 직접 작성하지 않고 데이터에서 규칙을 학습하게 하는 방법이다.",[26,40,41,44],{},[29,42,43],{},"DL","은 Neural Network를 깊게 쌓아서 복잡한 패턴을 학습하는 ML 방법이다.",[46,47,48],"blockquote",{},[26,49,50],{},"규칙을 사람이 만드는 것이 아니라 데이터로부터 규칙을 찾아내는 것",[26,52,53],{},"사람과 같은 AI를 만들기 위해서는, 사람과 같은 학습과정을 거쳐야 하는 것일까?",[10,55,57],{"id":56},"_2-정확히-무엇을-학습하는-것일까","2. 정확히 무엇을 학습하는 것일까?",[15,59,62],{"className":60,"code":61,"language":20,"meta":21},[18],"Task        T: 무엇을 해야 하는가?\nExperience  E: 무엇을 보고 배우는가?\nPerformance P: 얼마나 잘하는가?\n",[23,63,61],{"__ignoreMap":21},[26,65,66],{},"그렇다면,",[15,68,71],{"className":69,"code":70,"language":20,"meta":21},[18],"Experience가 쌓이면서\n  ↓\nPerformance가 좋아진다면\n  ↓\nLearning이 발생했다.\n",[23,72,70],{"__ignoreMap":21},[26,74,75],{},"예를 들어 스팸 메일 분류라면 다음과 같다.",[15,77,80],{"className":78,"code":79,"language":20,"meta":21},[18],"T = 이메일을 Spam \u002F Normal로 분류\nE = 과거 이메일 100,000개\nP = Accuracy, F1 Score\n",[23,81,79],{"__ignoreMap":21},[26,83,84],{},"처음에는 Accuracy가 70%였는데 데이터를 이용해 학습한 뒤 95%가 되었다면,",[15,86,89],{"className":87,"code":88,"language":20,"meta":21},[18],"70% → 95%\n",[23,90,88],{"__ignoreMap":21},[26,92,93],{},"즉, Experience를 이용해서 Task 수행 능력이 향상된 것이다. 이게 머신러닝에서 말하는 Learning이다.",[10,95,97],{"id":96},"_3-통계와-machine-learning의-관점-차이","3. 통계와 Machine Learning의 관점 차이",[15,99,102],{"className":100,"code":101,"language":20,"meta":21},[18],"Statistics\n  사람\n    ↓\n  가설 설정\n    ↓\n  데이터\n    ↓\n  가설 검증\n",[23,103,101],{"__ignoreMap":21},[26,105,106],{},"가설을 사람이 세우고 통계적 방법론을 이용해서 가설을 검증한다.",[46,108,109],{},[26,110,111],{},"Human Driven Approach",[26,113,114],{},"반대로 Machine Learning에서는 다음과 같이 접근한다.",[15,116,119],{"className":117,"code":118,"language":20,"meta":21},[18],"Machine Learning\n  데이터\n    ↓\n  패턴 탐색\n    ↓\n  관계 발견\n    ↓\n  예측\n",[23,120,118],{"__ignoreMap":21},[46,122,123],{},[26,124,125],{},"\"반드시 소득이 중요할 것이다.\"",[26,127,128],{},"사람이 중요할 변수를 미리 결정하지 않고 데이터를 넣어놓는다.",[15,130,133],{"className":131,"code":132,"language":20,"meta":21},[18],"나이\n소득\n직업\n지역\n검색 기록\n구매 기록\n...\n",[23,134,132],{"__ignoreMap":21},[26,136,137],{},"이 중 무엇이 중요한지 모델이 찾아간다.",[26,139,140],{},"그래서 Data Driven Approach라고 표현한다. 중요한 것은 Statistics와 Machine Learning의 우열이 아니라 문제를 바라보는 관점의 차이다.",[10,142,144],{"id":143},"_4-머신러닝-문제는-일단-classification과-regression부터-구분","4. 머신러닝 문제는 일단 Classification과 Regression부터 구분",[46,146,147],{},[26,148,149],{},"내가 예측하려는 Y가 무엇인가?",[26,151,152],{},"이게 가장 중요한 목표다.",[26,154,155],{},"교재에서는 이를 Classification과 Regression으로 구분한다.",[157,158,160],"h2",{"id":159},"classification","Classification",[26,162,163],{},"정답이 Class다.",[15,165,168],{"className":166,"code":167,"language":20,"meta":21},[18],"대출 승인 \u002F 거절\n정상 \u002F 불량\n고양이 \u002F 개\n포트홀 \u002F 정상 도로\n",[23,169,167],{"__ignoreMap":21},[26,171,172],{},"즉,",[26,174,175],{},"[\nY=\\text{discrete value}\n]",[26,177,178],{},"모델이 찾는 것은 Decision Boundary",[15,180,183],{"className":181,"code":182,"language":20,"meta":21},[18],"         ● ● ●\n\n------------- Decision Boundary\n\n  ▲ ▲ ▲\n",[23,184,182],{"__ignoreMap":21},[157,186,188],{"id":187},"regression","Regression",[15,190,193],{"className":191,"code":192,"language":20,"meta":21},[18],"아파트 가격 = 8.4억\n내일 온도 = 27.3℃\n배송 시간 = 32.5분\n매출 = 123억\n",[23,194,192],{"__ignoreMap":21},[26,196,197],{},"[\nY=\\text{continuous value}\n]",[26,199,200],{},"Best Fit",[15,202,205],{"className":203,"code":204,"language":20,"meta":21},[18],"Y\n│         ●\n│      ●\n│    ●\n│  ●\n│●\n└──────── X\n     \u002F\n    \u002F\n Best Fit\n",[23,206,204],{"__ignoreMap":21},[26,208,209],{},"따라서 가장 먼저 묻는 습관을 들이자",[46,211,212],{},[26,213,214],{},"내가 예측하려는 (Y)가 Class인가? Number인가?",[10,216,218],{"id":217},"_5-머신러닝의-실제-학습-구조","5. 머신러닝의 실제 학습 구조",[15,220,223],{"className":221,"code":222,"language":20,"meta":21},[18],"전체 Dataset\n     │\n     ├── Train\n     │\n     ├── Validation\n     │\n     └── Test\n",[23,224,222],{"__ignoreMap":21},[26,226,227],{},"각각의 역할이 좀 다르다.",[157,229,231],{"id":230},"train","Train",[46,233,234],{},[26,235,236],{},"모델이 공부하는 문제집",[26,238,239],{},"모델의 Parameter를 학습한다.",[157,241,243],{"id":242},"validation","Validation",[46,245,246],{},[26,247,248],{},"모의고사",[26,250,251],{},"모델 구조와 Hyperparameter를 선택한다.",[15,253,256],{"className":254,"code":255,"language":20,"meta":21},[18],"Decision Tree depth = 5?\nDecision Tree depth = 10?\nDecision Tree depth = 20?\n",[23,257,255],{"__ignoreMap":21},[26,259,260],{},"Validation 성능을 보고 결정한다.",[157,262,264],{"id":263},"test","Test",[46,266,267],{},[26,268,269],{},"수능",[26,271,272],{},"최종 모델의 성능을 평가한다.",[15,274,277],{"className":275,"code":276,"language":20,"meta":21},[18],"Train\n  ↓\nModel training\n  ↓\nValidation\n  ↓\nHyperparameter tuning\n  ↓\n최종 Model\n  ↓\nTest\n",[23,278,276],{"__ignoreMap":21},[26,280,281],{},"Test 데이터로 튜닝하면 안 된다.\nTest까지 보고 계속 모델을 고쳐버리면 Test 데이터도 사실상 학습에 사용한 것이 된다.",[10,283,285],{"id":284},"_6-왜-이렇게-귀찮게-데이터를-나누는가","6. 왜 이렇게 귀찮게 데이터를 나누는가?",[26,287,288],{},"바로 Overfitting 때문이다.",[26,290,291],{},"Overfitting은 Training Dataset을 너무 잘 외워버리는 현상이다.",[26,293,294],{},"예를 들어",[15,296,299],{"className":297,"code":298,"language":20,"meta":21},[18],"모의고사 문제\n  100문제 암기\n\n모의고사 → 100점\n\n수능\n  새로운 문제 등장\n\n→ 50점\n",[23,300,298],{"__ignoreMap":21},[26,302,303],{},"ML도 같다.",[15,305,308],{"className":306,"code":307,"language":20,"meta":21},[18],"Train Accuracy = 99%\nValidation Accuracy = 75%\nTest Accuracy = 72%\n",[23,309,307],{"__ignoreMap":21},[26,311,312],{},"이러면 학습이 쓸모 없지 않은가?",[46,314,315],{},[26,316,317],{},"새로운 데이터에서도 성능 유지",[26,319,320],{},"하는 것이 목표다.",[10,322,324],{"id":323},"_7-머신러닝의-세-가지-learning-type","7. 머신러닝의 세 가지 Learning Type",[15,326,329],{"className":327,"code":328,"language":20,"meta":21},[18],"Machine Learning\n  ├── Supervised Learning\n  ├── Semi-Supervised Learning\n  └── Unsupervised Learning\n",[23,330,328],{"__ignoreMap":21},[157,332,334],{"id":333},"supervised-learning","Supervised Learning",[26,336,337],{},"(X)와 (Y)가 모두 존재한다.",[339,340,341,354],"table",{},[342,343,344],"thead",{},[345,346,347,351],"tr",{},[348,349,350],"th",{},"이미지",[348,352,353],{},"Label",[355,356,357,366,374],"tbody",{},[345,358,359,363],{},[360,361,362],"td",{},"이미지1",[360,364,365],{},"고양이",[345,367,368,371],{},[360,369,370],{},"이미지2",[360,372,373],{},"개",[345,375,376,379],{},[360,377,378],{},"이미지3",[360,380,365],{},[26,382,383],{},"모델은 (X \\rightarrow Y)를 학습한다.",[26,385,386],{},"Classification과 Regression이 대표적",[157,388,390],{"id":389},"unsupervised-learning","Unsupervised Learning",[15,392,395],{"className":393,"code":394,"language":20,"meta":21},[18],"Customer Data\n\n        ● ●\n     ● ● ●\n\n\n                  ▲ ▲\n               ▲ ▲ ▲\n\n\n        ■ ■\n      ■ ■\n\nCluster A\nCluster B\nCluster C\n",[23,396,394],{"__ignoreMap":21},[26,398,399],{},"처럼 그룹을 발견한다. 교재에서는 Clustering, Estimation, Dimension Reduction을 설명한다.",[157,401,403],{"id":402},"semi-supervised-learning","Semi-Supervised Learning",[26,405,406],{},"현실에서는 다음과 같은 상황이 많다.",[15,408,411],{"className":409,"code":410,"language":20,"meta":21},[18],"Labeled Data = 1,000개\nUnlabeled Data = 1,000,000개\n",[23,412,410],{"__ignoreMap":21},[26,414,415],{},"예를 들어 고양이와 강아지 사진이 있다고 해보자.",[417,418,419,423],"ul",{},[420,421,422],"li",{},"정답 있는 사진 100장: 고양이, 강아지 표시가 있음",[420,424,425],{},"정답 없는 사진 10,000장: 사진만 있고 정답은 없음",[26,427,428],{},"가장 단순한 사용 방법은 의사 라벨링이다.",[430,431,432,435,438,441],"ol",{},[420,433,434],{},"정답 있는 100장으로 모델을 먼저 학습합니다.",[420,436,437],{},"학습한 모델에게 정답 없는 사진을 보여줍니다.",[420,439,440],{},"모델이 확신하는 사진에 임시 정답을 붙입니다.",[420,442,443],{},"원래 데이터와 임시 정답 데이터를 합쳐 다시 학습합니다.",[15,445,448],{"className":446,"code":447,"language":20,"meta":21},[18],"정답 있는 데이터 100장\n  ↓\n초기 모델 학습\n  ↓\n정답 없는 데이터 10,000장 예측\n  ↓\n확신도가 높은 결과만 선택\n  ↓\n원래 정답 + 임시 정답으로 재학습\n",[23,449,447],{"__ignoreMap":21},[26,451,452],{},"예를 들어 모델의 예측 결과가 다음과 같다면..",[15,454,457],{"className":455,"code":456,"language":20,"meta":21},[18],"사진 A → 고양이 98%\n사진 B → 강아지 95%\n사진 C → 고양이 55%\n",[23,458,456],{"__ignoreMap":21},[15,460,464],{"className":461,"code":462,"language":463,"meta":21,"style":21},"language-python shiki shiki-themes github-light github-dark","# 1. 정답 있는 데이터로 먼저 학습\nmodel.fit(labeled_x, labeled_y)\n\n# 2. 정답 없는 데이터 예측\nprobabilities = model.predict_proba(unlabeled_x)\n\n# 3. 가장 가능성 높은 정답과 확률\npseudo_labels = probabilities.argmax(axis=1)\nconfidence = probabilities.max(axis=1)\n\n# 4. 확신도 90% 이상인 데이터만 선택\nmask = confidence >= 0.9\n\nselected_x = unlabeled_x[mask]\nselected_y = pseudo_labels[mask]\n\n# 5. 원래 데이터와 합쳐 다시 학습\nnew_x = concatenate([labeled_x, selected_x])\nnew_y = concatenate([labeled_y, selected_y])\n\nmodel.fit(new_x, new_y)\n","python",[23,465,466,474,480,487,493,499,504,510,516,522,527,533,539,544,550,556,561,567,573,579,584],{"__ignoreMap":21},[467,468,471],"span",{"class":469,"line":470},"line",1,[467,472,473],{},"# 1. 정답 있는 데이터로 먼저 학습\n",[467,475,477],{"class":469,"line":476},2,[467,478,479],{},"model.fit(labeled_x, labeled_y)\n",[467,481,483],{"class":469,"line":482},3,[467,484,486],{"emptyLinePlaceholder":485},true,"\n",[467,488,490],{"class":469,"line":489},4,[467,491,492],{},"# 2. 정답 없는 데이터 예측\n",[467,494,496],{"class":469,"line":495},5,[467,497,498],{},"probabilities = model.predict_proba(unlabeled_x)\n",[467,500,502],{"class":469,"line":501},6,[467,503,486],{"emptyLinePlaceholder":485},[467,505,507],{"class":469,"line":506},7,[467,508,509],{},"# 3. 가장 가능성 높은 정답과 확률\n",[467,511,513],{"class":469,"line":512},8,[467,514,515],{},"pseudo_labels = probabilities.argmax(axis=1)\n",[467,517,519],{"class":469,"line":518},9,[467,520,521],{},"confidence = probabilities.max(axis=1)\n",[467,523,525],{"class":469,"line":524},10,[467,526,486],{"emptyLinePlaceholder":485},[467,528,530],{"class":469,"line":529},11,[467,531,532],{},"# 4. 확신도 90% 이상인 데이터만 선택\n",[467,534,536],{"class":469,"line":535},12,[467,537,538],{},"mask = confidence >= 0.9\n",[467,540,542],{"class":469,"line":541},13,[467,543,486],{"emptyLinePlaceholder":485},[467,545,547],{"class":469,"line":546},14,[467,548,549],{},"selected_x = unlabeled_x[mask]\n",[467,551,553],{"class":469,"line":552},15,[467,554,555],{},"selected_y = pseudo_labels[mask]\n",[467,557,559],{"class":469,"line":558},16,[467,560,486],{"emptyLinePlaceholder":485},[467,562,564],{"class":469,"line":563},17,[467,565,566],{},"# 5. 원래 데이터와 합쳐 다시 학습\n",[467,568,570],{"class":469,"line":569},18,[467,571,572],{},"new_x = concatenate([labeled_x, selected_x])\n",[467,574,576],{"class":469,"line":575},19,[467,577,578],{},"new_y = concatenate([labeled_y, selected_y])\n",[467,580,582],{"class":469,"line":581},20,[467,583,486],{"emptyLinePlaceholder":485},[467,585,587],{"class":469,"line":586},21,[467,588,589],{},"model.fit(new_x, new_y)\n",[26,591,592],{},"와 같은 방법을 사용한다.",[594,595,597],"h3",{"id":596},"언제-사용하면-좋은가","언제 사용하면 좋은가?",[26,599,600],{},"정답을 붙이는 작업이 비쌀 때 유용하다.",[417,602,603,606,609,612],{},[420,604,605],{},"의료 영상: 의사가 직접 진단 라벨을 붙여야 함",[420,607,608],{},"고객 문의: 사람이 문의 유형을 분류해야 함",[420,610,611],{},"불량품 이미지: 전문가가 정상과 불량을 판별해야 함",[420,613,614],{},"음성 데이터: 사람이 직접 내용을 받아써야 함",[26,616,617],{},"다만 초기 모델이 틀린 임시 정답을 만들면 그 오답을 다시 학습하면서 성능이 나빠질 수도 있다. 그래서 보통 확신도가 높은 예측만 사용하고, 별도의 검증 데이터로 실제 성능을 확인한다.",[10,619,621],{"id":620},"_8-주요-머신러닝-모델","8. 주요 머신러닝 모델",[15,623,626],{"className":624,"code":625,"language":20,"meta":21},[18],"Tree-based\n  ├── Decision Tree\n  ├── Random Forest\n  └── Boosting\n\nKernel-based\n  └── SVM\n\nRegularization\n  ├── LASSO\n  └── Ridge\n",[23,627,625],{"__ignoreMap":21},[46,629,630],{},[26,631,632],{},"철학을 이해하는 게 중요",[10,634,636],{"id":635},"_9-decision-tree","9. Decision Tree",[46,638,639],{},[26,640,641],{},"질문을 계속 던져 데이터를 점점 순수한 집단으로 나눈다.",[15,643,646],{"className":644,"code":645,"language":20,"meta":21},[18],"날씨가 맑은가?\n├── Yes\n│   └── 습도가 높은가?\n│       ├── Yes → 테니스 X\n│       └── No  → 테니스 O\n│\n└── No\n    └── ...\n",[23,647,645],{"__ignoreMap":21},[26,649,650],{},"사람이 if-else를 작성한 것처럼 보이지만, 중요한 차이는 다음과 같다.",[46,652,653],{},[26,654,655],{},"어떤 질문을 어떤 순서로 할지를 데이터가 결정",[26,657,658],{},"교재도 이를 \"조건 → 판단 → 결론\" 과정에서 조건과 판단을 데이터로 자동 생성한다고 설명한다.",[26,660,661],{},"Decision Tree의 장점은 아주 명확하다.",[417,663,664,667,670,673],{},[420,665,666],{},"해석하기 쉽다.",[420,668,669],{},"설명하기 쉽다.",[420,671,672],{},"Feature Importance를 볼 수 있다.",[420,674,675],{},"전처리 부담이 비교적 적다.",[26,677,678],{},"반면 깊어질수록 Overfitting이 쉽게 발생한다.",[10,680,682],{"id":681},"_10-gini와-entropy","10. Gini와 Entropy",[26,684,685],{},"Decision Tree가 가장 중요하게 생각하는 것은",[46,687,688],{},[26,689,690],{},"어디를 잘라야 가장 잘 나뉘는가?",[10,692,694],{"id":693},"_11-random-forest","11. Random Forest",[26,696,697],{},"Decision Tree의 문제는",[15,699,702],{"className":700,"code":701,"language":20,"meta":21},[18],"Tree 하나\n  → 데이터가 조금만 바뀌어도 구조가 크게 달라질 수 있음\n",[23,703,701],{"__ignoreMap":21},[26,705,706],{},"트리 하나를 믿지 말고 여러 트리의 의견을 모으자.",[15,708,711],{"className":709,"code":710,"language":20,"meta":21},[18],"Tree1 → A\nTree2 → A\nTree3 → B\nTree4 → A\nTree5 → B\n\nVoting\n\n→ A\n",[23,712,710],{"__ignoreMap":21},[26,714,715],{},"교재에서는 Random Subset을 이용해 여러 Random Tree를 만들고, 결과를 Voting, Bagging 방식으로 결합한다고 설명한다.",[15,717,720],{"className":718,"code":719,"language":20,"meta":21},[18],"Decision Tree\n  ↓\n불안정\n\nRandom Forest\n  ↓\n여러 Tree 평균\n  ↓\nVariance 감소\n  ↓\n안정성 증가\n",[23,721,719],{"__ignoreMap":21},[10,723,725],{"id":724},"_12-boosting","12. Boosting",[26,727,728],{},"Random Forest와 Boosting은 Tree 여러 개를 사용한다는 점에서는 비슷하지만 철학이 다르다.",[15,730,733],{"className":731,"code":732,"language":20,"meta":21},[18],"Random Forest\n\nTree1\nTree2\nTree3\nTree4\n\n동시에\u002F독립적으로 학습\n\n→ Voting\n\nBoosting\n\nTree1\n ↓\n틀린 문제 확인\n ↓\nTree2가 보완\n ↓\n또 틀린 문제 확인\n ↓\nTree3가 보완\n",[23,734,732],{"__ignoreMap":21},[46,736,737],{},[26,738,739],{},"이전 모델의 실수를 다음 모델이 계속 고친다.",[15,741,744],{"className":742,"code":743,"language":20,"meta":21},[18],"XGBoost\n  → 강력한 범용 Boosting\n\nLightGBM\n  → 큰 데이터, 빠른 학습\n\nCatBoost\n  → 범주형 Feature 처리에 강점\n",[23,745,743],{"__ignoreMap":21},[26,747,748],{},"교재는 CatBoost가 범주형 데이터를 전처리 없이 직접 처리할 수 있고, Ordered Boosting을 사용한다고 설명한다.",[10,750,752],{"id":751},"_13-svm은-tree와-사고방식이-완전히-다르다","13. SVM은 Tree와 사고방식이 완전히 다르다",[15,754,757],{"className":755,"code":756,"language":20,"meta":21},[18],"○ ○ ○     |        ● ● ●\n ○ ○      |       ● ●\n          |\n        boundary\n",[23,758,756],{"__ignoreMap":21},[46,760,761],{},[26,762,763],{},"두 집단에서 가능한 한 멀리 떨어진 경계",[26,765,766],{},"즉, Maximum Margin이다.",[15,768,771],{"className":769,"code":770,"language":20,"meta":21},[18],"○ ○ ○ ○ ○\n○ ● ● ● ○\n○ ● ● ● ○\n○ ○ ○ ○ ○\n",[23,772,770],{"__ignoreMap":21},[26,774,775],{},"이러면 2차원에서는 나누는 게 불가능하다.",[15,777,780],{"className":778,"code":779,"language":20,"meta":21},[18],"2D\n  ↓ Kernel\n고차원 Feature Space\n  ↓\nLinear separation\n",[23,781,779],{"__ignoreMap":21},[26,783,784],{},"이것이 Kernel Trick의 핵심 아이디어다.",[26,786,787],{},"중요한 Hyperparameter는 다음과 같다.",[417,789,790,795],{},[420,791,792],{},[23,793,794],{},"C",[420,796,797],{},[23,798,799],{},"gamma",[26,801,802,803,805,806,808],{},"교재에서는 ",[23,804,799],{},"가 샘플 간 거리에 얼마나 민감한지를 조절하고, ",[23,807,794],{},"는 오분류에 얼마나 큰 Penalty를 줄지를 조절한다고 설명한다.",[10,810,812],{"id":811},"_14-regularization","14. Regularization",[26,814,815],{},"Regularization의 철학은",[46,817,818],{},[26,819,820],{},"모델에게 너무 자유롭게 공부하지 못하도록 제약을 걸어주는 것",[15,822,825],{"className":823,"code":824,"language":20,"meta":21},[18],"모델 자유도 ↑\n  ↓\nTrain 데이터를 지나치게 잘 fitting\n  ↓\nOverfitting\n",[23,826,824],{"__ignoreMap":21},[26,828,829],{},"그래서",[26,831,832],{},"[\n\\text{Loss}+\\text{Penalty}\n]",[26,834,835],{},"를 사용한다.",[26,837,838],{},"교재도 Regularization을 모델의 Parameter나 구조에 의도적으로 제한을 가해 복잡도와 Overfitting을 억제하는 방법이라고 설명한다.",[157,840,842],{"id":841},"l1-lasso","L1: LASSO",[26,844,845],{},"[\n\\text{Penalty}=|w_1|+|w_2|+\\cdots\n]",[26,847,848],{},"가중치 일부를 아예 (w=0)으로 만들어서 Feature Selection 효과를 만든다.",[157,850,852],{"id":851},"l2-ridge","L2: Ridge",[26,854,855],{},"[\n\\text{Penalty}=w_1^2+w_2^2+\\cdots\n]",[26,857,858],{},"가중치를 없애지는 않지만 전체적으로 작게 만든다.",[15,860,863],{"className":861,"code":862,"language":20,"meta":21},[18],"10\n  ↓\n3\n  ↓\n1\n  ↓\n0.3\n",[23,864,862],{"__ignoreMap":21},[15,866,869],{"className":867,"code":868,"language":20,"meta":21},[18],"발표 슬라이드 30장 → 5장 제한\n\nL1\n  → 필요 없는 슬라이드 삭제\n\nL2\n  → 모든 슬라이드를 조금씩 줄여서 정리\n",[23,870,868],{"__ignoreMap":21},[26,872,873],{},"그래서 다음과 같이 기억하면 쉽다.",[15,875,878],{"className":876,"code":877,"language":20,"meta":21},[18],"LASSO\n  → Feature를 없앨 수 있음\n\nRidge\n  → Feature는 유지하면서 Weight를 줄임\n",[23,879,877],{"__ignoreMap":21},[10,881,883],{"id":882},"_15-결국-알고리즘을-어떻게-골라야-하는가","15. 결국 알고리즘을 어떻게 골라야 하는가?",[339,885,886,896],{},[342,887,888],{},[345,889,890,893],{},[348,891,892],{},"상황",[348,894,895],{},"먼저 생각할 모델",[355,897,898,906,914,922,930,938,946,954],{},[345,899,900,903],{},[360,901,902],{},"설명 가능성이 매우 중요",[360,904,905],{},"Decision Tree",[345,907,908,911],{},[360,909,910],{},"안정적인 baseline",[360,912,913],{},"Random Forest",[345,915,916,919],{},[360,917,918],{},"정형 데이터 최고 성능 경쟁",[360,920,921],{},"XGBoost",[345,923,924,927],{},[360,925,926],{},"매우 큰 정형 데이터",[360,928,929],{},"LightGBM",[345,931,932,935],{},[360,933,934],{},"범주형 변수가 많음",[360,936,937],{},"CatBoost",[345,939,940,943],{},[360,941,942],{},"고차원 + 적은 데이터",[360,944,945],{},"SVM",[345,947,948,951],{},[360,949,950],{},"중요한 변수만 남기고 싶음",[360,952,953],{},"LASSO",[345,955,956,959],{},[360,957,958],{},"모든 변수를 유지하면서 규제",[360,960,961],{},"Ridge",[10,963,965],{"id":964},"ml에서-중요한-것","ML에서 중요한 것",[26,967,968],{},"교재에서는 실제 머신러닝 프로젝트에서 모델링 전 단계에 상당한 노력이 필요하다고 강조한다. Target, Feature 정의, 데이터 추출, 정제, Missing, Outlier 처리, Feature Extraction, Selection 등이 포함된다.",[15,970,973],{"className":971,"code":972,"language":20,"meta":21},[18],"좋은 Algorithm\n≠\n좋은 ML System\n\n오히려\n\n문제 정의\n  → 좋은 데이터\n  → Feature\n  → 적절한 알고리즘\n  → 평가\n  → 현업 활용\n",[23,974,972],{"__ignoreMap":21},[10,976,978],{"id":977},"_2장","----- 2장",[980,981,982],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":21,"searchDepth":476,"depth":476,"links":984},[985,986,987,988,989,990,991,992,995,996],{"id":159,"depth":476,"text":160},{"id":187,"depth":476,"text":188},{"id":230,"depth":476,"text":231},{"id":242,"depth":476,"text":243},{"id":263,"depth":476,"text":264},{"id":333,"depth":476,"text":334},{"id":389,"depth":476,"text":390},{"id":402,"depth":476,"text":403,"children":993},[994],{"id":596,"depth":482,"text":597},{"id":841,"depth":476,"text":842},{"id":851,"depth":476,"text":852},[998,999],"Deep_Learning","Basic","2026-09-01 00:00:00 +0900","머신러닝의 기본 개념과 데이터 분할, 학습 유형, Tree 기반 모델, SVM, Regularization을 정리한다.","md",null,"\u002Fdeep_learning\u002Fbasic\u002F2026\u002F09\u002F01\u002Fml-introduction\u002F",{"layout":1006},"post","\u002Fposts\u002Fdeep_learning\u002Fbasic\u002Fml_",{"title":5,"description":1001},"posts\u002FDeep_Learning\u002FBasic\u002FML_입문","머신러닝 문제 정의부터 주요 알고리즘을 선택하는 기준까지 입문 개념을 정리한다.",[1012,1013,160,188,1014,945],"Deep Learning","Machine Learning","Tree","v82FWzSbAltPtvwFhB3TiEFiDR9o1awvEmSFfH3rfx8",1788744788641]