<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>nin_cheon.log</title>
        <link>https://velog.io/</link>
        <description>Data_Analyst</description>
        <lastBuildDate>Sun, 22 Jun 2025 08:05:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>nin_cheon.log</title>
            <url>https://velog.velcdn.com/images/nin_cheon/profile/082cea39-5221-4818-933e-98874c244a45/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. nin_cheon.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/nin_cheon" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[einforcement learning introduction + State-action value function + Continuous state spaces]]></title>
            <link>https://velog.io/@nin_cheon/einforcement-learning-introduction-State-action-value-function-Continuous-state-spaces</link>
            <guid>https://velog.io/@nin_cheon/einforcement-learning-introduction-State-action-value-function-Continuous-state-spaces</guid>
            <pubDate>Sun, 22 Jun 2025 08:05:53 GMT</pubDate>
            <description><![CDATA[<h2 id="1-reinforcement-learning-개요">1. Reinforcement Learning 개요</h2>
<p><strong>정의:</strong> 보상 <a>R</a> 만을 지도 신호로 받아, 에이전트가 스스로 <a>정책</a>(π)을 학습해 장기 <a>수익</a> (누적 보상)을 최대화</p>
<hr>
<h2 id="2-markov-decision-process-mdp">2. Markov Decision Process (MDP)</h2>
<table>
<thead>
<tr>
<th>요소</th>
<th>기호</th>
<th>설명</th>
</tr>
</thead>
<tbody><tr>
<td><a>상태</a></td>
<td><code>s ∈ S</code></td>
<td>환경 관측치</td>
</tr>
<tr>
<td><a>행동</a></td>
<td><code>a ∈ A</code></td>
<td>의사결정</td>
</tr>
<tr>
<td><a>보상</a></td>
<td><code>R(s)</code></td>
<td>즉시 수치</td>
</tr>
<tr>
<td><a>전이확률</a></td>
<td><code>P(s&#39;│s,a)</code></td>
<td>다음 상태 분포</td>
</tr>
<tr>
<td><a>할인인자</a></td>
<td><code>0&lt;γ&lt;1</code></td>
<td>미래 보상 현재 가치</td>
</tr>
</tbody></table>
<hr>
<h2 id="3-return수익">3. Return(수익)</h2>
<p>$$
G_t = \sum_{k=0}^{T} \gamma^{k} R_{t+k+1}
$$</p>
<ul>
<li>결정적 MDP: 하나의 $$(G_t)$$ 최적화  </li>
<li>확률적 MDP: $$(\mathbb{E}[G_t])$$ 최적화</li>
</ul>
<hr>
<h2 id="4-bellman-equation-기본형">4. Bellman Equation (기본형)</h2>
<p>$$
Q^{\pi}(s,a)=R(s)+\gamma,
\mathbb{E}<em>{s&#39;}\Big[\max</em>{a&#39;}Q^{\pi}(s&#39;,a&#39;)\Big]
$$</p>
<hr>
<h2 id="5-가치-함수--최적-정책">5. 가치 함수 &amp; 최적 정책</h2>
<ul>
<li><strong>상태–행동 가치</strong> $$(Q^\pi(s,a))$$  </li>
<li><strong>상태 가치</strong> $$(V^\pi(s)=\max_a Q^\pi(s,a))$$  </li>
<li><strong>최적 정책</strong> $$(\pi^<em>(s)= \arg\max_a Q^</em>(s,a))$$</li>
</ul>
<hr>
<h2 id="6-deep-q-network-dqn-워크플로">6. Deep Q-Network (DQN) 워크플로</h2>
<ol>
<li>경험 ((s,a,r,s&#39;)) → <a>Replay Buffer</a>  </li>
<li>목표<br>$$
y = r + \gamma \max_{a&#39;} Q_{\theta^-}(s&#39;,a&#39;)
$$</li>
<li>손실<br>$$
\mathcal{L}=(y-Q_\theta(s,a))^2
$$</li>
<li>파라미터 업데이트 (SGD/Adam)  </li>
<li>소프트 업데이트<br>$$
\theta^- \leftarrow \tau\theta + (1-\tau)\theta^-
$$</li>
</ol>
<hr>
<h2 id="7-ε-greedy-탐색">7. ε-Greedy 탐색</h2>
<ul>
<li>확률 $$(1-ε): (\arg\max_a Q)$$ (활용)  </li>
<li>확률 $$ε$$: 무작위 (탐색)  </li>
<li>보통 <code>ε=1.0 → 0.01</code> 선형/지수 감소</li>
</ul>
<hr>
<h2 id="8-학습-안정화-tricks">8. 학습 안정화 Tricks</h2>
<table>
<thead>
<tr>
<th>기법</th>
<th>요점</th>
</tr>
</thead>
<tbody><tr>
<td><a>Replay Buffer</a></td>
<td>상관 제거, 샘플 다양성</td>
</tr>
<tr>
<td><a>Mini-Batch</a></td>
<td>32–128개 경험으로 1 step 학습</td>
</tr>
<tr>
<td><a>Soft Update</a></td>
<td><code>τ ≈ 0.01</code> 로 타깃 네트워크 점진 반영</td>
</tr>
</tbody></table>
<hr>
<h2 id="9-연속-상태-공간-대응">9. 연속 상태 공간 대응</h2>
<ul>
<li>테이블 불가 → <a>함수 근사</a>(NN, 선형) 사용  </li>
<li>예: 헬리콥터 상태 벡터<br>$$(x,y,z,φ,θ,ψ,\dot{x},\dot{y},\dot{z},\dot{φ},\dot{θ},\dot{ψ})$$</li>
</ul>
<hr>
<h2 id="10-lunar-lander-실습-메모">10. Lunar Lander 실습 메모</h2>
<ul>
<li><strong>상태(8D):</strong> <code>(x,y,ẋ,ẏ,θ,θ̇,l,r)</code>  </li>
<li><strong>행동:</strong> <code>{NoOp, Left, Main, Right}</code>  </li>
<li><strong>할인:</strong> <code>γ ≈ 0.985</code>  </li>
<li><strong>성공:</strong> 두 깃발 사이 Soft Landing + 연료 최소  </li>
<li><strong>권장 하이퍼파라미터:</strong>  <ul>
<li>학습률 <code>1e-3</code>  </li>
<li>Mini-batch <code>64</code>  </li>
<li>Buffer <code>1e5</code>  </li>
<li><code>τ=0.01</code></li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Collaborative filtering+ Recommander systems implementation detail + Content-based filtering + Principal Component Analysis]]></title>
            <link>https://velog.io/@nin_cheon/Collaborative-filtering-Recommander-systems-implementation-detail-Content-based-filtering-Principal-Component-Analysis</link>
            <guid>https://velog.io/@nin_cheon/Collaborative-filtering-Recommander-systems-implementation-detail-Content-based-filtering-Principal-Component-Analysis</guid>
            <pubDate>Mon, 09 Jun 2025 00:10:04 GMT</pubDate>
            <description><![CDATA[<h2 id="1-collaborative-filtering">1. Collaborative Filtering</h2>
<p><strong>개념:</strong><br>사용자-아이템 간의 과거 상호작용 데이터를 바탕으로 추천<br>즉, <strong>&quot;비슷한 사용자/아이템이 좋아한 것&quot;</strong>을 기반으로 예측</p>
<h3 id="user-based-cf">User-based CF</h3>
<ul>
<li><strong>비슷한 사용자</strong>를 찾고, 그들이 좋아한 아이템을 추천</li>
<li>예시: 나와 취향이 유사한 A가 좋아한 영화 B → 나에게도 B 추천</li>
</ul>
<h3 id="item-based-cf">Item-based CF</h3>
<ul>
<li><strong>비슷한 아이템</strong>을 찾고, 사용자가 좋아한 아이템과 유사한 아이템을 추천</li>
<li>예시: 내가 좋아한 영화 A와 유사한 영화 B → 나에게 B 추천</li>
</ul>
<h3 id="평점-예측-공식">평점 예측 공식</h3>
<p>$
\hat{r}_{ui} = \mu + b_u + b_i + q_i^T p_u
$</p>
<ul>
<li>$\hat{r}_{ui}$ : 사용자 $u$의 아이템 $i$에 대한 예측 평점  </li>
<li>$\mu$ : 전체 평균 평점  </li>
<li>$b_u$ : 사용자 편향  </li>
<li>$b_i$ : 아이템 편향  </li>
<li>$p_u$, $q_i$ : 잠재 요인(latent factor) 벡터</li>
</ul>
<hr>
<h2 id="2-recommendation-system-implementation-detail">2. Recommendation System Implementation Detail</h2>
<h3 id="matrix-factorization">Matrix Factorization</h3>
<ul>
<li>사용자-아이템 행렬 $R$을 $P \times Q^T$ 로 분해</li>
<li>$P \in \mathbb{R}^{n_{users} \times k}, Q \in \mathbb{R}^{n_{items} \times k}$</li>
</ul>
<h3 id="objective-function">Objective Function</h3>
<p>$
\min_{p_<em>, q_</em>} \sum_{(u, i) \in \kappa} (r_{ui} - p_u^T q_i)^2 + \lambda (||p_u||^2 + ||q_i||^2)
$</p>
<ul>
<li>$\kappa$: 관측된 사용자-아이템 쌍의 집합  </li>
<li>$\lambda$: 정규화 계수</li>
</ul>
<h3 id="학습-방법">학습 방법</h3>
<ul>
<li><strong>Stochastic Gradient Descent (SGD)</strong> 방식으로 미니배치 기반 학습  </li>
<li>관측된 평점에 대해서만 손실을 계산</li>
</ul>
<hr>
<h2 id="3-content-based-filtering">3. Content-Based Filtering</h2>
<p><strong>개념:</strong><br>아이템의 속성(장르, 설명, 키워드 등)을 사용하여 <strong>사용자 취향에 맞는 아이템</strong>을 추천</p>
<h3 id="핵심-개념">핵심 개념</h3>
<ul>
<li>각 아이템은 특징 벡터로 표현됨 (예: TF-IDF, Word2Vec 등)</li>
<li>사용자의 선호도를 이 벡터와 비교하여 예측</li>
</ul>
<h3 id="사용자-프로필-벡터">사용자 프로필 벡터</h3>
<p>$
\vec{u} = \frac{1}{|\mathcal{I}<em>u|} \sum</em>{i \in \mathcal{I}_u} \vec{x}_i
$</p>
<ul>
<li>$\mathcal{I}_u$: 사용자 $u$가 좋아한 아이템들의 집합  </li>
<li>$\vec{x}_i$: 아이템 $i$의 특징 벡터</li>
</ul>
<h3 id="예측-방식">예측 방식</h3>
<ul>
<li>사용자 벡터 $\vec{u}$와 아이템 벡터 $\vec{x}$ 간의 <strong>유사도(cosine similarity)</strong>를 계산하여 추천</li>
</ul>
<hr>
<h2 id="4-principal-component-analysis-pca">4. Principal Component Analysis (PCA)</h2>
<p><strong>목적:</strong><br>고차원 데이터를 저차원 공간으로 투영하여 <strong>중요한 정보 유지하면서 차원 축소</strong></p>
<h3 id="주요-개념">주요 개념</h3>
<ul>
<li><strong>분산이 큰 방향</strong>으로 새로운 축(Principal Component)을 정의</li>
<li>첫 번째 주성분이 데이터의 최대 분산을 가지는 방향</li>
</ul>
<h3 id="수식-정리">수식 정리</h3>
<ol>
<li>평균 중심화</li>
</ol>
<p>$
x_i&#39; = x_i - \bar{x}
$</p>
<ol start="2">
<li>공분산 행렬 계산</li>
</ol>
<p>$$
\Sigma = \frac{1}{m} X^T X
$$</p>
<ol start="3">
<li>고유값 분해 또는 SVD</li>
</ol>
<p>$$
X = U S V^T
$$</p>
<ul>
<li>$U$: 좌표 회전 행렬 (주성분)  </li>
<li>$S$: 특이값 (분산 크기)  </li>
<li>$V$: 원래 차원 축의 방향</li>
</ul>
<ol start="4">
<li>차원 축소</li>
</ol>
<p>$$
Z = X \cdot U_{reduce}
$$</p>
<ul>
<li>$U_{reduce}$: 상위 $k$개의 주성분 벡터로 구성</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[클러스터링 + 이상탐지]]></title>
            <link>https://velog.io/@nin_cheon/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81-%EC%9D%B4%EC%83%81%ED%83%90%EC%A7%80-x4c46b27</link>
            <guid>https://velog.io/@nin_cheon/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81-%EC%9D%B4%EC%83%81%ED%83%90%EC%A7%80-x4c46b27</guid>
            <pubDate>Sun, 01 Jun 2025 07:14:52 GMT</pubDate>
            <description><![CDATA[<h1 id="1-클러스터링-clustering">1. 클러스터링 (Clustering)</h1>
<h3 id="개념">개념</h3>
<ul>
<li><strong>비지도 학습</strong>: 레이블 없는 데이터(x)만 사용</li>
<li><strong>목표</strong>: 비슷한 데이터끼리 자동으로 묶기</li>
</ul>
<h3 id="k-means-알고리즘">K-Means 알고리즘</h3>
<ol>
<li><p>군집 수 $K$ 설정  </p>
</li>
<li><p>군집 중심(centroid) $\mu_1$ ~ $\mu_K$ 무작위 초기화  </p>
</li>
<li><p>두 단계 반복:  </p>
<p><strong>할당 단계</strong>: 각 데이터 포인트 $x^{(i)}$를 가장 가까운 군집 중심 $\mu_k$에 할당<br>$c^{(i)} := \arg\min_k |x^{(i)} - \mu_k|^2$  </p>
<p><strong>업데이트 단계</strong>: 각 군집 중심을 해당 군집에 속한 점들의 평균으로 갱신<br>$\mu_k := \frac{1}{\left|{i: c^{(i)} = k}\right|} \sum_{i: c^{(i)} = k} x^{(i)}$</p>
</li>
</ol>
<h3 id="비용-함수-distortion-function">비용 함수 (Distortion Function)</h3>
<ul>
<li>K-means는 아래 비용 함수를 최소화함:
$J(c, \mu) = \frac{1}{m} \sum_{i=1}^m |x^{(i)} - \mu_{c^{(i)}}|^2$</li>
</ul>
<h3 id="무작위-초기화--로컬-옵티마">무작위 초기화 &amp; 로컬 옵티마</h3>
<ul>
<li>여러 번 초기화 후 가장 낮은 비용 함수 값을 가진 결과 선택</li>
</ul>
<h3 id="k-값-선택법-elbow-method">K 값 선택법: Elbow Method</h3>
<ul>
<li>군집 수 증가에 따른 비용 함수 변화 그래프에서 급격한 완화 지점을 선택</li>
<li>반드시 명확하지 않으며 목적에 따라 판단 필요</li>
</ul>
<hr>
<h2 id="2-이상-탐지-anomaly-detection">2. 이상 탐지 (Anomaly Detection)</h2>
<h3 id="개념-1">개념</h3>
<ul>
<li>정상 데이터만으로 학습하여 “이상값”을 찾아냄</li>
<li>비정상 데이터는 소수 존재하거나 전무할 수도 있음</li>
</ul>
<h3 id="사용-사례">사용 사례</h3>
<ul>
<li>항공기 엔진 결함 탐지, 사기 거래 탐지, 서버 이상 동작 탐지 등</li>
</ul>
<h3 id="방법-확률-기반-밀도-추정">방법: 확률 기반 밀도 추정</h3>
<ul>
<li><p>각 특징 $x_j$에 대해 가우시안 분포 모델링
$p(x_j) = \frac{1}{\sqrt{2\pi} \sigma_j} \exp\left( -\frac{(x_j - \mu_j)^2}{2\sigma_j^2} \right)$</p>
</li>
<li><p>전체 확률:<br>$p(x) = \prod_{j=1}^n p(x_j)$</p>
</li>
<li><p>임계값 $\varepsilon$보다 작으면 이상 탐지:<br>$p(x) &lt; \varepsilon \Rightarrow \text{Anomaly}$</p>
</li>
</ul>
<h3 id="평균·분산-계산-mu-sigma2">평균·분산 계산 ($\mu$, $\sigma^2$)</h3>
<ul>
<li>각 특징에 대해 계산:<br>$\mu_j = \frac{1}{m} \sum_{i=1}^m x_j^{(i)}, \quad \sigma_j^2 = \frac{1}{m} \sum_{i=1}^m (x_j^{(i)} - \mu_j)^2$</li>
</ul>
<h3 id="주의사항">주의사항</h3>
<ul>
<li>특징이 가우시안처럼 보이지 않으면 로그, 제곱근 등 변환 필요</li>
<li>이상 탐지는 <strong>특징 선택이 특히 중요함</strong></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[의사 결정 나무와 앙상블]]></title>
            <link>https://velog.io/@nin_cheon/%EC%9D%98%EC%82%AC-%EA%B2%B0%EC%A0%95-%EB%82%98%EB%AC%B4%EC%99%80-%EC%95%99%EC%83%81%EB%B8%94-0nsxn5ns</link>
            <guid>https://velog.io/@nin_cheon/%EC%9D%98%EC%82%AC-%EA%B2%B0%EC%A0%95-%EB%82%98%EB%AC%B4%EC%99%80-%EC%95%99%EC%83%81%EB%B8%94-0nsxn5ns</guid>
            <pubDate>Sun, 25 May 2025 13:28:50 GMT</pubDate>
            <description><![CDATA[<h1 id="1-의사결정-트리란-무엇인가">1. 의사결정 트리란 무엇인가?</h1>
<ul>
<li><strong>의사결정 트리(Decision Tree)</strong>는 데이터를 분할해가며 예측을 수행하는 트리 기반 모델이다.</li>
<li><strong>루트 노드(root node)</strong>부터 시작해 각 <strong>결정 노드(decision node)</strong>에서 특정 특성(feature)을 기준으로 데이터를 분할하며, 마지막 <strong>리프 노드(leaf node)</strong>에서 예측 값을 출력한다.<blockquote>
<p>예: 귀 모양, 얼굴 모양, 수염 여부 등의 <a>특성으로 고양이인지 아닌지를 분류</a></p>
</blockquote>
</li>
</ul>
<h1 id="2-의사결정-트리-학습-과정">2. 의사결정 트리 학습 과정</h1>
<h2 id="21-트리-구성-단계">2.1. 트리 구성 단계</h2>
<ol>
<li><p>루트 노드에서 어떤 특성(feature)으로 분할할지 선택</p>
</li>
<li><p>선택된 특성 값을 기준으로 데이터 분할</p>
</li>
<li><p>각 하위 노드에 대해 위 과정을 반복 (재귀적 트리 생성)</p>
</li>
<li><p>리프 노드 조건:</p>
<ul>
<li>모든 데이터가 하나의 클래스일 경우</li>
<li>트리의 최대 깊이 도달</li>
<li>정보 이득(information gain)이 임계값 이하</li>
<li>노드 내 샘플 수가 최소 임계값보다 작을 경우</li>
</ul>
</li>
</ol>
<h2 id="22-분할-기준-정보-이득-information-gain">2.2. 분할 기준: 정보 이득 (Information Gain)</h2>
<ul>
<li><p><strong>엔트로피(Entropy)</strong>: 데이터 집합의 불순도를 측정</p>
<ul>
<li>모든 클래스가 섞여 있을수록 엔트로피가 높음 (최대 1)</li>
<li>하나의 클래스만 있을 경우 엔트로피는 0</li>
</ul>
</li>
<li><p><strong>정보 이득</strong>:</p>
<ul>
<li>분할 전 엔트로피 − 분할 후 가중 평균 엔트로피</li>
<li>정보 이득이 큰 특성을 선택해 트리를 분할</li>
</ul>
</li>
</ul>
<h2 id="23-연속형-변수-처리">2.3. 연속형 변수 처리</h2>
<ul>
<li>연속형 변수는 다양한 <strong>임계값(threshold)</strong>을 기준으로 분할</li>
<li>예: 무게 ≤ 9 또는 &gt; 9</li>
<li>각 임계값마다 정보 이득을 계산하여 가장 큰 정보 이득을 주는 값을 선택</li>
</ul>
<h2 id="24-범주형-변수-처리">2.4. 범주형 변수 처리</h2>
<ul>
<li>범주형 변수가 셋 이상의 값을 가질 경우, <strong>원-핫 인코딩(One-hot encoding)</strong>을 사용</li>
<li>각 카테고리를 0 또는 1로 인코딩하여 의사결정 트리 학습에 사용</li>
</ul>
<h1 id="3-트리-앙상블-tree-ensembles">3. 트리 앙상블 (Tree Ensembles)</h1>
<h2 id="31-단일-트리의-한계">3.1. 단일 트리의 한계</h2>
<ul>
<li>하나의 의사결정 트리는 훈련 데이터에 민감해 overfitting 또는 underfitting 가능성 있음</li>
<li>해결책: 여러 개의 트리를 결합해 예측 성능을 향상</li>
</ul>
<h2 id="32-배깅-bagging과-랜덤-포레스트-random-forest">3.2. 배깅 (Bagging)과 랜덤 포레스트 (Random Forest)</h2>
<ul>
<li><p><strong>배깅(Bootstrap Aggregating)</strong>: 훈련 세트를 복원 추출로 여러 개 샘플링해 각기 다른 트리를 학습</p>
</li>
<li><p><strong>랜덤 포레스트(Random Forest)</strong>:</p>
<ul>
<li>배깅 + 각 노드에서 분할 시 특성의 일부를 무작위로 선택해 다양성 증가</li>
<li>앙상블된 트리들의 예측을 다수결 또는 평균으로 결합해 최종 예측</li>
</ul>
</li>
</ul>
<h2 id="33-부스팅-boosting과-xgboost">3.3. 부스팅 (Boosting)과 XGBoost</h2>
<ul>
<li><p><strong>부스팅(Boosting)</strong>: 순차적으로 여러 트리를 학습하며 이전 트리가 잘못 예측한 샘플에 가중치를 부여</p>
</li>
<li><p><strong>XGBoost</strong>:</p>
<ul>
<li>부스팅 기반 고성능 알고리즘</li>
<li>빠르고, 과적합 방지를 위한 정규화 포함</li>
<li>머신러닝 대회에서 자주 우승하는 알고리즘</li>
</ul>
</li>
</ul>
<pre><code class="language-python"># XGBoost 사용 예시
from xgboost import XGBClassifier
model = XGBClassifier()
model.fit(X_train, y_train)</code></pre>
<h1 id="4-분류-트리-vs-회귀-트리">4. 분류 트리 vs 회귀 트리</h1>
<ul>
<li><p>분류 트리: 클래스 예측 (예: 고양이인지 아닌지)</p>
<ul>
<li>분할 기준: <strong>엔트로피 감소 (정보 이득)</strong></li>
</ul>
</li>
<li><p>회귀 트리: 숫자 예측 (예: 동물 무게)</p>
<ul>
<li>분할 기준: <strong>분산 감소 (Variance Reduction)</strong></li>
<li>리프 노드 예측값: 해당 노드의 평균 출력값</li>
</ul>
</li>
</ul>
<h1 id="5-장단점-및-사용-시기">5. 장단점 및 사용 시기</h1>
<h2 id="장점">장점</h2>
<ul>
<li>빠른 학습 속도</li>
<li>비교적 쉬운 해석 가능성 (작은 트리)</li>
<li>정형 데이터(스프레드시트 형태)에 효과적</li>
</ul>
<h2 id="단점">단점</h2>
<ul>
<li>단일 트리는 데이터에 민감하고 불안정할 수 있음</li>
<li>트리 앙상블은 해석이 어려움</li>
</ul>
<h2 id="사용-추천-상황">사용 추천 상황</h2>
<ul>
<li>정형 데이터가 있는 경우 → 의사결정 트리 또는 XGBoost</li>
<li>이미지, 오디오, 텍스트 등 비정형 데이터 → 신경망(Neural Network)</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[머신러닝 개발 조언, 편향과 분산, 개발 프로세스, 불균형 데이터셋]]></title>
            <link>https://velog.io/@nin_cheon/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B0%9C%EB%B0%9C-%EC%A1%B0%EC%96%B8-%ED%8E%B8%ED%96%A5%EA%B3%BC-%EB%B6%84%EC%82%B0-%EA%B0%9C%EB%B0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%B6%88%EA%B7%A0%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%85%8B</link>
            <guid>https://velog.io/@nin_cheon/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B0%9C%EB%B0%9C-%EC%A1%B0%EC%96%B8-%ED%8E%B8%ED%96%A5%EA%B3%BC-%EB%B6%84%EC%82%B0-%EA%B0%9C%EB%B0%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%B6%88%EA%B7%A0%ED%98%95-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%85%8B</guid>
            <pubDate>Sun, 18 May 2025 12:59:46 GMT</pubDate>
            <description><![CDATA[<h2 id="1-머신러닝-개발-조언-advice-for-machine-learning">1. 머신러닝 개발 조언 (Advice for Machine Learning)</h2>
<p>모델 성능 향상을 위해 고려할 수 있는 대표적인 방법은 다음과 같습니다.</p>
<h3 id="11-더-많은-데이터-확보-getting-more-data">1.1 더 많은 데이터 확보 (Getting More Data)</h3>
<ul>
<li><strong>고분산 문제 해결</strong>: 훈련 데이터 부족으로 인한 과적합 위험 감소  </li>
<li><strong>일반화 성능 향상</strong>: 다양한 데이터 패턴 학습 가능  </li>
<li><strong>주의사항</strong>: 데이터 수집에는 <strong>비용과 시간</strong>이 소요되며, 항상 성능이 향상되는 것은 아님  </li>
</ul>
<h3 id="12-특성-수-줄이기-feature-selection--dimensionality-reduction">1.2 특성 수 줄이기 (Feature Selection / Dimensionality Reduction)</h3>
<ul>
<li><strong>모델 복잡성 감소</strong>: 과적합 방지 및 속도 향상  </li>
<li><strong>차원 축소 기법</strong>: <code>PCA</code>, <code>t-SNE</code> 등 사용 가능  </li>
</ul>
<h3 id="13-새로운-특성-추가-adding-new-features">1.3 새로운 특성 추가 (Adding New Features)</h3>
<ul>
<li><strong>고편향 문제 해결</strong>: 모델의 과소적합을 개선  </li>
<li><strong>Feature Engineering</strong>: 기존 특성의 조합, 변형 등 활용  </li>
</ul>
<h3 id="14-다항-특성-추가-adding-polynomial-features">1.4 다항 특성 추가 (Adding Polynomial Features)</h3>
<ul>
<li><strong>비선형 관계 학습</strong> 가능  </li>
<li>과적합 유의 필요  </li>
</ul>
<h3 id="15-정규화-regularization">1.5 정규화 (Regularization)</h3>
<ul>
<li><strong>고분산 문제 해결</strong>: 모델 복잡도 제어  </li>
<li><strong>종류</strong>:<ul>
<li><strong>L1 정규화 (Lasso)</strong>: 특성 선택 효과</li>
<li><strong>L2 정규화 (Ridge)</strong>: 가중치 감소</li>
</ul>
</li>
<li><strong>정규화 파라미터</strong>: $\lambda$ 튜닝 필요 (ex. 교차검증 활용)</li>
</ul>
<hr>
<h2 id="2-편향과-분산-bias-and-variance">2. 편향과 분산 (Bias and Variance)</h2>
<p>모델의 에러를 진단하고 개선하기 위해 핵심 개념인 <strong>편향과 분산</strong>을 이해해야 합니다.</p>
<h3 id="21-편향-bias">2.1 편향 (Bias)</h3>
<ul>
<li><strong>정의</strong>: 모델이 <strong>잘못된 가정</strong>을 통해 일관된 오차를 보이는 현상  </li>
<li><strong>특징</strong>:<ul>
<li>높은 훈련 오차 ($J_{train}$ ↑)  </li>
<li>교차 검증 오차도 유사하게 높음 ($J_{cv} \approx J_{train}$)  </li>
</ul>
</li>
<li><strong>해결법</strong>:<ul>
<li>더 복잡한 모델 사용  </li>
<li>특성 수 증가  </li>
<li>정규화 강도 감소 ($\lambda$ ↓)  </li>
</ul>
</li>
</ul>
<h3 id="22-분산-variance">2.2 분산 (Variance)</h3>
<ul>
<li><strong>정의</strong>: 데이터의 작은 변화에도 모델 예측이 크게 변하는 현상  </li>
<li><strong>특징</strong>:<ul>
<li>낮은 훈련 오차 ($J_{train}$↓)  </li>
<li>교차 검증 오차는 매우 높음 ($J_{cv} \gg J_{train}$)  </li>
</ul>
</li>
<li><strong>해결법</strong>:<ul>
<li>더 많은 데이터 확보  </li>
<li>특성 수 줄이기  </li>
<li>모델 단순화  </li>
<li>정규화 강도 증가 ($lambda$ ↑)  </li>
</ul>
</li>
</ul>
<h3 id="23-학습-곡선-learning-curves">2.3 학습 곡선 (Learning Curves)</h3>
<ul>
<li>훈련 세트 크기에 따른 오차의 변화를 통해 <strong>모델 상태 진단</strong> 가능</li>
</ul>
<table>
<thead>
<tr>
<th>모델 상태</th>
<th>훈련 오차</th>
<th>검증 오차</th>
<th>해석</th>
</tr>
</thead>
<tbody><tr>
<td>고편향</td>
<td>높음</td>
<td>비슷하게 높음</td>
<td>과소적합</td>
</tr>
<tr>
<td>고분산</td>
<td>낮음</td>
<td>매우 높음</td>
<td>과적합</td>
</tr>
<tr>
<td>적절함</td>
<td>낮음</td>
<td>비슷하게 낮음</td>
<td>일반화 우수</td>
</tr>
</tbody></table>
<hr>
<h2 id="3-머신러닝-개발-프로세스-machine-learning-development-process">3. 머신러닝 개발 프로세스 (Machine Learning Development Process)</h2>
<p>머신러닝 프로젝트는 다음의 일련의 단계를 따라 효율적으로 진행됩니다.</p>
<ol>
<li><strong>문제 정의 (Problem Definition)</strong>: 예측하고자 하는 목표 설정  </li>
<li><strong>데이터 수집 (Data Collection)</strong>: 신뢰 가능한 데이터 확보  </li>
<li><strong>데이터 준비 (Data Preparation)</strong>: 결측치 처리, 정규화 등  </li>
<li><strong>모델 선택 (Model Selection)</strong>: 선형 회귀, 결정 트리 등  </li>
<li><strong>모델 훈련 (Model Training)</strong>: 학습 알고리즘 적용  </li>
<li><strong>모델 평가 (Model Evaluation)</strong>: 교차 검증, 오차 분석  </li>
<li><strong>모델 튜닝 (Model Tuning)</strong>: 하이퍼파라미터 조정  </li>
<li><strong>모델 배포 (Model Deployment)</strong>: 실서비스에 적용  </li>
<li><strong>모니터링 및 유지보수 (Monitoring)</strong>: 모델 성능 지속 확인 및 개선  </li>
</ol>
<hr>
<h2 id="4-불균형-데이터셋-skewed-datasets">4. 불균형 데이터셋 (Skewed Datasets)</h2>
<p><strong>소수 클래스 데이터가 너무 적은 경우</strong>, 모델은 대부분 다수 클래스를 예측하게 되어 문제가 됩니다.</p>
<h3 id="41-문제점">4.1 문제점</h3>
<ul>
<li><strong>정확도 착시</strong>: 단순히 다수 클래스 예측만 해도 정확도는 높게 나올 수 있음  </li>
<li><strong>학습 편향</strong>: 소수 클래스 무시 → 실무에서 치명적  </li>
</ul>
<h3 id="42-해결-방안">4.2 해결 방안</h3>
<ul>
<li><strong>데이터 증강 (Data Augmentation)</strong>: 소수 클래스 데이터 합성/복제  </li>
<li><strong>오버샘플링 (Oversampling)</strong>: 소수 클래스 복제  </li>
<li><strong>언더샘플링 (Undersampling)</strong>: 다수 클래스 일부 제거  </li>
<li><strong>클래스 가중치 조정 (Class Weighting)</strong>: 손실 함수에 가중치 부여  </li>
<li><strong>대안 평가 지표 사용</strong>:  <ul>
<li>정밀도 (Precision)  </li>
<li>재현율 (Recall)  </li>
<li>F1 점수  </li>
<li>AUC (Area Under the Curve)  </li>
</ul>
</li>
<li><strong>앙상블 기법 (Ensemble Methods)</strong>: 랜덤포레스트, 배깅, 부스팅 등 활용  </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Additional Neural Network Concepts + Back Propagation]]></title>
            <link>https://velog.io/@nin_cheon/Additional-Neural-Network-Concepts-Back-Propagation</link>
            <guid>https://velog.io/@nin_cheon/Additional-Neural-Network-Concepts-Back-Propagation</guid>
            <pubDate>Sun, 11 May 2025 11:02:17 GMT</pubDate>
            <description><![CDATA[<h1 id="1-경사하강법과-한계">1. 경사하강법과 한계</h1>
<ul>
<li><p>경사하강법은 선형회귀, 로지스틱 회귀, 신경망의 기본 학습 알고리즘</p>
</li>
<li><p>하지만 <strong>학습률($\alpha$)</strong> 조절이 어려움</p>
<ul>
<li>너무 작으면 느림</li>
<li>너무 크면 발산하거나 진동</li>
</ul>
</li>
<li><p>한 단계 업데이트 수식:</p>
</li>
</ul>
<p>$$
w_j := w_j - \alpha \frac{\partial J}{\partial w_j}
$$</p>
<ul>
<li>동일한 방향으로 반복 이동하는 경우: 학습률을 더 키우고 싶음</li>
<li>진동하는 경우: 학습률을 줄여야 함</li>
</ul>
<h1 id="2-adam-알고리즘의-개요">2. Adam 알고리즘의 개요</h1>
<ul>
<li><strong>Adam</strong>: <em>Adaptive Moment Estimation</em>의 약자</li>
<li>학습률($\alpha$)을 자동으로 조정</li>
<li>각 파라미터별로 다른 학습률 $\alpha_1, \alpha_2, ..., \alpha_n$ 사용</li>
<li>경사하강법보다 더 빠르고 안정적인 수렴 유도</li>
</ul>
<blockquote>
<p>실무에서는 대부분 <strong>경사하강법(GD)</strong> 대신 <strong>Adam</strong> 사용</p>
</blockquote>
<ul>
<li>TensorFlow 구현:</li>
</ul>
<pre><code class="language-python">optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)</code></pre>
<h1 id="3-adam-알고리즘의-핵심-아이디어">3. Adam 알고리즘의 핵심 아이디어</h1>
<ul>
<li><strong>파라미터가 비슷한 방향으로 계속 움직임</strong> → 학습률 증가</li>
<li><strong>파라미터가 진동</strong> → 학습률 감소</li>
<li>내부적으로는 1차/2차 모멘텀(평균/분산)을 추적하여 업데이트</li>
</ul>
<h1 id="4-계산-그래프-computation-graph">4. 계산 그래프 (Computation Graph)</h1>
<blockquote>
<p>딥러닝의 핵심 개념. 순전파와 역전파 계산을 시각적, 단계적으로 표현함.</p>
</blockquote>
<h2 id="4-1-순전파-예시-단일-뉴런">4-1. 순전파 예시 (단일 뉴런)</h2>
<ul>
<li>$x=-2$, $y=2$</li>
<li>$w=2$, $b=8$</li>
<li>출력 $a = wx + b = -4 + 8 = 4$</li>
<li>오차: $d = a - y = 2$</li>
<li>비용 함수:</li>
</ul>
<p>$$
J = \frac{1}{2}(a - y)^2 = \frac{1}{2} d^2 = 2
$$</p>
<h2 id="4-2-역전파-개요">4-2. 역전파 개요</h2>
<ul>
<li><strong>오른쪽에서 왼쪽으로 계산</strong></li>
<li>$\frac{\partial J}{\partial d} = 2d = 4$</li>
<li>$\frac{\partial J}{\partial a} = 2$</li>
<li>$\frac{\partial J}{\partial b} = 2$</li>
<li>$\frac{\partial J}{\partial c} = 2$</li>
<li>$\frac{\partial J}{\partial w} = -4$</li>
</ul>
<h1 id="5-도함수의-직관적-계산-예시">5. 도함수의 직관적 계산 예시</h1>
<h3 id="함수-jw--w2">함수: $J(w) = w^2$</h3>
<ul>
<li>$w = 3 \Rightarrow J = 9$</li>
<li>$w = 3.001 \Rightarrow J = 9.006001$</li>
<li>도함수: $\frac{\Delta J}{\Delta w} \approx 6$</li>
</ul>
<h3 id="공식적-계산">공식적 계산</h3>
<p>$$
\frac{dJ}{dw} = 2w
$$</p>
<ul>
<li>$w = 3 \Rightarrow \frac{dJ}{dw} = 6$</li>
<li>$w = 2 \Rightarrow \frac{dJ}{dw} = 4$</li>
<li>$w = -3 \Rightarrow \frac{dJ}{dw} = -6$</li>
</ul>
<h1 id="6-sympy로-도함수-계산-파이썬-코드">6. SymPy로 도함수 계산 (파이썬 코드)</h1>
<pre><code class="language-python">import sympy as sp
w = sp.symbols(&#39;w&#39;)
J = w**2
sp.diff(J, w)  # 결과: 2w</code></pre>
<h1 id="7-계산-그래프와-역전파-효율성">7. 계산 그래프와 역전파 효율성</h1>
<ul>
<li>노드 수: $n$, 파라미터 수: $p$</li>
<li><strong>브루트포스 방식</strong>: $O(n \cdot p)$</li>
<li><strong>계산 그래프 역전파</strong>: $O(n + p)$ → 효율적!</li>
</ul>
<h1 id="8-대규모-신경망-예제-relu-포함">8. 대규모 신경망 예제 (ReLU 포함)</h1>
<ul>
<li><p>입력: $x = 1$, 정답: $y = 5$</p>
</li>
<li><p>네트워크 구조:</p>
<ul>
<li>$a_1 = \max(0, w_1x + b_1)$</li>
<li>$a_2 = \max(0, w_2a_1 + b_2)$</li>
<li>비용 함수:</li>
</ul>
</li>
</ul>
<p>$$
J = \frac{1}{2}(a_2 - y)^2
$$</p>
<ul>
<li><p>예시 값:</p>
<ul>
<li>$w_1=2$, $b_1=0$, $w_2=3$, $b_2=1$</li>
<li>$a_1 = 2$, $a_2 = 7$</li>
<li>$J = 2$</li>
</ul>
</li>
</ul>
<h1 id="9-자동-미분과-오토디프autodiff">9. 자동 미분과 오토디프(Autodiff)</h1>
<ul>
<li>프레임워크 (TensorFlow, PyTorch)는 <strong>자동 미분</strong> 기능 제공</li>
<li>사용자는 forward 계산만 정의하면 됨</li>
<li>내부적으로 계산 그래프 + 역전파로 도함수 자동 계산</li>
<li>과거에는 직접 미분을 손으로 계산해야 했지만 이제는 필요 없음!</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Neural Network Training, Activation Functions, Multiclass Classification]]></title>
            <link>https://velog.io/@nin_cheon/Neural-Network-Training-Activation-Functions-Multiclass-Classification</link>
            <guid>https://velog.io/@nin_cheon/Neural-Network-Training-Activation-Functions-Multiclass-Classification</guid>
            <pubDate>Sun, 04 May 2025 10:14:03 GMT</pubDate>
            <description><![CDATA[<h1 id="neural-network-training--activation-functions--multiclass-classification-정리">Neural Network Training + Activation Functions + Multiclass Classification 정리</h1>
<hr>
<h2 id="1-신경망-학습-neural-network-training">1. 신경망 학습 (Neural Network Training)</h2>
<p>신경망은 아래의 순서를 반복하며 학습한다.</p>
<ol>
<li><strong>순방향 전파 (Forward Propagation)</strong>: 입력값을 통해 예측값을 계산  </li>
<li><strong>손실 함수 계산 (Loss Function)</strong>: 예측값과 실제값의 차이 계산  </li>
<li><strong>역전파 (Backpropagation)</strong>: 오차를 기반으로 각 가중치에 대한 기울기(gradient) 계산  </li>
<li><strong>파라미터 업데이트 (Gradient Descent)</strong>: 가중치와 편향을 업데이트</li>
</ol>
<h3 id="파라미터-업데이트-공식-경사하강법">파라미터 업데이트 공식 (경사하강법)</h3>
<p>$$
W := W - \eta \cdot \frac{\partial L}{\partial W}
$$</p>
<p>$$
b := b - \eta \cdot \frac{\partial L}{\partial b}
$$</p>
<ul>
<li>( \eta ): 학습률 (learning rate)  </li>
<li>( L ): 손실 함수 (loss function)</li>
</ul>
<hr>
<h2 id="2-활성화-함수-activation-functions">2. 활성화 함수 (Activation Functions)</h2>
<p>활성화 함수는 비선형성을 도입하여 신경망이 복잡한 문제를 해결할 수 있도록 해준다.</p>
<h2 id="주요-활성화-함수-정리">주요 활성화 함수 정리</h2>
<h3 id="1-sigmoid">1. Sigmoid</h3>
<ul>
<li>수식: $\sigma(z) = \frac{1}{1 + e^{-z}}$</li>
<li>특징: 출력 범위 (0, 1), 확률 해석 가능</li>
</ul>
<h3 id="2-tanh">2. Tanh</h3>
<ul>
<li>수식: $\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}$</li>
<li>특징: 출력 범위 (-1, 1), 중심이 0</li>
</ul>
<h3 id="3-relu">3. ReLU</h3>
<ul>
<li>수식: $f(z) = \max(0, z)$</li>
<li>특징: 계산 간단, Gradient Vanishing 문제 완화</li>
</ul>
<h3 id="python-구현-예시">Python 구현 예시</h3>
<pre><code class="language-python">def sigmoid(z):
    return 1 / (1 + np.exp(-z))

def tanh(z):
    return np.tanh(z)

def relu(z):
    return np.maximum(0, z)</code></pre>
<h2 id="3-다중-클래스-분류-multiclass-classification">3. 다중 클래스 분류 (Multiclass Classification)</h2>
<p>다중 클래스 분류는 입력 데이터가 <strong>둘 이상의 클래스 중 하나에 속할 확률</strong>을 예측하는 문제이다.<br>이를 위해 신경망의 <strong>출력층에서 Softmax 함수</strong>를 사용하고, <strong>손실 함수로 Cross Entropy</strong>를 사용한다.</p>
<hr>
<h3 id="softmax-함수">Softmax 함수</h3>
<p>Softmax는 각 클래스에 대한 점수(logit)를 <strong>확률 값</strong>으로 변환한다.</p>
<p>$$
\text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}
$$</p>
<ul>
<li>( z_i ): 클래스 ( i )의 logit (출력 전 score)</li>
<li>( K ): 전체 클래스 수</li>
<li>결과적으로 모든 클래스 확률의 총합은 1이 됨</li>
</ul>
<hr>
<h3 id="softmax-함수-python-구현-예시">Softmax 함수 Python 구현 예시</h3>
<pre><code class="language-python">def softmax(z):
    exp_z = np.exp(z - np.max(z, axis=1, keepdims=True))  # 안정성 확보
    return exp_z / np.sum(exp_z, axis=1, keepdims=True)</code></pre>
<h2 id="4-cross-entropy-loss">4. Cross Entropy Loss</h2>
<p>Cross Entropy는 <strong>모델이 예측한 확률 분포와 실제 정답 분포 간의 차이</strong>를 측정하는 손실 함수이다.</p>
<p>다중 클래스 분류에서 주로 사용되며, 예측 확률이 실제 정답과 가까울수록 손실 값이 작아진다.</p>
<hr>
<h3 id="수식-multiclass-기준">수식 (Multiclass 기준)</h3>
<p>$$
\mathcal{L} = -\sum_{i=1}^{K} y_i \log(\hat{y}_i)
$$</p>
<ul>
<li>( K ): 클래스의 수  </li>
<li>( y_i ): 실제 정답 (One-hot Encoding)  </li>
<li>( \hat{y}_i ): 모델의 예측 확률 (Softmax 결과)</li>
</ul>
<blockquote>
<p>예: 정답이 클래스 2일 때 → ( y = [0, 1, 0] )</p>
</blockquote>
<hr>
<h3 id="수치-예시">수치 예시</h3>
<pre><code class="language-python"># 예측값 (Softmax 출력)
y_hat = np.array([0.7, 0.2, 0.1])

# 실제 정답 (One-hot 벡터)
y_true = np.array([1, 0, 0])

# Cross Entropy 계산
loss = -np.sum(y_true * np.log(y_hat))  # = -log(0.7) ≈ 0.357</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[파이썬에서의 Neural Network 구현과 AGI, 행렬]]></title>
            <link>https://velog.io/@nin_cheon/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%97%90%EC%84%9C%EC%9D%98-Neural-Network-%EA%B5%AC%ED%98%84%EA%B3%BC-AGI-%ED%96%89</link>
            <guid>https://velog.io/@nin_cheon/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%97%90%EC%84%9C%EC%9D%98-Neural-Network-%EA%B5%AC%ED%98%84%EA%B3%BC-AGI-%ED%96%89</guid>
            <pubDate>Sun, 20 Apr 2025 11:51:45 GMT</pubDate>
            <description><![CDATA[<h2 id="1-순방향-전파의-파이썬-구현">1. 순방향 전파의 파이썬 구현</h2>
<ul>
<li>신경망의 각 계층은 입력값을 받아 가중치와 곱하고 편향을 더한 뒤, 비선형 활성화 함수를 적용하여 다음 계층으로 전달</li>
<li><code>순방향 전파(Forward Propagation)</code>는 입력에서 출력까지 데이터를 전달하며 예측값을 계산하는 과정</li>
</ul>
<h3 id="python-코드-예시">Python 코드 예시:</h3>
<pre><code class="language-python">def sigmoid(z):
    return 1 / (1 + np.exp(-z))

def dense(a_in, W, b):
    z = np.matmul(a_in, W) + b
    a_out = sigmoid(z)
    return a_out</code></pre>
<ul>
<li><code>np.matmul</code>은 벡터 또는 행렬 곱셈을 수행하여 효율적인 연산이 가능</li>
<li>반복문보다 벡터화를 통해 학습 및 예측 속도를 획기적으로 향상시킬 수 있음</li>
</ul>
<h2 id="2-텐서와-행렬-연산의-이해">2. 텐서와 행렬 연산의 이해</h2>
<ul>
<li><code>Tensor</code>는 다차원 배열로, TensorFlow에서 데이터는 일반적으로 <code>2D 행렬</code>로 표현됨</li>
<li>예: <code>(1, 2)</code> 입력은 <code>1x2 행렬</code>로 처리되어 배치 학습에 유리함</li>
<li>행렬 곱셈의 조건: A (m×n) 와 B (n×p) → AB는 (m×p) 크기의 행렬</li>
<li>내적(dot product)을 통해 각 뉴런의 출력값을 계산할 수 있음</li>
</ul>
<h3 id="행렬-곱셈-예시">행렬 곱셈 예시:</h3>
<ul>
<li>입력 A: 2x3, 가중치 W: 3x4 → 출력 Z: 2x4</li>
<li>Z의 각 원소는 A의 한 행과 W의 한 열의 내적 결과</li>
</ul>
<h2 id="3-인공-일반-지능agi에-대한-고찰">3. 인공 일반 지능(AGI)에 대한 고찰</h2>
<ul>
<li><a>ANI(Artificial Narrow Intelligence)</a>: 특정 업무에 특화된 AI, 자율주행·음성인식 등 실용화 단계</li>
<li><a>AGI(Artificial General Intelligence)</a>: 인간 수준의 일반 지능, 현재는 미완의 영역</li>
<li>인간의 뇌는 다양한 센서 입력(청각, 시각, 촉각 등)에 유연하게 적응 가능함</li>
<li>동일한 뇌 영역이 데이터 유형에 따라 <code>보는 법</code>, <code>듣는 법</code>, <code>느끼는 법</code>을 학습할 수 있음</li>
<li>하나 또는 소수의 강력한 학습 알고리즘이 뇌의 다양한 기능을 가능하게 한다는 <a>하나의 학습 알고리즘 가설</a>이 제시됨</li>
</ul>
<h2 id="4-신경망의-벡터화-구현">4. 신경망의 벡터화 구현</h2>
<ul>
<li>신경망을 벡터화(Vectorization)하면 GPU의 병렬 연산을 활용하여 연산 속도를 크게 향상시킬 수 있음</li>
<li><a>for-loop 기반 코드</a> 대신 <code>matmul</code>, <code>broadcast</code> 등을 활용해 효율적으로 구현</li>
</ul>
<pre><code class="language-python">Z = np.matmul(A_in, W) + b
A_out = sigmoid(Z)</code></pre>
<ul>
<li>입력 X가 여러 샘플을 포함하는 경우에도 병렬로 처리 가능</li>
<li>신경망 학습과 추론의 핵심 연산은 대부분 <code>행렬 곱셈</code>에 기반함</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[신경망(Neural Network)과 딥러닝의 이해]]></title>
            <link>https://velog.io/@nin_cheon/%EC%8B%A0%EA%B2%BD%EB%A7%9DNeural-Network%EA%B3%BC-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%98-%EC%9D%B4%ED%95%B4</link>
            <guid>https://velog.io/@nin_cheon/%EC%8B%A0%EA%B2%BD%EB%A7%9DNeural-Network%EA%B3%BC-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%98-%EC%9D%B4%ED%95%B4</guid>
            <pubDate>Sun, 13 Apr 2025 07:04:27 GMT</pubDate>
            <description><![CDATA[<h2 id="1-신경망의-개요">1. 신경망의 개요</h2>
<ul>
<li><code>신경망(Neural Network)</code>은 인간의 뇌 구조를 모방한 기계 학습 알고리즘으로, <a>복잡한 패턴 인식</a>과 <a>예측 문제</a>에 강력한 성능을 발휘함</li>
<li><a>딥러닝(Deep Learning)</a>은 은닉층(hidden layer)이 여러 개인 신경망으로, <a>대규모 데이터 학습</a>에 유리</li>
<li>주로 <a>음성 인식</a>, <a>컴퓨터 비전</a>, <a>자연어 처리</a>, <a>추천 시스템</a> 등 다양한 분야에 응용됨</li>
</ul>
<h2 id="2-신경망의-동작-원리">2. 신경망의 동작 원리</h2>
<ul>
<li>기본 구성 단위는 <a><code>뉴런(neuron)</code></a>이며, 입력을 받아 <a><code>가중치(weight)</code></a>를 곱하고 <a><code>편향(bias)</code></a>를 더한 후 <a>활성화 함수(activation function)</a>를 적용해 출력</li>
</ul>
<h3 id="수식-표현">수식 표현:</h3>
<blockquote>
<p>$z = w \cdot x + b$
$a = g(z)$</p>
</blockquote>
<ul>
<li>$g(z)$는 시그모이드 함수 등 <a>비선형 함수</a>로 사용됨</li>
</ul>
<h2 id="3-신경망-구조">3. 신경망 구조</h2>
<ul>
<li><a><code>입력층(Input Layer)</code></a>, <a><code>은닉층(Hidden Layer)</code></a>, <a><code>출력층(Output Layer)</code></a>으로 구성됨</li>
<li>은닉층의 수와 뉴런의 개수는 <a>모델의 표현력</a>을 결정</li>
</ul>
<h3 id="예시-구조">예시 구조:</h3>
<blockquote>
<p>입력 특징 벡터 $x \in \mathbb{R}^n$ → 은닉층 → 출력값 $\hat{y}$ 예측</p>
</blockquote>
<ul>
<li>각 은닉층은 <a>이전 계층의 출력(활성화 값)</a>을 입력으로 받아 연산 수행</li>
</ul>
<h2 id="4-순방향-전파-forward-propagation">4. 순방향 전파 (Forward Propagation)</h2>
<blockquote>
<p>입력값이 신경망을 따라 전달되어 최종 출력이 계산되는 과정</p>
</blockquote>
<h3 id="예시-순서">예시 순서:</h3>
<ol>
<li>$a^{[1]} = g(W^{[1]} x + b^{[1]})$</li>
<li>$a^{[2]} = g(W^{[2]} a^{[1]} + b^{[2]})$</li>
<li>$\hat{y} = a^{[L]}$ (최종 출력)</li>
</ol>
<ul>
<li>모든 계층에서 <a>활성화 함수</a>를 적용해 <a>비선형성</a>을 부여함</li>
</ul>
<h2 id="5-특징-학습-feature-learning">5. 특징 학습 (Feature Learning)</h2>
<ul>
<li>신경망은 중간층(은닉층)을 통해 입력 특성으로부터 <a>유용한 표현(feature representation)</a>을 스스로 학습함</li>
<li>사람이 직접 <a><code>feature engineering</code></a>을 하지 않아도 <a>자동으로 특징을 조합</a>할 수 있음</li>
</ul>
<h2 id="6-딥러닝의-발전-배경">6. 딥러닝의 발전 배경</h2>
<ul>
<li><a>빅데이터</a>: 디지털화로 인해 대규모 데이터 수집 가능</li>
<li><a>하드웨어 발전</a>: GPU를 이용한 대량 병렬 연산이 가능해짐</li>
<li><a>알고리즘 개선</a>: 신경망 구조의 고도화 및 정규화 기법, 최적화 기법의 발달</li>
</ul>
<h2 id="7-컴퓨터-비전에서의-활용">7. 컴퓨터 비전에서의 활용</h2>
<ul>
<li>이미지 → 벡터로 변환 → 신경망에 입력</li>
<li>초기 계층은 <a>선, 가장자리 등의 단순한 패턴</a> 탐지</li>
<li>중간 계층은 <a>눈, 코 등 얼굴의 부분</a> 감지</li>
<li>깊은 계층은 <a>전체 얼굴 형태</a> 감지 → 최종적으로 <a>개인의 정체성</a> 분류</li>
</ul>
<h2 id="8-신경망-구현-방식">8. 신경망 구현 방식</h2>
<ul>
<li>한 계층에서 다음 계층으로 <a>활성화 값을 전달</a></li>
<li><a><code>텐서플로우(TensorFlow)</code></a>와 같은 프레임워크로 쉽게 구현 가능</li>
</ul>
<pre><code class="language-python">model = Sequential([
    Dense(25, activation=&#39;sigmoid&#39;),
    Dense(15, activation=&#39;sigmoid&#39;),
    Dense(1, activation=&#39;sigmoid&#39;)
])</code></pre>
<ul>
<li><code>model.predict(x)</code> 형태로 <a>순방향 예측</a> 수행 가능</li>
</ul>
<h2 id="9-데이터-표현-방식">9. 데이터 표현 방식</h2>
<ul>
<li>TensorFlow에서는 입력 데이터를 <a><code>2D 행렬(배치 처리)</code></a>로 표현</li>
<li>예: (1, 2) 형태의 입력은 <a><code>1x2 행렬</code></a> 형태로 표현됨</li>
<li><a><code>Tensor</code></a>는 수학적으로 <a>행렬보다 일반적인 데이터 구조</a></li>
</ul>
<h2 id="10-실습-정리-및-학습-소감">10. 실습 정리 및 학습 소감</h2>
<ul>
<li>이번 강의에서는 신경망의 개념부터 구조, 동작 방식, 실제 구현까지 <a>전반적인 흐름을 완벽히 이해</a></li>
<li>실제로 <a><code>손글씨 숫자 분류</code></a>, <a><code>커피 로스팅 품질 예측</code></a> 등의 예제를 통해 <a>신경망의 실제 적용 사례</a>를 학습</li>
<li>특히, <a>순방향 전파</a>를 직접 코드로 구현하고 <a><code>TensorFlow 프레임워크</code></a>로 단순화된 구현을 실습함</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[로지스틱 회귀에서의 경사하강법과 오버피팅의 문제]]></title>
            <link>https://velog.io/@nin_cheon/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80%EC%97%90%EC%84%9C%EC%9D%98-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95%EA%B3%BC-%EC%98%A4%EB%B2%84%ED%94%BC%ED%8C%85%EC%9D%98-%EB%AC%B8%EC%A0%9C</link>
            <guid>https://velog.io/@nin_cheon/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80%EC%97%90%EC%84%9C%EC%9D%98-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95%EA%B3%BC-%EC%98%A4%EB%B2%84%ED%94%BC%ED%8C%85%EC%9D%98-%EB%AC%B8%EC%A0%9C</guid>
            <pubDate>Sun, 06 Apr 2025 06:46:51 GMT</pubDate>
            <description><![CDATA[<h1 id="1-로지스틱-회귀에서의-파라미터-최적화">1. 로지스틱 회귀에서의 파라미터 최적화</h1>
<ul>
<li>로지스틱 회귀에서 모델의 성능을 향상시키기 위해 <a>파라미터 $w$와 $b$</a>를 조정해야 함</li>
<li>목표는 <a>비용 함수 $J(w, b)$를 최소화</a>하는 최적의 파라미터 값을 찾는 것</li>
<li>이를 위해 <a>경사 하강법(Gradient Descent)</a>을 사용</li>
</ul>
<h3 id="a모델의-예측-함수a"><a>모델의 예측 함수</a></h3>
<p>$f(x) = \frac{1}{1 + e^{-(w \cdot x + b)}}$</p>
<blockquote>
<p>새로운 입력값 $x$ (예: 종양 크기, 환자 연령)를 넣으면 <a>y=1일 확률</a>을 예측</p>
</blockquote>
<hr>
<h1 id="2-경사-하강법의-작동-방식">2. 경사 하강법의 작동 방식</h1>
<ul>
<li>경사 하강법은 비용 함수 $J(w, b)$가 가장 작아지는 방향으로 <a>$w$와 $b$를 반복적으로 업데이트</a></li>
</ul>
<h3 id="a일반적인-경사-하강법-식a"><a>일반적인 경사 하강법 식</a></h3>
<p>$w_j := w_j - \alpha \cdot \frac{\partial J}{\partial w_j}$</p>
<p>$b := b - \alpha \cdot \frac{\partial J}{\partial b}$</p>
<blockquote>
<p>$\alpha$: <a>학습률(learning rate)</a>, 너무 크면 발산하고 너무 작으면 수렴 속도가 느림</p>
</blockquote>
<hr>
<h1 id="3-로지스틱-회귀의-비용-함수-도함수">3. 로지스틱 회귀의 비용 함수 도함수</h1>
<ul>
<li>로지스틱 회귀의 비용 함수는 다음과 같이 미분됨</li>
</ul>
<h3 id="aw_j에-대한-도함수a"><a>$w_j$에 대한 도함수</a></h3>
<p>$\frac{\partial J}{\partial w_j} = \frac{1}{m} \sum_{i=1}^{m} (f^{(i)} - y^{(i)}) \cdot x_j^{(i)}$</p>
<h3 id="ab에-대한-도함수a"><a>$b$에 대한 도함수</a></h3>
<p>$\frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (f^{(i)} - y^{(i)})$</p>
<blockquote>
<p>$x_j^{(i)}$: $i$번째 샘플의 $j$번째 특성</p>
</blockquote>
<hr>
<h1 id="4-선형-회귀와의-차이점">4. 선형 회귀와의 차이점</h1>
<ul>
<li>선형 회귀와 <a>업데이트 공식은 동일</a>해 보이지만, 예측 함수 $f$가 다름</li>
<li>선형 회귀: $f(x) = w \cdot x + b$</li>
<li>로지스틱 회귀: $f(x) = \frac{1}{1 + e^{-(w \cdot x + b)}}$</li>
</ul>
<blockquote>
<p>따라서 <a>모양은 비슷해도 완전히 다른 알고리즘</a></p>
</blockquote>
<hr>
<h1 id="5-특징-스케일링의-중요성">5. 특징 스케일링의 중요성</h1>
<ul>
<li>로지스틱 회귀에서도 <a>특징 스케일링(feature scaling)</a>은 학습 속도 향상에 효과적</li>
<li>예: 모든 특성값을 -1 ~ 1 범위로 정규화하면 <a>경사 하강법의 수렴 속도 향상</a></li>
</ul>
<hr>
<h1 id="6-과적합-vs-과소적합">6. 과적합 vs 과소적합</h1>
<ul>
<li>과적합(overfitting): 모델이 <a>훈련 데이터에 너무 과하게 적합</a>하여 새로운 데이터에 일반화되지 못함</li>
<li>과소적합(underfitting): 모델이 <a>데이터의 패턴을 충분히 학습하지 못함</a></li>
</ul>
<h3 id="예시">예시:</h3>
<ul>
<li><strong>저차수 모델</strong>: 단순 직선 → underfitting, <a>편향(bias)이 높음</a></li>
<li><strong>고차수 모델</strong>: 복잡한 곡선 → overfitting, <a>분산(variance)이 높음</a></li>
</ul>
<blockquote>
<p>최적의 모델은 <a>편향과 분산이 모두 적절한 수준</a>으로 균형을 이루는 경우</p>
</blockquote>
<hr>
<h1 id="7-과적합을-줄이는-세-가지-방법">7. 과적합을 줄이는 세 가지 방법</h1>
<ol>
<li><strong>더 많은 훈련 데이터 확보</strong><ul>
<li>데이터가 많을수록 <a>일반화 성능 향상</a></li>
</ul>
</li>
<li><strong>특징 수 줄이기 (Feature Selection)</strong><ul>
<li><a>가장 관련성 높은 특성만 사용</a>하여 과적합 방지</li>
</ul>
</li>
<li><strong>정규화 (Regularization)</strong><ul>
<li><a>비용 함수에 페널티 항 추가</a>하여 파라미터 크기를 줄임</li>
</ul>
</li>
</ol>
<blockquote>
<p>정규화는 모델 복잡도를 낮춰 과적합을 줄이는 데 효과적</p>
</blockquote>
<hr>
<h1 id="8-정규화된-비용-함수">8. 정규화된 비용 함수</h1>
<h3 id="a수식a"><a>수식</a>:</h3>
<p>$J(w, b) = \frac{1}{m} \sum_{i=1}^{m} \text{Loss}(f^{(i)}, y^{(i)}) + \frac{\lambda}{2m} \sum_{j=1}^{n} w_j^2$</p>
<ul>
<li>$\lambda$: <a>정규화 파라미터</a>, 모델의 <a>복잡도를 제어</a></li>
<li>$\lambda = 0$이면 정규화 없음 → 과적합 가능성 ↑</li>
<li>$\lambda$가 너무 크면 모델이 단순해져 underfitting 발생 가능</li>
</ul>
<hr>
<h1 id="9-정규화된-경사-하강법-업데이트">9. 정규화된 경사 하강법 업데이트</h1>
<h3 id="a파라미터-업데이트-식a"><a>파라미터 업데이트 식</a>:</h3>
<p>$w_j := w_j - \alpha \cdot \left(\frac{1}{m} \sum_{i=1}^{m} (f^{(i)} - y^{(i)}) \cdot x_j^{(i)} + \frac{\lambda}{m} w_j \right)$</p>
<p>$b := b - \alpha \cdot \frac{1}{m} \sum_{i=1}^{m} (f^{(i)} - y^{(i)})$</p>
<blockquote>
<p>$b$는 일반적으로 정규화하지 않음</p>
</blockquote>
<hr>
<h1 id="10-정규화의-직관적-이해">10. 정규화의 직관적 이해</h1>
<ul>
<li>매 반복마다 $w_j$에 <a>1보다 약간 작은 수를 곱하는 효과</a> → 점진적으로 파라미터 크기 감소</li>
<li>모델이 <a>복잡해지는 것을 억제</a>하여 일반화 성능 향상</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[로지스틱 회귀분석과 기능함수]]></title>
            <link>https://velog.io/@nin_cheon/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D%EA%B3%BC-%EA%B8%B0%EB%8A%A5%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@nin_cheon/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D%EA%B3%BC-%EA%B8%B0%EB%8A%A5%ED%95%A8%EC%88%98</guid>
            <pubDate>Sun, 30 Mar 2025 07:55:12 GMT</pubDate>
            <description><![CDATA[<h1 id="1-로지스틱-회귀의-개요">1. 로지스틱 회귀의 개요</h1>
<ul>
<li><code>로지스틱 회귀(Logistic Regression)</code>는 이진 분류(binary classification) 문제를 해결하는 데 널리 사용되는 <a>지도 학습 알고리즘</a></li>
<li>출력값이 연속적인 수치가 아닌 <a>0 또는 1과 같은 범주형 값</a>을 가질 때 사용됨</li>
<li><a>시그모이드 함수</a>를 활용하여 예측값을 확률 형태로 출력</li>
</ul>
<h1 id="2-분류-문제와-결정-경계">2. 분류 문제와 결정 경계</h1>
<ul>
<li><code>분류(Classification)</code>는 특정 입력에 대해 출력이 <a>카테고리(클래스)</a>로 나오는 문제</li>
<li>대표 예시: <code>스팸 여부</code>, <code>종양의 악성 여부</code>, <code>사기 거래 탐지</code></li>
</ul>
<blockquote>
<p>일반적으로 출력 레이블은 <a>0(False) 또는 1(True)</a>로 표현함</p>
</blockquote>
<h3 id="a결정-경계-decision-boundarya"><a>결정 경계 (Decision Boundary)</a></h3>
<ul>
<li>로지스틱 회귀는 다음과 같은 함수 구조를 가짐:</li>
</ul>
<blockquote>
<p>$f(x) = \frac{1}{1 + e^{-z}}, \quad z = w \cdot x + b$</p>
</blockquote>
<ul>
<li>결정 경계는 $z = 0$일 때를 기준으로 정의됨</li>
<li>즉, <a>$w \cdot x + b = 0$</a>이 <a>분류 기준</a></li>
<li>결정 경계의 좌우에 따라 <code>y = 0</code> 또는 <code>y = 1</code>로 예측</li>
</ul>
<h1 id="3-시그모이드-함수">3. 시그모이드 함수</h1>
<ul>
<li>로지스틱 회귀의 핵심 함수는 <a>시그모이드(Sigmoid)</a> 함수</li>
</ul>
<h3 id="정의">정의:</h3>
<blockquote>
<p>$g(z) = \frac{1}{1 + e^{-z}}$</p>
</blockquote>
<ul>
<li>$z \rightarrow +\infty$ 일 때 $g(z) \rightarrow 1$</li>
<li>$z \rightarrow -\infty$ 일 때 $g(z) \rightarrow 0$</li>
<li>$z = 0$일 때 $g(z) = 0.5$</li>
</ul>
<p align="center">
  <img src="https://latex.codecogs.com/svg.image?g(z)=\frac{1}{1&plus;e^{-z}}" width="300"/>
</p>

<blockquote>
<p>출력값은 항상 <a>0과 1 사이</a>이며, <a>1일 확률</a>로 해석 가능</p>
</blockquote>
<h1 id="4-예측과-분류-기준">4. 예측과 분류 기준</h1>
<ul>
<li>로지스틱 회귀의 예측값 $f(x)$는 <a>확률로 해석</a></li>
<li>일반적으로 다음과 같은 기준을 사용</li>
</ul>
<h3 id="임계값-기준">임계값 기준:</h3>
<ul>
<li>$f(x) \geq 0.5$ → <code>y = 1</code> 예측</li>
<li>$f(x) &lt; 0.5$ → <code>y = 0</code> 예측</li>
</ul>
<blockquote>
<p>0.5는 가장 일반적인 <a>임계값</a>, 문제에 따라 조정 가능</p>
</blockquote>
<h1 id="5-비용-함수-cost-function">5. 비용 함수 (Cost Function)</h1>
<blockquote>
<p>제곱 오차는 비선형 분류 문제에 적합하지 않음 → <a>로그 손실 함수</a> 사용</p>
</blockquote>
<h3 id="a로지스틱-손실-함수a"><a>로지스틱 손실 함수</a>:</h3>
<blockquote>
<p>$Loss(f, y) = -y \log(f) - (1 - y) \log(1 - f)$</p>
</blockquote>
<h3 id="a전체-비용-함수a"><a>전체 비용 함수</a>:</h3>
<blockquote>
<p>$J(w, b) = \frac{1}{m} \sum_{i=1}^{m} Loss(f^{(i)}, y^{(i)})$</p>
</blockquote>
<ul>
<li>$m$: <a>훈련 샘플 개수</a></li>
<li>$f^{(i)}$: $i$번째 예측값, $y^{(i)}$: 실제 레이블</li>
</ul>
<blockquote>
<p>이 함수는 <a>볼록(convex)하여 경사 하강법으로 최적화</a> 가능</p>
</blockquote>
<h1 id="6-경사-하강법-gradient-descent">6. 경사 하강법 (Gradient Descent)</h1>
<blockquote>
<p>비용 함수를 최소화하기 위해 <a>반복적으로 가중치와 편향을 조정</a>하는 알고리즘</p>
</blockquote>
<h3 id="a파라미터-업데이트-식a"><a>파라미터 업데이트 식</a>:</h3>
<p>$w_j := w_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^{m} (f^{(i)} - y^{(i)}) \cdot x_j^{(i)}$</p>
<p>$b := b - \alpha \cdot \frac{1}{m} \sum_{i=1}^{m} (f^{(i)} - y^{(i)})$</p>
<ul>
<li><a>$\alpha$: 학습률 (learning rate)</a></li>
</ul>
<blockquote>
<p>학습률이 너무 크면 <a>발산</a>하고, 작으면 <a>수렴 속도가 느림</a></p>
</blockquote>
<h1 id="7-결정-경계의-확장-다항-로지스틱-회귀">7. 결정 경계의 확장: 다항 로지스틱 회귀</h1>
<ul>
<li>로지스틱 회귀는 <a>다항 특성(polynomial features)</a>을 사용해 <a>복잡한 결정 경계</a>도 학습 가능</li>
</ul>
<h3 id="예시">예시:</h3>
<p>$f(x) = g(w_1x_1^2 + w_2x_2^2 + b)$</p>
<ul>
<li>이 경우 결정 경계는 <a>원형 또는 타원형</a>이 될 수 있음</li>
<li>차수가 높아질수록 <a>복잡한 분류 경계</a> 형성 가능</li>
</ul>
<blockquote>
<p>단, 복잡한 모델일수록 <a>과적합(overfitting)</a>에 주의해야 함</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[다중 선형 회귀 분석과 경사하강법]]></title>
            <link>https://velog.io/@nin_cheon/%EB%8B%A4%EC%A4%91-%EC%84%A0%ED%98%95-%ED%9A%8C%EA%B7%80-%EB%B6%84%EC%84%9D%EA%B3%BC-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95</link>
            <guid>https://velog.io/@nin_cheon/%EB%8B%A4%EC%A4%91-%EC%84%A0%ED%98%95-%ED%9A%8C%EA%B7%80-%EB%B6%84%EC%84%9D%EA%B3%BC-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95</guid>
            <pubDate>Sun, 23 Mar 2025 02:02:58 GMT</pubDate>
            <description><![CDATA[<h1 id="1-다중-선형-회귀의-개요">1. 다중 선형 회귀의 개요</h1>
<ul>
<li><code>다중 선형 회귀</code>는 하나 이상의 <code>입력 특징(feature)</code>을 바탕으로 <code>출력 값</code>을 예측하는 지도 학습 알고리즘</li>
<li>기본적인 <code>선형 회귀</code>의 확장된 형태로, <a>다양한 특성을 사용하여 더 정확한 예측을 수행</a></li>
</ul>
<h1 id="2-다중-선형-회귀의-수학적-모델">2. 다중 선형 회귀의 수학적 모델</h1>
<ul>
<li>다중 선형 회귀는 여러 입력값을 각각의 가중치와 곱해 더한 후 편향값을 더하는 모델</li>
<li>모델은 다음과 같이 정의됨:</li>
</ul>
<blockquote>
<p>일반 수식:</p>
</blockquote>
<h3 id="fvecx--vecw-cdot-vecx--b">$f(\vec{x}) = \vec{w} \cdot \vec{x} + b$</h3>
<ul>
<li>$\vec{w} = [w_1, w_2, ..., w_n]$ : 가중치 벡터  </li>
<li>$\vec{x} = [x_1, x_2, ..., x_n]$ : 입력 특징 벡터  </li>
<li>$b$ : 편향 (bias)  </li>
<li>$f(\vec{x})$ : 예측 값  </li>
</ul>
<h1 id="3-다중-선형-회귀-모델의-예시">3. 다중 선형 회귀 모델의 예시</h1>
<blockquote>
<p>입력 특징 예시:</p>
</blockquote>
<ul>
<li>$x_1$: 집 크기 (평방피트)</li>
<li>$x_2$: 침실 수</li>
<li>$x_3$: 층 수</li>
<li>$x_4$: 주택의 연수 (나이)</li>
</ul>
<blockquote>
<p>모델 예시:</p>
</blockquote>
<h3 id="haty--01x_1--4x_2--10x_3---2x_4--80">$\hat{y} = 0.1x_1 + 4x_2 + 10x_3 - 2x_4 + 80$</h3>
<ul>
<li>특징마다 <a>예측에 영향을 주는 비율이 다름</a><ul>
<li>ex) 침실이 추가되면 $4,000$달러 상승, 연식 1년 증가 시 $2,000$달러 하락 등</li>
</ul>
</li>
</ul>
<h1 id="4-벡터화-vectorization">4. 벡터화 (Vectorization)</h1>
<blockquote>
<p>벡터화를 사용하면 연산을 효율적으로 처리할 수 있으며, <a>코드가 짧고 실행 속도가 빨라짐</a></p>
</blockquote>
<h3 id="4-1-벡터화-전-비효율적인-구현">4-1. 벡터화 전 (비효율적인 구현):</h3>
<pre><code class="language-python">f = 0
for j in range(n):
    f += w[j] * x[j]
f += b</code></pre>
<h3 id="4-2-벡터화-후-효율적인-구현">4-2. 벡터화 후 (효율적인 구현):</h3>
<pre><code class="language-python">f = np.dot(w, x) + b</code></pre>
<ul>
<li><code>np.dot()</code>은 두 벡터의 내적(dot product)을 계산하는 함수</li>
<li><a>NumPy는 내부적으로 병렬 연산</a>을 활용하여 속도 향상</li>
</ul>
<h1 id="5-다중-선형-회귀의-비용-함수">5. 다중 선형 회귀의 비용 함수</h1>
<blockquote>
<p>비용 함수는 예측값과 실제값 사이의 오차를 수치화</p>
</blockquote>
<h3 id="jw-b--frac12m-sum_i1m-f_wxi---yi2">$J(w, b) = \frac{1}{2m} \sum_{i=1}^{m} (f_w(x^{(i)}) - y^{(i)})^2$</h3>
<ul>
<li>$m$: 훈련 샘플 개수  </li>
<li>$x^{(i)}$: $i$번째 샘플의 입력 특징 벡터  </li>
<li>$y^{(i)}$: $i$번째 샘플의 실제 출력 값  </li>
<li>$f_w(x^{(i)})$: 예측 값  </li>
</ul>
<blockquote>
<p>비용 함수는 <a>기울기 하강법을 통해 최소화</a></p>
</blockquote>
<h1 id="6-경사-하강법-gradient-descent">6. 경사 하강법 (Gradient Descent)</h1>
<blockquote>
<p>모델의 가중치와 편향을 반복적으로 업데이트하여 <a>비용 함수의 최소값을 찾는 최적화 알고리즘</a></p>
</blockquote>
<h3 id="6-1-다중-특징일-때의-업데이트-식">6-1. 다중 특징일 때의 업데이트 식</h3>
<p>$w_j := w_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^{m} (f_w(x^{(i)}) - y^{(i)}) \cdot x_j^{(i)}$</p>
<p>$b := b - \alpha \cdot \frac{1}{m} \sum_{i=1}^{m} (f_w(x^{(i)}) - y^{(i)})$</p>
<ul>
<li>$\alpha$: 학습률 (Learning Rate)</li>
</ul>
<h3 id="6-2-벡터화된-형태">6-2. 벡터화된 형태</h3>
<pre><code class="language-python">dw = (1/m) * np.dot(X.T, (y_pred - y_true))
db = (1/m) * np.sum(y_pred - y_true)

w = w - alpha * dw
b = b - alpha * db</code></pre>
<h1 id="7-특징-스케일링-feature-scaling">7. 특징 스케일링 (Feature Scaling)</h1>
<blockquote>
<p>여러 특징의 값 범위가 크게 다를 경우, <a>경사 하강법의 수렴 속도가 느려질 수 있음</a></p>
</blockquote>
<h3 id="7-1-스케일링-방법">7-1. 스케일링 방법</h3>
<h4 id="1-min-max-scaling">(1) Min-Max Scaling:</h4>
<p>$x_i := \frac{x_i - \min(x)}{\max(x) - \min(x)}$</p>
<h4 id="2-평균-정규화-mean-normalization">(2) 평균 정규화 (Mean Normalization):</h4>
<p>$x_i := \frac{x_i - \mu}{\max(x) - \min(x)}$</p>
<h4 id="3-z-점수-정규화-z-score-normalization">(3) Z-점수 정규화 (Z-score Normalization):</h4>
<p>$x_i := \frac{x_i - \mu}{\sigma}$</p>
<ul>
<li>$\mu$: 평균, $\sigma$: 표준편차</li>
</ul>
<blockquote>
<p>일반적으로 <a>모든 특징이 -1 ~ 1 정도의 범위</a>를 가지면 학습이 빠름</p>
</blockquote>
<h1 id="8-학습률-선택-및-수렴-확인">8. 학습률 선택 및 수렴 확인</h1>
<ul>
<li>학습률 $\alpha$가 너무 작으면 → <a>수렴이 매우 느림</a>  </li>
<li>학습률이 너무 크면 → <a>발산할 수 있음</a></li>
</ul>
<h3 id="수렴-확인-방법">수렴 확인 방법:</h3>
<ul>
<li>반복 횟수에 따른 비용 함수 $J(w,b)$의 값 플로팅</li>
<li>반복마다 $J$가 <a>꾸준히 감소하면 수렴 중</a></li>
<li>그래프가 평평해지면 수렴 완료</li>
</ul>
<h1 id="9-특징-엔지니어링-feature-engineering">9. 특징 엔지니어링 (Feature Engineering)</h1>
<blockquote>
<p>원래의 특징을 조합하거나 변형하여 <a>모델 성능을 높이기 위한 새로운 특징을 생성</a></p>
</blockquote>
<h3 id="예시">예시:</h3>
<ul>
<li>$x_1$: 토지 너비  </li>
<li>$x_2$: 토지 깊이<br>→ $x_3 = x_1 \cdot x_2$: 대지 면적</li>
</ul>
<h1 id="10-다항-회귀-polynomial-regression">10. 다항 회귀 (Polynomial Regression)</h1>
<blockquote>
<p>단순 선형이 아닌 <a>비선형 관계를 모델링</a></p>
</blockquote>
<h3 id="예시-1">예시:</h3>
<ul>
<li>입력 $x$: 집 크기</li>
</ul>
<p>모델:</p>
<h3 id="haty--w_1x--w_2x2--w_3x3--b">$\hat{y} = w_1x + w_2x^2 + w_3x^3 + b$</h3>
<p>또는</p>
<h3 id="haty--w_1sqrtx--b">$\hat{y} = w_1\sqrt{x} + b$</h3>
<blockquote>
<p><strong>주의</strong>: 다항 특징을 사용할 경우에도 <a>스케일링이 매우 중요</a></p>
</blockquote>
<h1 id="11-실습에서-사용하는-라이브러리">11. 실습에서 사용하는 라이브러리</h1>
<ul>
<li><code>NumPy</code>: 수치 계산 및 벡터화에 사용</li>
<li><code>Scikit-Learn</code>: 선형 회귀 모델 구현에 자주 사용되는 오픈소스 라이브러리</li>
</ul>
<blockquote>
<p>실무에서도 Scikit-Learn의 <code>LinearRegression</code> 모델을 사용하여 <a>간단하게 회귀 모델 학습 가능</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[회귀 모델과 경사하강법 정리]]></title>
            <link>https://velog.io/@nin_cheon/%ED%9A%8C%EA%B7%80-%EB%AA%A8%EB%8D%B8%EA%B3%BC-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@nin_cheon/%ED%9A%8C%EA%B7%80-%EB%AA%A8%EB%8D%B8%EA%B3%BC-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sun, 16 Mar 2025 01:19:25 GMT</pubDate>
            <description><![CDATA[<h1 id="1-지도-학습의-개요">1. 지도 학습의 개요</h1>
<ul>
<li><code>지도 학습</code> 은 <code>데이터</code>와 해당 정답 ( <code>출력값</code> ) 을 제공하여 <a>모델을 학습시키는 방식</a></li>
<li>지도 학습의 대표적인 예는 <a><code>선형 회귀</code></a> 이며, 이는 기본적인 기계 학습 모델 중 하나</li>
</ul>
<h1 id="2-지도-학습과-선형-회귀의-개념">2. 지도 학습과 선형 회귀의 개념</h1>
<ul>
<li><strong>지도학습</strong><ul>
<li>지도 학습은 <code>입력</code> 과 <code>출력</code> 을 포함하는 <a>훈련 데이터셋을 사용하여 모델을 학습</a></li>
<li>지도 학습 모델의 목표는 주어진 입력 데이터에 대해 <a>가장 적절한 출력을 예측하는 것</a></li>
</ul>
</li>
<li><strong>선형회귀</strong><ul>
<li>선형 회귀 모델은 데이터셋의 <code>입력</code>과 <code>출력</code> 간의 관계를 <a>직선 형태</a>의 함수로 표현하는 모델</li>
<li>선형 회귀를 통해 <a>수치 값을 예측</a>할 수 있으며, 이는 회귀 문제로 분류</li>
</ul>
</li>
</ul>
<h1 id="3-선형-회귀의-수학적-표현">3. 선형 회귀의 수학적 표현</h1>
<blockquote>
<p>선형 회귀 모델은 아래와 같은 수식으로 표현</p>
</blockquote>
<h3 id="fxwxb">$f(x)=wx+b$</h3>
<p>$w : 기울기(가중치, weight)$</p>
<p>$b : 절편(bias)$</p>
<p>$x : 입력 값$</p>
<p>$f(x) : 예측 값$</p>
<h1 id="4-지도-학습-모델의-훈련-과정">4. 지도 학습 모델의 훈련 과정</h1>
<h3 id="4-1-데이터-수집-및-전처리">4-1. <strong>데이터 수집 및 전처리</strong></h3>
<ul>
<li>주어진 데이터셋을 분석하고 필요한 정리 과정을 거침</li>
</ul>
<h3 id="4-2-모델-학습">4-2. <strong>모델 학습</strong></h3>
<ul>
<li>훈련 데이터셋을 사용하여 모델을 학습</li>
</ul>
<h3 id="4-3-비용-함수-정의">4-3. <strong>비용 함수 정의</strong></h3>
<ul>
<li>모델의 예측 값이 실제 값과 얼마나 차이가 있는지를 평가하기 위한 비용 함수를 설정</li>
</ul>
<h3 id="4-4-경사-하강법-적용">4-4. <strong>경사 하강법 적용</strong></h3>
<ul>
<li>비용 함수 값을 최소화하는 방향으로 모델의 <a>파라미터 ( $w$ , $b$ ) 를 조정</a></li>
</ul>
<h3 id="4-5-최적의-모델-획득">4-5. <strong>최적의 모델 획득</strong></h3>
<ul>
<li><a>최적의 파라미터 값</a>을 찾으면 모델 학습 완료</li>
</ul>
<h1 id="5-비용-함수-cost-function">5. 비용 함수 (Cost Function)</h1>
<blockquote>
<p>비용 함수는 모델이 얼마나 정확한지 측정하는 함수로, 대표적인 비용 함수는 평균 제곱 오차(Mean Squared Error, MSE)이다.</p>
</blockquote>
<p>$
MSE = \frac{1}{m} \sum_{i=1}^{m} (f_w(x^i) - y^i)^2
$</p>
<ul>
<li>비용함수 $J(w,b)$는 MSE의 변형으로, 미분을 간단하게하기 위해 $\frac{1}{2}$을 곱한 형태 
$
J(w, b) = \frac{1}{2m} \sum_{i=1}^{m} (f_w(x^i) - y^i)^2
$</li>
</ul>
<p>$m : 훈련 데이터의 개수$</p>
<p>$f_w(x^i) : 모델이 예측한 값$</p>
<p>$y^i : 실제 정답 값$</p>
<blockquote>
<p>비용 함수는 모델의 예측 값과 실제 값 간의 오차의 제곱을 평균한 값이며, 이를 최소화하는 것이 목표이다.</p>
</blockquote>
<h1 id="6-경사-하강법-gradient-descent">6. 경사 하강법 (Gradient Descent)</h1>
<blockquote>
<p>경사 하강법은 비용 함수가 최소화되는 방향으로 모델의 파라미터를 조정하는 최적화 알고리즘이다.</p>
</blockquote>
<h3 id="6-1-경사-하강법-업데이트-식">6-1 경사 하강법 업데이트 식</h3>
<p>$w := w - \alpha \frac{\partial J}{\partial w}, \quad b := b - \alpha \frac{\partial J}{\partial b}$</p>
<p>$\alpha : 학습률 (Learning Rate)$</p>
<p>$\frac{\partial J}{\partial w}, \frac{\partial J}{\partial b}  : 비용 함수에 대한 기울기(미분값)$</p>
<h3 id="6-2-경사-하강법-적용-과정">6-2 경사 하강법 적용 과정</h3>
<ol>
<li><p>$w$ 와 $b$ 를 <a>임의의 값으로 초기화</a></p>
</li>
<li><p><a>비용 함수의 기울기 ( 미분 값 ) 를 계산</a></p>
</li>
<li><p>$w$ 와 $b$ 를 기울기 <a>반대 방향</a>으로 업데이트</p>
</li>
<li><p>비용 함수의 값이 더 이상 감소하지 않을 때까지 <a>반복</a></p>
</li>
</ol>
<h1 id="7-경사-하강법의-학습률-선택">7. 경사 하강법의 학습률 선택</h1>
<ul>
<li><p><a>학습률이 <strong>너무 작으면</strong> </a> 최적의 값을 찾는 데 시간이 오래 걸림</p>
</li>
<li><p><a>학습률이 <strong>너무 크면</strong></a> 최적값을 지나쳐서 발산할 가능성이 있음</p>
</li>
<li><p><a><strong>적절한</strong> 학습률</a>을 선택하는 것이 중요</p>
</li>
</ul>
<h1 id="8-선형-회귀의-훈련-과정-시각화">8. 선형 회귀의 훈련 과정 시각화</h1>
<blockquote>
<p>경사 하강법을 통해 비용 함수가 최소화되는 과정을 시각적으로 나타낼 수 있다.</p>
</blockquote>
<ul>
<li><p><strong>등고선 그래프</strong>: 비용 함수의 값이 <a>같은 지점</a>을 연결한 그래프</p>
<ul>
<li>학습 과정 동안 파라미터 $(w,b)$가 점점 최적의 값으로 이동하는 경로를 확인할 수 있음</li>
</ul>
</li>
<li><p><strong>3D 표면 그래프</strong>: 비용 함수 값을 <a>3차원</a>으로 표현한 그래프</p>
<ul>
<li>경사 하강법이 점점 최저점(최적해)으로 이동하는 과정을 보여줌</li>
</ul>
</li>
<li><p><strong>비용 함수 그래프</strong>: 학습 단계별 비용 함수 값$𝐽(𝑤,𝑏)$이 점점 줄어들어 <a>최소값</a>에 도달하는지 확인하는 그래프</p>
</li>
</ul>
<h1 id="9-일괄-경사-하강법-batch-gradient-descent">9. 일괄 경사 하강법 (Batch Gradient Descent)</h1>
<blockquote>
<p>전체 데이터셋을 사용하여 기울기를 계산하고 모델을 업데이트하는 방식.</p>
</blockquote>
<ul>
<li>모든 훈련 샘플을 고려하기 때문에 <a>안정적인 학습이 가능</a>하지만 <a>계산량이 많음</a></li>
</ul>
<h1 id="10-선형-회귀-모델의-활용">10. 선형 회귀 모델의 활용</h1>
<ul>
<li><p><strong>주택 가격 예측</strong></p>
</li>
<li><p><strong>제품 판매량 예측</strong></p>
</li>
<li><p><strong>주식 가격 예측</strong></p>
</li>
<li><p><strong>경제 데이터 분석</strong></p>
</li>
<li><p><strong>의료 분야에서 질병 예측</strong></p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[머신러닝 정리]]></title>
            <link>https://velog.io/@nin_cheon/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@nin_cheon/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sat, 08 Mar 2025 06:22:32 GMT</pubDate>
            <description><![CDATA[<h1 id="1-머신-러닝이란">1. 머신 러닝이란?</h1>
<ul>
<li><code>머신 러닝(Machine Learning)</code>은 컴퓨터가 프로그래밍 없이도 학습할 수 있도록 하는 연구 분야</li>
<li>데이터를 기반으로 <a>패턴을 찾아 예측</a>하거나 <a>의사 결정을 내리는 알고리즘을 개발</a>하는 것이 핵심</li>
<li><code>인공지능(AI)</code>의 한 분야로, 다양한 산업과 실생활에서 <strong>널리 활용</strong>되고 있음</li>
</ul>
<h1 id="2-머신-러닝의-실생활-적용-사례">2. 머신 러닝의 실생활 적용 사례</h1>
<blockquote>
<p><strong>머신 러닝</strong>은 이미 여러 산업 및 서비스에서 사용되고 있으며, 아래와 같은 다양한 분야에서 사용되고 있다.</p>
</blockquote>
<h3 id="2-1-인터넷-및-소셜-미디어">2-1. 인터넷 및 소셜 미디어</h3>
<ul>
<li><strong>웹 검색</strong> : <code>구글</code>, <code>바이두</code>와 같은 검색 엔진은 머신 러닝을 사용하여 <a>검색 결과를 최적화</a>하고 사용자의 <a>검색 의도를 분석</a></li>
<li><strong>사진 태깅 및 필터링</strong> : <code>인스타그램</code>, <code>스냅챗</code> 등의 SNS는 머신 러닝을 이용하여 <a>얼굴을 인식</a>하고, <a>자동으로 태그를 추천함</a></li>
<li><strong>추천 시스템</strong> : <code>유튜브</code>, <code>넷플릭스</code>, <code>스포티파이</code> 등의 서비스는 <a>사용자 행동을 분석하여 맞춤형 콘텐츠를 추천함</a></li>
</ul>
<h3 id="2-2-산업-및-공정-자동화">2-2. 산업 및 공정 자동화</h3>
<ul>
<li><strong>풍력 발전 최적화</strong> : 머신 러닝을 이용하여 <a>바람 패턴을 분석</a>하고, <a>풍력 터빈의 효율성을 극대화</a></li>
<li><strong>공장 자동화 및 품질 관리</strong> : 제조업에서는 머신 러닝을 활용하여 <a>결함을 감지</a>하고 <a>생산 공정을 최적화</a></li>
<li><strong>물류 및 공급망 최적화</strong> : <code>아마존</code>, <code>UPS</code> 등의 기업은 머신 러닝을 활용하여 <a>배송 경로를 최적화</a>하고, <a>재고 관리를 자동화함</a></li>
</ul>
<h3 id="2-3-의료-및-헬스케어">2-3. 의료 및 헬스케어</h3>
<ul>
<li><strong>질병 진단</strong> : 머신 러닝 기반 의료 AI는 <code>X-ray</code>, <code>MRI</code> 등의 의료 영상을 분석하여 <a>질병을 조기에 진단</a>하는 데 활용</li>
<li><strong>유전체 분석 및 맞춤형 치료</strong> : 환자의 유전체 데이터를 분석하여 <a>최적의 치료법을 추천</a></li>
<li><strong>의료 기록 분석</strong> : 환자의 과거 진료 기록을 분석하여 <a>질병 발생 가능성을 예측</a></li>
</ul>
<h3 id="2-4-금융-및-경제">2-4. 금융 및 경제</h3>
<ul>
<li><strong>신용 평가 및 사기 탐지</strong> : 금융 기관은 머신 러닝을 활용하여 대출 신청자의 <a>신용도를 평가</a>하고, <a>금융 사기를 감지</a></li>
<li><strong>자동 주식 거래</strong> : 머신 러닝 모델은 시장 데이터를 분석하여 자동으로 <a>투자 전략을 수립하고 거래를 실행</a></li>
<li><strong>보험 리스크 평가</strong> : 머신 러닝을 이용하여 고객의 보험료를 산정하고, 리스크를 예측</li>
</ul>
<h1 id="3-머신-러닝의-주요-개념">3. 머신 러닝의 주요 개념</h1>
<blockquote>
<p>머신 러닝은 크게 <strong>지도 학습(Supervised Learning), 비지도 학습(Unsupervised Learning), 강화 학습(Reinforcement Learning)</strong>으로 나뉨</p>
</blockquote>
<h3 id="3-1-지도-학습supervised-learning">3-1. 지도 학습(Supervised Learning)</h3>
<blockquote>
<p>지도 학습은 <code>입력(X)</code>과 <code>출력(Y)</code> 데이터를 학습하여 새로운 입력이 주어졌을 때 적절한 출력을 예측하는 방식으로, <span style = 'color : #ff2400'>가장 많이 사용되는 머신 러닝 방식</span>이며, 다음과 같은 문제에 적용됨.</p>
</blockquote>
<h4 id="3-1-1-지도-학습의-유형">3-1-1. 지도 학습의 유형</h4>
<h4 id="회귀regression">회귀(Regression)</h4>
<ul>
<li><p>연속적인 값을 예측하는 문제</p>
<ul>
<li>예시: <code>집값 예측</code>, <code>날씨 예측</code>, <code>주가 예측</code></li>
</ul>
</li>
</ul>
<h4 id="분류classification">분류(Classification)</h4>
<ul>
<li><p>데이터를 특정 카테고리로 분류하는 문제</p>
<ul>
<li>예시: <code>이메일 스팸 필터링(스팸/비스팸)</code>, <code>암 진단(양성/악성)</code>, <code>이미지 인식(고양이/개)</code></li>
</ul>
</li>
</ul>
<h4 id="3-1-2-지도-학습의-주요-알고리즘">3-1-2. 지도 학습의 주요 알고리즘</h4>
<ul>
<li><p><strong>선형 회귀(Linear Regression)</strong></p>
<ul>
<li><code>회귀 알고리즘</code></li>
</ul>
</li>
<li><p><strong>로지스틱 회귀(Logistic Regression)</strong></p>
<ul>
<li><code>분류 알고리즘</code></li>
</ul>
</li>
<li><p><strong>결정 트리(Decision Tree)</strong></p>
<ul>
<li><code>분류 알고리즘</code></li>
</ul>
</li>
<li><p><strong>랜덤 포레스트(Random Forest)</strong></p>
<ul>
<li><code>분류 알고리즘</code></li>
</ul>
</li>
<li><p><strong>서포트 벡터 머신(SVM)</strong></p>
<ul>
<li><code>분류 알고리즘</code></li>
</ul>
</li>
<li><p><strong>인공 신경망(Artificial Neural Networks)</strong></p>
<ul>
<li><code>회귀 알고리즘</code>, <code>분류 알고리즘</code></li>
</ul>
</li>
</ul>
<h1 id="4-머신-러닝-학습-과정">4. 머신 러닝 학습 과정</h1>
<h3 id="4-1-데이터-수집-및-전처리">4-1. 데이터 수집 및 전처리</h3>
<blockquote>
<p>머신 러닝 모델을 학습시키기 위해서는 <a>양질의 데이터</a>가 필요함</p>
</blockquote>
<ul>
<li><p><strong>데이터 정제(Cleaning)</strong> : <code>결측치</code> 처리, <code>이상치</code> 제거, <code>정규화</code> 및 <code>표준화</code></p>
</li>
<li><p><strong>특징 엔지니어링(Feature Engineering)</strong> : 유의미한 특징을 추출하고 변형하여 <a>모델 성능 향상</a></p>
</li>
</ul>
<h3 id="4-2-모델-학습-및-평가">4-2. 모델 학습 및 평가</h3>
<ul>
<li><p><code>학습 데이터(Training Data)</code>를 이용하여 모델을 학습시킴</p>
</li>
<li><p><code>검증 데이터(Validation Data)</code>로 모델의 성능을 조정함</p>
</li>
<li><p><code>테스트 데이터(Test Data)</code>로 모델의 최종 성능을 평가함</p>
</li>
</ul>
<blockquote>
<p>성능 평가 지표 : <strong>정확도(Accuracy)</strong>, <strong>정밀도(Precision)</strong>, <strong>재현율(Recall)</strong>, <strong>F1-score</strong>, <strong>ROC 곡선</strong></p>
</blockquote>
<h3 id="4-3-모델-최적화">4-3. 모델 최적화</h3>
<ul>
<li><p><strong>하이퍼파라미터 튜닝</strong> : 모델의 성능을 최적화하기 위해 파라미터를 조정함</p>
</li>
<li><p><strong>교차 검증(Cross Validation)</strong> : 데이터를 여러 번 나누어 모델을 평가하는 기법</p>
</li>
<li><p><strong>오버피팅(Overfitting) 방지</strong> : 모델이 훈련 데이터에 과적합되지 않도록 <code>정규화(Regularization)</code> 기법 사용</p>
</li>
</ul>
<h3 id="4-4-실전-적용">4-4. 실전 적용</h3>
<ul>
<li><p><strong>모델 배포</strong> : 학습된 모델을 실제 환경에 적용하여 사용</p>
</li>
<li><p><strong>지속적인 학습 및 개선</strong> : 새로운 데이터가 추가될 때 모델을 업데이트하여 성능 유지</p>
</li>
</ul>
<h1 id="5-머신-러닝-학습을-위한-도구-및-환경">5. 머신 러닝 학습을 위한 도구 및 환경</h1>
<h3 id="5-1-jupyter-notebook">5-1. Jupyter Notebook</h3>
<ul>
<li><p><code>Python</code> 기반의 대화형 개발 환경</p>
<ul>
<li>머신 러닝 실습 및 데이터 분석에 유용</li>
</ul>
</li>
</ul>
<h3 id="52-주요-라이브러리">5.2 주요 라이브러리</h3>
<ul>
<li><p><strong>NumPy</strong>, <strong>Pandas</strong> : 데이터 처리 및 분석</p>
</li>
<li><p><strong>Matplotlib</strong>, <strong>Seaborn</strong> : 데이터 시각화</p>
</li>
<li><p><strong>Scikit-Learn</strong> : 머신 러닝 알고리즘 구현</p>
</li>
<li><p><strong>TensorFlow</strong>, <strong>PyTorch</strong>: 딥러닝 모델 개발</p>
</li>
</ul>
<h1 id="6-머신-러닝의-미래-전망">6. 머신 러닝의 미래 전망</h1>
<blockquote>
<p>2030년까지 머신 러닝과 AI는 약 13조 달러의 경제적 가치를 창출할 것으로 예상됨</p>
</blockquote>
<ul>
<li><code>자율 주행</code>, <code>스마트 팩토리</code>, <code>개인화된 의료</code> 등 다양한 분야에서 지속적으로 발전</li>
<li><a>윤리적 문제(개인정보 보호, 편향성 문제)</a>와 함께 <a>신뢰할 수 있는 AI 개발</a>이 중요한 과제</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[연구일지 #1]]></title>
            <link>https://velog.io/@nin_cheon/%EC%97%B0%EA%B5%AC%EC%9D%BC%EC%A7%80-1</link>
            <guid>https://velog.io/@nin_cheon/%EC%97%B0%EA%B5%AC%EC%9D%BC%EC%A7%80-1</guid>
            <pubDate>Sat, 01 Feb 2025 02:15:34 GMT</pubDate>
            <description><![CDATA[<h3 id="1연구-개요">1.연구 개요</h3>
<p>콘텐츠 업데이트가 RPG 게임 산업의 유저 잔존율에 미치는 영향을 분석하고자 한다.</p>
<h3 id="2데이터-수집2025-01-26-기준">2.데이터 수집(2025-01-26 기준)</h3>
<p>본 연구를 진행함에 있어서, 전체 캐릭터를 대상으로 분석을 진행할 경우 많은 어려움이 있을 것으로 예상된다.</p>
<blockquote>
<p>전체 캐릭터의 수 : 63,901,683
260레벨 이상 캐릭터의 수 : 1,394,192</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/nin_cheon/post/3d90aed0-98e4-4739-9abc-8359713ac4be/image.png" alt="">
따라서, 260레벨 이상으로 분석 구간을 제한할 경우 분석에 굉장히 용이할 것이다.</p>
<h3 id="3각-구간별-분석">3.각 구간별 분석</h3>
<p>그렇다면, 260레벨 미만의 구간에서 대부분의 캐릭터가 성장하지 않음을 증명하면, 260레벨 미만의 구간의 분석은 의미가 없다고 볼 수 있다.</p>
<pre><code># merged_file_over_260의 ratio column이 0인 row의 비율과 merged_file_under_260의 ratio column이 0인 row의 비율을 출력

print(len(merged_file_over_260[merged_file_over_260[&#39;ratio&#39;] == 0]) / len(merged_file_over_260))

print(len(merged_file_under_260[merged_file_under_260[&#39;ratio&#39;] == 0]) / len(merged_file_under_260))</code></pre><p>ratio라는 변수는 2024-12-27의 exp의 총량 대비 2025-01-26의 exp 총량을 나타낸 변수이다.</p>
<p>따라서, ratio가 0이라는 것은 2024-12-27의 exp와 2025-01-26의 exp의 차이가 없다는 것을 의미한다.
<img src="https://velog.velcdn.com/images/nin_cheon/post/89ea3006-da98-4d6b-9702-12f78c87077d/image.png" alt=""></p>
<pre><code>labels = &#39;merged_file_over_260&#39;, &#39;merged_file_under_260&#39;
sizes = [len(merged_file_over_260[merged_file_over_260[&#39;ratio&#39;] == 0]) / len(merged_file), len(merged_file_under_260[merged_file_under_260[&#39;ratio&#39;] == 0]) / len(merged_file)]
colors = [&#39;gold&#39;, &#39;yellowgreen&#39;]
explode = (0.1, 0)

plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct=&#39;%1.1f%%&#39;, shadow=True, startangle=140)
plt.axis(&#39;equal&#39;)
plt.show()</code></pre><ul>
<li>전체 row 수 대비 260레벨 이상 구간에서 성장이 멈춘 캐릭터의 비율은 1.2%이다.</li>
<li>전체 row 수 대비 260레벨 미만 구간에서 성장이 멈춘 캐릭터의 비율은 98.8%이다.</li>
</ul>
<h3 id="4현상-분석">4.현상 분석</h3>
<p>사실 메이플스토리라는 게임은 260레벨부터 시작이라는 말이 있을 정도로, 하이퍼버닝 등의 이벤트로 260을 달성하기 쉽다.
더불어, 유니온이라는 시스템이 존재해서 전 직업을 200레벨 혹은 250레벨까지 성장시킨 후 방치하는 일명 &quot;주차&quot;라는 플레이 방식이 만연하기 때문에 200레벨, 250레벨에 주차시켜둔 캐릭터가 굉장히 많기 때문에 이러한 현상이 발생한다.
</br>
여기서 한 가지 의문이 들 수 있는데, 과연 경험치가 오르지 않았다고 해서 플레이를 하지 않는다고 말할 수 있는가에 대한 의문이다.
이에 대한 대답은 <code>당연하다</code>이다.
설령, 특정 레벨대에 주차시켜놓고 보스만 잡는다고 하더라도, 보스몬스터를 잡으면 소량의 경험치가 들어온다.
사냥 컨텐츠는 물론이고, 실제로 인게임을 플레이하는 대부분의 활동은 경험치의 증가를 수반한다.
따라서, 경험치가 증가하지 않는 캐릭터는 실질적 플레이를 하지 않는 캐릭터라고 보는 것이 타당하다.</p>
<h3 id="5이후-분석-계획">5.이후 분석 계획</h3>
<p>오늘 분석을 위해, 총 132,266,991개의 데이터를 수집하였다. 너무 방대한 양의 데이터였기 때문에 시간이 과도하게 많이 들었다고 생각한다.
앞으로 분석을 위한 데이터는 모든 일자별 260레벨 이상의 캐릭터를 대상으로 분석할 예정이다.</p>
<hr>
<h3 id="6추가-분석">6.추가 분석</h3>
<h4 id="260레벨-이상-구간에서의-레벨-구간별-분포-비율">260레벨 이상 구간에서의 레벨 구간별 분포 비율(%)</h4>
<p><img src="https://velog.velcdn.com/images/nin_cheon/post/cf016c23-0f1b-453d-8cd4-2104d04b1cd7/image.png" alt=""></p>
<h4 id="260레벨-미만-구간에서의-레벨-구간별-분포-비율">260레벨 미만 구간에서의 레벨 구간별 분포 비율(%)</h4>
<p><img src="https://velog.velcdn.com/images/nin_cheon/post/140b9eee-e2df-4f28-adb6-43785c05ab7f/image.png" alt=""></p>
<ul>
<li>메이플 스토리 유니온 주차구간인 200레벨과 140레벨에 있는 캐릭터의 비율이 유의미하게 높다.</li>
<li>250레벨 주차구간의 경우, 하이퍼버닝이 있긴하지만 대부분의 유저는 달성하기 어려운 레벨대이므로 많지는 않았다</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[블로그 시작]]></title>
            <link>https://velog.io/@nin_cheon/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%8B%9C%EC%9E%91</link>
            <guid>https://velog.io/@nin_cheon/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%8B%9C%EC%9E%91</guid>
            <pubDate>Tue, 26 Nov 2024 06:38:05 GMT</pubDate>
            <description><![CDATA[<p>이것 저것 공부하면서 본 내용들을 조금씩 적어보려고 한다.
앞으로 공부할 내용이 더 많으니까 하루에 하나씩이라도 적어보자!</p>
]]></description>
        </item>
    </channel>
</rss>