<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>j_hyun11.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 20 May 2022 07:16:16 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. j_hyun11.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/j_hyun11" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[12. 사이킷런으로 구현해 보는 머신러닝]]></title>
            <link>https://velog.io/@j_hyun11/12.-%EC%82%AC%EC%9D%B4%ED%82%B7%EB%9F%B0%EC%9C%BC%EB%A1%9C-%EA%B5%AC%ED%98%84%ED%95%B4-%EB%B3%B4%EB%8A%94-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D</link>
            <guid>https://velog.io/@j_hyun11/12.-%EC%82%AC%EC%9D%B4%ED%82%B7%EB%9F%B0%EC%9C%BC%EB%A1%9C-%EA%B5%AC%ED%98%84%ED%95%B4-%EB%B3%B4%EB%8A%94-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D</guid>
            <pubDate>Fri, 20 May 2022 07:16:16 GMT</pubDate>
            <description><![CDATA[<h1 id="1-다양한-머신러닝-알고리즘">1. 다양한 머신러닝 알고리즘</h1>
<h2 id="1-1-지도학습-supervised-learning">1-1. 지도학습 (Supervised Learning)</h2>
<p>분류(Classification) : 예측해야할 데이터가 범주형(categorical) 변수일때 분류 라고 함
회귀(Regression) : 예측해야할 데이터가 연속적인 값 일때 회귀 라고 함
예측(Forecasting) : 과거 및 현재 데이터를 기반으로 미래를 예측하는 과정</p>
<h2 id="1-2-비지도학습-unsupervised-learning">1-2. 비지도학습 (Unsupervised Learning)</h2>
<p>클러스터링 : 특정 기준에 따라 유사한 데이터끼리 그룹화함
차원축소 : 고려해야할 변수를 줄이는 작업, 변수와 대상간 진정한 관계를 도출하기 용이</p>
<blockquote>
<p>정답 유무, 데이터의 종류, 특성, 문제 정의에 따라 머신러닝 알고리즘은 굉장히 복합적으로 사용</p>
</blockquote>
<h2 id="1-3-강화학습-reinforcement-learning">1-3. 강화학습 (Reinforcement Learning)</h2>
<p>학습하는 시스템을 에이전트라고 하고, 환경을 관찰해서 에이전트가 스스로 행동하게 한다. 모델은 그 결과로 특정 보상을 받아 이 보상을 최대화하도록 학습한다.</p>
<p>&lt;강화학습 알고리즘의 대표적인 종류&gt;</p>
<ul>
<li>Monte Carlo methods</li>
<li>Q-Learning</li>
<li>Policy Gradient methods</li>
</ul>
<h1 id="2-사이킷런에서-가이드하는-머신러닝-알고리즘">2. 사이킷런에서 가이드하는 머신러닝 알고리즘</h1>
<p>&lt; 사이킷런에서 알고리즘의 Task&gt;</p>
<ul>
<li>Classification</li>
<li>Regression</li>
<li>Clustering</li>
<li>Dimensionality Reduction</li>
</ul>
<p>&lt;사이킷런에서 알고리즘을 나눈 기준&gt;</p>
<ul>
<li>데이터 수량</li>
<li>라벨의 유무(정답의 유무)</li>
<li>데이터의 종류 (수치형 데이터(quantity), 범주형 데이터(category) 등)</li>
</ul>
<h1 id="3-hello-scikit-learn">3. Hello Scikit-learn</h1>
<ul>
<li>train_test_split() : 훈련 데이터와 테스트 데이터를 나누는 기능을 제공하는 함수</li>
<li>transformer() : ETL(Extract Transform Load) 기능을 수행하는 함수</li>
<li>Estimator : fit()과 predcict()만을 이용해 간단하게 학습과 예측 결과를 반환</li>
</ul>
<h1 id="4-사이킷런의-주요-모듈">4. 사이킷런의 주요 모듈</h1>
<h2 id="4-1-데이터-표현법">4-1. 데이터 표현법</h2>
<p>&lt;특성 행렬(Feature Matrix)&gt;</p>
<ul>
<li>입력 데이터를 의미</li>
<li>특성(feature): 데이터에서 수치 값, 이산 값, 불리언 값으로 표현되는 개별 관측치를 의미. 특성 행렬에서는 열에 해당하는 값</li>
<li>표본(sample): 각 입력 데이터, 특성 행렬에서는 행에 해당하는 값</li>
<li>n_samples: 행의 개수(표본의 개수)</li>
<li>n_features: 열의 개수(특성의 개수)</li>
<li>X: 통상 특성 행렬은 변수명 X로 표기</li>
<li>[n_samples, n_features]은 [행, 열] 형태의 2차원 배열 구조를 사용하며 이는 NumPy의 ndarray, Pandas의 DataFrame, SciPy의 Sparse Matrix를 사용하여 나타낼 수 있다.</li>
</ul>
<p>&lt;타겟 벡터 (Target Vector)&gt;</p>
<ul>
<li>입력 데이터의 라벨(정답) 을 의미</li>
<li>목표(Target): 라벨, 타겟값, 목표값이라고도 부르며 특성 행렬(Feature Matrix)로부터 예측하고자 하는 것</li>
<li>n_samples: 벡터의 길이(라벨의 개수)</li>
<li>타겟 벡터에서 n_features는 없다.</li>
<li>y: 통상 타겟 벡터는 변수명 y로 표기</li>
<li>타겟 벡터는 보통 1차원 벡터로 나타내며, 이는 NumPy의 ndarray, Pandas의 Series를 사용하여 나타낼 수 있다.</li>
<li>(단, 타겟 벡터는 경우에 따라 1차원으로 나타내지 않을 수도 있다. 이 노드에서 사용되는 예제는 모두 1차원 벡터)</li>
</ul>
<blockquote>
<p>특성 행렬 X의 n_samples와 타겟 벡터 y의 n_samples는 동일해야 함</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[30. 컴퓨터 파워 UP]]></title>
            <link>https://velog.io/@j_hyun11/30.-%EC%BB%B4%ED%93%A8%ED%84%B0-%ED%8C%8C%EC%9B%8C-UP</link>
            <guid>https://velog.io/@j_hyun11/30.-%EC%BB%B4%ED%93%A8%ED%84%B0-%ED%8C%8C%EC%9B%8C-UP</guid>
            <pubDate>Wed, 23 Feb 2022 03:19:06 GMT</pubDate>
            <description><![CDATA[<h1 id="멀티태스킹">멀티태스킹</h1>
<h2 id="1-동시성concurrency">1. 동시성(Concurrency)</h2>
<ul>
<li>하나의 processor가 여러 가지 task를 동시에 수행하는 개념</li>
<li>다른 task를 수행할 수 있는 시간에는 task를 전환해서 효율적으로 여러 개의 task를 동시에 수행하는 것처럼 보임</li>
</ul>
<h2 id="2-병렬성parallelism">2. 병렬성(Parallelism)</h2>
<ul>
<li>유사한 task를 여러 processor가 동시에 수행하는 것</li>
</ul>
<h2 id="동기-vs-비동기-synchronous-vs-asynchronous">동기 vs 비동기 (Synchronous vs Asynchronous)</h2>
<ul>
<li>동기 : 어떤 일이 순차적으로 실행됨, 앞 작업이 종료되기를 무조건 기다렸다가 다음 작업을 수행</li>
<li>비동기 : 어떤 일이 비순차적으로 실행됨, 바운드되고 있는 작업을 기다리는 동안 다른 일을 처리하는 것</li>
</ul>
<h2 id="io-bound-vs-cpu-bound">I/O Bound vs CPU Bound</h2>
<ul>
<li>I/O 바운드 : 입력과 출력에서의 데이터(파일)처리에 시간이 소요될 때</li>
<li>CPU 바운드 : 복잡한 수식 계산이나 그래픽 작업과 같은 엄청난 계산이 필요할 때</li>
</ul>
<h2 id="process프로세스">Process(프로세스)</h2>
<ul>
<li>프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리상에서 실행되는 작업 단위</li>
</ul>
<h2 id="thread스레드">Thread(스레드)</h2>
<ul>
<li>어떠한 프로그램 내, 특히 프로세스 내에서 실행되는 흐름의 단위</li>
<li>같은 작업을 좀 더 빠르게 처리하기 위해 여러 개의 스레드를 생성하기도 함</li>
</ul>
<h2 id="프로파일링profiling">프로파일링(Profiling)</h2>
<ul>
<li>코드에서 시스템의 어느 부분이 느린지 혹은 어디서 RAM을 많이 사용하고 있는지를 확인하고 싶을 때 사용하는 기법</li>
</ul>
<h2 id="scale-up-vs-scale-out">Scale Up vs Scale Out</h2>
<ul>
<li>Scale-Up  : 한 대의 컴퓨터의 성능을 최적화시키는 방법</li>
<li>Scale-Out : 여러 대의 컴퓨터를 한 대처럼 사용</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[29. 사이킷런을 활용한 추천 시스템 입문]]></title>
            <link>https://velog.io/@j_hyun11/29.-%EC%82%AC%EC%9D%B4%ED%82%B7%EB%9F%B0%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%B6%94%EC%B2%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%9E%85%EB%AC%B8</link>
            <guid>https://velog.io/@j_hyun11/29.-%EC%82%AC%EC%9D%B4%ED%82%B7%EB%9F%B0%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%B6%94%EC%B2%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%9E%85%EB%AC%B8</guid>
            <pubDate>Tue, 22 Feb 2022 09:20:10 GMT</pubDate>
            <description><![CDATA[<h1 id="추천-시스템">추천 시스템</h1>
<ul>
<li>사용자(user)에게 관련된 아이템(item)을 추천해 주는 것<blockquote>
<p>ex) 영화추천</p>
</blockquote>
</li>
</ul>
<p>&lt;간단한 추천 로직&gt;</p>
<ol>
<li>범주형, 이산적인 데이터를 숫자 벡터로 변환</li>
<li>계산한 숫자 벡터의 유사도를 계산해서 유사도가 가까운 (혹은 높은) 제품을 추천해줌</li>
</ol>
<h1 id="코사인-유사도cosine-similarity">코사인 유사도(Cosine Similarity)</h1>
<p><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2a8c50526e2cc7aa837477be87eff1ea703f9dec" alt=""></p>
<ul>
<li>유사도를 계산하는 방법 중 가장 잘 알려진 방법</li>
<li>두 벡터 간의 코사인 값을 이용해 두 벡터의 유사도를 계산</li>
</ul>
<p><img src="https://wikidocs.net/images/page/24603/%EC%BD%94%EC%82%AC%EC%9D%B8%EC%9C%A0%EC%82%AC%EB%8F%84.PNG" alt=""></p>
<ul>
<li>코사인 유사도 범위 :  -1 ~ 1사이의 값을 가짐</li>
<li>코사인 유사도가 1에 가까울 수록 유사도가 높음</li>
</ul>
<h2 id="기타-다른-유사도-계산법">기타 다른 유사도 계산법</h2>
<ul>
<li>유클리드 거리</li>
<li>자카드 유사도</li>
<li>피어슨 상관계수 등</li>
</ul>
<h1 id="추천시스템의-종류">추천시스템의 종류</h1>
<p><img src="https://user-images.githubusercontent.com/3907357/100764012-37dde000-3439-11eb-9408-12e6a61d1af5.png" alt=""></p>
<p><img src="https://media.vlpt.us/images/ijune97/post/7710a1a6-5a6b-443b-b58d-9a779c1fe136/image.png" alt="">
출처: <a href="https://velog.io/@ijune97/RecommendationAlgorithm">https://velog.io/@ijune97/RecommendationAlgorithm</a></p>
<h1 id="콘텐츠-기반-필터링">콘텐츠 기반 필터링</h1>
<ul>
<li>어떤 사람이 한 영화를 좋아했다면, 비슷한 콘텐츠의 아이템을 추천하는 방식</li>
<li>순수하게 콘텐츠의 내용만을 비교해서 추천하는 방식</li>
<li>특성(Feature)이 비슷한 콘텐츠를 고르는 요인이 됨</li>
</ul>
<h1 id="협업-필터링">협업 필터링</h1>
<ul>
<li>과거의 사용자 행동 양식(User Behavior) 데이터를 기반으로 추천하는 방식</li>
</ul>
<h2 id="사용자-기반">사용자 기반</h2>
<ul>
<li>유사도를 계산하는 방식</li>
<li>평점행렬로 변환한 후, 평점행렬의 유사도를 계산하여 추천하는 방식</li>
<li>&quot;당신과 비슷한 고객들이 다음 상품을 구매했습니다.&quot;</li>
</ul>
<h2 id="아이템-기반">아이템 기반</h2>
<ul>
<li>유사도를 계산하는 방식</li>
<li>평점행렬로 변환한 후, 평점행렬의 유사도를 계산하여 추천하는 방식</li>
<li>&quot;이 상품을 선택한 다른 고객들은 다음 상품을 구매했습니다.&quot;</li>
</ul>
<h2 id="잠재요인">잠재요인</h2>
<ul>
<li>행렬 인수분해(matrix factorization)를 이용해 잠재요인을 분석</li>
<li>평점행렬을 분해하여 더 많은 정보들을 고려하는 방식</li>
</ul>
<h1 id="행렬-인수분해">행렬 인수분해</h1>
<h2 id="svdsingular-vector-decomposition">SVD(Singular Vector Decomposition)</h2>
<ul>
<li><p>특잇값 분해 : &quot;정보 복원&quot;을 위해 사용됨
<img src="https://raw.githubusercontent.com/angeloyeo/angeloyeo.github.io/master/pics/2019-08-01_SVD/pic_SVD.png" alt="">
출처 : <a href="https://angeloyeo.github.io/2019/08/01/SVD.html">https://angeloyeo.github.io/2019/08/01/SVD.html</a></p>
</li>
<li><p>ALS(Alternating Least Squares)</p>
</li>
<li><p>NMF(Non-Negative Factorization)</p>
</li>
</ul>
<h1 id="실제-추천-시스템">실제 추천 시스템</h1>
<ul>
<li>CTR(Click Through Rate) : 클릭률</li>
<li>CTR은 마케팅에서도 중요한 지표로 작용</li>
<li>이러한 데이터들을 모아 추천을 한 뒤, 해당 아이템이 적절한 추천인지 여부를 평가</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[28. 정보이론 톺아보기]]></title>
            <link>https://velog.io/@j_hyun11/28.-%EC%A0%95%EB%B3%B4%EC%9D%B4%EB%A1%A0-%ED%86%BA%EC%95%84%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@j_hyun11/28.-%EC%A0%95%EB%B3%B4%EC%9D%B4%EB%A1%A0-%ED%86%BA%EC%95%84%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Fri, 18 Feb 2022 05:50:00 GMT</pubDate>
            <description><![CDATA[<h1 id="1-information-content">1. Information Content</h1>
<ul>
<li>정보이론 : 추상적인 &#39;정보&#39;라는 개념을 정량화하고 정보의 저장과 통신을 연구하는 분야</li>
</ul>
<h3 id="정보를-정량적으로-표현하기-위해-필요한-세-가지-조건">정보를 정량적으로 표현하기 위해 필요한 세 가지 조건</h3>
<ol>
<li>일어날 가능성이 높은 사건은 정보량이 낮고, 반드시 일어나는 사건에는 정보가 없는 것이나 마찬가지이다.</li>
<li>일어날 가능성이 낮은 사건은 정보량이 높다.</li>
<li>두 개의 독립적인 사건이 있을 때, 전체 정보량은 각각의 정보량을 더한 것과 같다.</li>
</ol>
<ul>
<li>Goodfellow, Bengio, Courville의 책 Deep Learning</li>
</ul>
<h1 id="2-entropy">2. Entropy</h1>
<ul>
<li>특정 확률분포를 따르는 사건들의 정보량 기댓값</li>
<li>확률 변수가 가질 수 있는 값의 가짓수가 같을 때 사건들의 확률이 균등할수록 엔트로피 값은 증가</li>
<li>앞면과 뒷면의 확률이 같은 동전을 던질 때 결과를 예측하기가 더 어렵기 때문에 불확실성이 커서 엔트로피 값이 최대가 됨</li>
</ul>
<h3 id="for-discrete-random-variables">For Discrete Random Variables</h3>
<ul>
<li>X가 연속적인 값을 갖는 연속 확률 변수일 때는 유한합 대신 적분의 형태로 정의</li>
<li>연속 확률 변수의 엔트로피를 이산 확률 변수와 구분하여 미분 엔트로피(differential entropy)라고 부르기도 함</li>
<li></li>
</ul>
<h1 id="3-kullback-leibler-divergence">3. Kullback Leibler Divergence</h1>
<ul>
<li>결정 모델(discriminative model) : 데이터의 실제 분포를 모델링 하지 않고 결정 경계(decision boundary)만을 학습</li>
<li>생성 모델(generative model) : 데이터와 모델로부터 도출할 수 있는 여러 확률 분포와 베이즈 이론을 이용해서 데이터의 실제 분포를 간접적으로 모델링</li>
<li>쿨백-라이블러 발산(Kullback-Leibler divergence, KL divergence) : 생성 모델을 학습시킬 때는 두 확률 분포의 차이를 나타내는 지표</li>
</ul>
<h1 id="4-cross-entropy-loss">4. Cross Entropy Loss</h1>
<ul>
<li>정답셋의 확률분포 P와 우리 모델의 추론 결과의 확률분포 Q 의 차이 KL divergence를 최소화하는 것</li>
<li>즉, 모델의 추론 결과가 정답셋과 최대한 유사하게 하는 것과 교차 엔트로피(Cross Entropy)를 최소화하는 것이 수학적으로 같다</li>
<li>결론: KL divergence를 최소화하는 것이 cross entropy를 최소화하는 것과 같다</li>
<li>cross entropy도 손실 함수의 한 종류</li>
</ul>
<h3 id="손실-함수loss-function">손실 함수(loss function)</h3>
<ul>
<li>머신러닝에서 모델이 나타내는 확률 분포와 데이터가 따르는 실제 확률 분포 사이의 차이를 나타내는 함</li>
<li>이 차이를 최소화시키는 게 중요한 목적</li>
<li>모델의 확률 분포는 파라미터에 따라 달라지기 때문에 손실 함수 역시 파라미터에 의해 결정됨</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[25. Regularization]]></title>
            <link>https://velog.io/@j_hyun11/25.-Regularization</link>
            <guid>https://velog.io/@j_hyun11/25.-Regularization</guid>
            <pubDate>Fri, 11 Feb 2022 01:35:43 GMT</pubDate>
            <description><![CDATA[<h1 id="normalization정규화">Normalization(정규화)</h1>
<ul>
<li>데이터의 형태를 좀 더 의미 있게, 혹은 트레이닝에 적합하게 전처리하는 과정</li>
<li>데이터를 z-score로 바꾸거나 minmax scaler를 사용하여 0과 1사이의 값으로 분포를 조정하는 것들이 해당</li>
<li>모든 피처의 범위 분포를 동일하게 하여 모델이 풀어야 하는 문제를 좀 더 간단하게 바꾸어 주는 전처리 과정</li>
</ul>
<h1 id="regularization정칙화">Regularization(정칙화)</h1>
<ul>
<li>오버피팅을 해결하고자 하는 방법 중에 하나</li>
<li>L1, L2 Regularization, Dropout, Batch normalization</li>
<li>모델이 train set의 정답을 맞히지 못하도록 오버피팅을 방해(train loss가 증가) 하는 역할</li>
<li>validation loss나 최종적인 test loss를 감소시키려는 목적</li>
</ul>
<h1 id="l1-regularization">L1 Regularization</h1>
<ul>
<li>사이킷런이나 케라스, 텐서플로우 등의 패키지에서는 Lasso</li>
<li>X가 2차원 이상인 여러 컬럼 값이 있는 데이터일 때 실제 효과를 볼 수 있음</li>
<li>Linear Regression과 L1, L2 Regularization의 차이 중 하나는 alpha(α)라는 하이퍼파라미터(수식에서는 lambda(λ))가 하나 더 들어간다는 것이고, 그 값에 따라 error에 영향을 미침</li>
</ul>
<p><img src="https://media.vlpt.us/images/oneofakindscene/post/cad414d2-9b25-4f00-815f-5c7843ee990f/image.png" alt=""></p>
<ul>
<li>L1 Regularization이라는 건 결국 L1 Loss 에 Regularization Term을 붙인 것</li>
<li>기존 Loss에 절댓값만큼의 어떤 족쇄(패널티)를 달아줌으로써 Cost가 더 커지게 만든 셈인데, 이를 통해 특정 Weight의 중요도가 커지는 걸 막는다는 느낌(Cost가 커지면 Weight 중요도가 줄어드니 깐)</li>
</ul>
<p>출처 : <a href="https://velog.io/@oneofakindscene/%EC%A0%95%EA%B7%9C%ED%99%94Regularization-%EC%9A%94%EC%95%BD">https://velog.io/@oneofakindscene/%EC%A0%95%EA%B7%9C%ED%99%94Regularization-%EC%9A%94%EC%95%BD</a></p>
<h1 id="l2-regularization">L2 Regularization</h1>
<p><img src="https://media.vlpt.us/images/oneofakindscene/post/9a3637f1-f20b-420f-8552-46cb98b1baf3/image.png" alt=""></p>
<h1 id="l1--l2-regularization의-차이점">L1 / L2 Regularization의 차이점</h1>
<ul>
<li>L1 Regularization은 가중치가 적은 벡터에 해당하는 계수를 0으로 보내면서 차원 축소와 비슷한 역할을 하는 것이 특징</li>
<li>L2 Regularization은 0이 아닌 0에 가깝게 보내지만 제곱 텀이 있기 때문에 L1 Regularization보다는 수렴 속도가 빠름</li>
</ul>
<h1 id="lp-norm">Lp norm</h1>
<h2 id="1-vector-norm">1. vector norm</h2>
<ul>
<li>어떤 벡터를 길이나 사이즈같은 양적인 수치로 mapping하기 위한 함수</li>
</ul>
<p>출처 : <a href="https://hichoe95.tistory.com/58">https://hichoe95.tistory.com/58</a></p>
<h2 id="2-matrix-norm">2. matrix norm</h2>
<p><img src="https://1.bp.blogspot.com/-bHBAjJ4d5R8/YEzYU6OnZhI/AAAAAAABF4A/C_PGaXJmiTEyFwShHcQhuqk18k9M4UcZQCLcBGAsYHQ/s16000/no9.png" alt=""></p>
<p>참고 : <a href="https://ghebook.blogspot.com/2021/03/matrix-norm-and-condition-number.html">https://ghebook.blogspot.com/2021/03/matrix-norm-and-condition-number.html</a></p>
<h1 id="dropout">Dropout</h1>
<ul>
<li>몇 가지의 값들을 모든 뉴런에 전달하는 것이 아닌 확률적으로 버리면서 전달하는 기법</li>
<li>오버피팅을 막는 Regularization layer 중 하나</li>
<li>확률을 너무 높이면, 제대로 전달되지 않으므로 학습이 잘되지 않고, 확률을 너무 낮추는 경우는 fully connected layer와 같음</li>
</ul>
<h1 id="batch-normalization">Batch Normalization</h1>
<ul>
<li>gradient vanishing, explode 문제를 해결하는 방법</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[24. 딥러닝 레이어의 이해(2)]]></title>
            <link>https://velog.io/@j_hyun11/24.-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%A0%88%EC%9D%B4%EC%96%B4%EC%9D%98-%EC%9D%B4%ED%95%B42</link>
            <guid>https://velog.io/@j_hyun11/24.-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%A0%88%EC%9D%B4%EC%96%B4%EC%9D%98-%EC%9D%B4%ED%95%B42</guid>
            <pubDate>Wed, 09 Feb 2022 05:33:45 GMT</pubDate>
            <description><![CDATA[<h1 id="분포-가설과-분산-표현">분포 가설과 분산 표현</h1>
<h3 id="1-희소-표현sparse-representation">1. 희소 표현(Sparse Representation)</h3>
<ul>
<li>벡터의 특정 차원에 단어 혹은 의미를 직접 매핑하는 방식</li>
</ul>
<h3 id="2-분포-가설">2. 분포 가설</h3>
<ul>
<li>유사한 맥락에서 나타나는 단어는 그 의미도 비슷하다라는 가정을 함</li>
</ul>
<h3 id="3-분산-표현">3. 분산 표현</h3>
<ul>
<li>유사한 맥락에 나타난 단어들끼리는 두 단어 벡터 사이의 거리를 가깝게 하고, 그렇지 않은 단어들끼리는 멀어지도록 조금씩 조정한 단어 벡터</li>
<li>단어 간의 유사도를 계산으로 구할 수 있음</li>
</ul>
<h1 id="embedding-레이어">Embedding 레이어</h1>
<ul>
<li>단어의 분산 표현을 구현하기 위한 레이어 ex. 컴퓨터용 단어 사전</li>
<li>Embedding 레이어만을 훈련하기 위한 방법 :  ELMo, Word2Vec, Glove, FastText 등</li>
<li>Weight는 단어의 개수, Embedding 사이즈로 정의됨</li>
<li>입력으로 들어온 단어를 분산 표현으로 연결해 주는 역할 -&gt; 룩업 테이블(Lookup Table)</li>
<li>원-핫 인코딩을 위한 단어 사전을 구축하고 단어를 사전의 인덱스로 변환만 해주면 Embedding 레이어를 완벽하게 사용할 수 있음</li>
</ul>
<p><strong>주의사항</strong></p>
<ul>
<li>Embedding 레이어는 단어를 대응만 한 것이라서 미분이 불가능함</li>
<li>따라서 어떤 연산 결과를 Embedding 레이어에 연결시키는 것은 불가능</li>
<li>원-핫 인코딩된 단어 벡터의 형태인 입력에 직접 연결되게 사용해야 함</li>
</ul>
<h3 id="원-핫-인코딩one-hot-encoding">원-핫 인코딩(One-hot Encoding)</h3>
<ul>
<li>텍스트를 유의미한 숫자(벡터)로 바꾸는 가장 손쉬운 방법론</li>
<li>N개의 단어를 각각 N차원의 벡터로 표현하는 방식</li>
<li>단어 하나에 인덱스 정수를 할당한다는 점에서 ‘단어 주머니(bag of words, BoW)’라 부르기도 함</li>
</ul>
<p><strong>단점</strong></p>
<ul>
<li>컴퓨터가 단어의 의미 또는 개념 차이를 전혀 담지 못함</li>
<li>‘차원의 저주(curse of dimensionality)’ 문제 : 하나의 단어를 표현하기 위해 말뭉치(corpus)에 존재하는 수만큼의 차원을 가지게 되면 계산 복잡성이 기하급수적으로 늘어남</li>
</ul>
<h1 id="recurrent-레이어-1-rnn">Recurrent 레이어 (1) RNN</h1>
<ul>
<li>문장이나 영상, 음성 등의 데이터-&gt; 순차적인(Sequential) 특성</li>
<li>딥러닝에서 말하는 시퀀스 데이터는 순차적인 특성을 필수로 가짐</li>
<li>Recurrent Neural Network 또는 Recurrent 레이어(이하 RNN)</li>
<li>(입력의 차원, 출력의 차원)에 해당하는 단 하나의 Weight를 순차적으로 업데이트하는 것</li>
<li>RNN은 스스로를 반복하면서 이전 단계에서 얻은 정보가 지속되도록 한다.</li>
<li>문장을 모두 읽은 후 최종 Step에 대한 Output만 필요한 경우,(return_sequences=False)]</li>
<li>문장을 생성했을 때 든 Step에 대한 Output이 필요한 경우,(return_sequences=True)  </li>
</ul>
<p><strong>단점</strong></p>
<ul>
<li>한 문장을 읽고 처리하는 데에도 여러 번의 연산이 필요해 다른 레이어에 비해 느림</li>
</ul>
<p>딥러닝 네트워크는 에러에 대한 각 가중치의 미분을 구해 업데이트하는 백프로퍼게이션을 통해 학습할 때,</p>
<ol>
<li>기울기 소실(Vanishing Gradient) 문제</li>
</ol>
<ul>
<li>입력의 앞부분이 뒤로 갈수록 옅어져 손실이 발생</li>
<li>미분 값이 너무 작음</li>
<li>가중치 업데이트가 잘 안되니 학습이 거의 이뤄지지 않음</li>
</ul>
<ol start="2">
<li>Exploding Gradient</li>
</ol>
<ul>
<li>미분 값이 너무 큼</li>
<li>가중치 업데이트가 너무 크니 학습이 불안정</li>
</ul>
<h1 id="recurrent-레이어-2-lstm">Recurrent 레이어 (2) LSTM</h1>
<ul>
<li>Long Short-Term Memory</li>
<li>기울기 소실 문제를 해결하기 위해 고안된 RNN 레이어</li>
<li>sigmoid함수의 output이기 때문에 (0,1)의 값을 갖게 되는데, 1에 가까운 값을 갖게되면 미분값(gradient)이 소멸(vanished)되는 것을 최소한으로 줄일 수 있게됨</li>
</ul>
<p>** LSTM은 3개의 Gate Layer**</p>
<ul>
<li>Forget Gate Layer : cell state의 기존 정보를 얼마나 잊어버릴지를 결정하는 gate</li>
<li>Input Gate Layer : 새롭게 만들어진 cell state를 기존 cell state에 얼마나 반영할지를 결정하는 gate</li>
<li>Output Gate Layer : 새롭게 만들어진 cell state를 새로운 hidden state에 얼마나 반영할지를 결정하는 gate</li>
</ul>
<p><strong>GRU(Gated Recurrent Unit)</strong></p>
<ul>
<li>LSTM의 Forget Gate와 Input Gate를 Update Gate로 합침</li>
<li>Cell State와 Hidden State를 합쳤다.</li>
</ul>
<p>참고 : <a href="https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr">https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr</a></p>
<h1 id="양방향bidirectional-rnn">양방향(Bidirectional) RNN</h1>
<ul>
<li>진행 방향이 반대인 RNN을 2개 겹쳐놓은 형태</li>
<li>tf.keras.layers.Bidirectional()</li>
<li>주로 기계번역 같은 테스크에 유리</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[23. 딥러닝 레이어의 이해(1) ]]></title>
            <link>https://velog.io/@j_hyun11/23.-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%A0%88%EC%9D%B4%EC%96%B4%EC%9D%98-%EC%9D%B4%ED%95%B41</link>
            <guid>https://velog.io/@j_hyun11/23.-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%A0%88%EC%9D%B4%EC%96%B4%EC%9D%98-%EC%9D%B4%ED%95%B41</guid>
            <pubDate>Wed, 09 Feb 2022 02:52:05 GMT</pubDate>
            <description><![CDATA[<h1 id="데이터의-형태">데이터의 형태</h1>
<h2 id="이미지-데이터">이미지 데이터</h2>
<ul>
<li>Red 채널, Green 채널, 그리고 Blue 채널까지 총 3개의 채널을 가짐</li>
<li>표기 방법 : Channel, Width, Height의 이니셜로 (C, W, H), (W, H, C)</li>
</ul>
<h1 id="레이어">레이어</h1>
<ul>
<li><p>하나의 물체가 여러 개의 논리적인 객체들로 구성되어 있는 경우, 이러한 각각의 객체를 하나의 레이어라 한다.</p>
<h1 id="linear-레이어">Linear 레이어</h1>
<ul>
<li>Fully Connected Layer, Feedforward Neural Network, Multilayer Perceptrons, Dense Layer... 등</li>
<li>선형 변환(Linear Transform)을 활용해 데이터를 특정 차원으로 변환하는 레이어</li>
<li>(입력의 차원, 출력의 차원)에 해당하는 Weight를 가지는 특성을 가짐</li>
<li>입력 피처 전체가 매 출력에 미치는 영향의 가중치를 모든 입력 피처 사이에 전부 고려</li>
<li>이미지처럼 지역성(Locality) 그 자체가 엄청나게 중요한 정보가 되는 경우, Linear 레이어는 그 중요한 정보가 모두 소실된 채 엄청나게 큰 파라미터 속에서 입력과 출력 사이의 관계 가중치를 찾아내야 하는 어려운 문제가 발생</li>
</ul>
</li>
</ul>
<h1 id="convolution-레이어">Convolution 레이어</h1>
<ul>
<li>목적에 도움이 되는 정보는 선명하게, 그렇지 않은 정보는 흐리게 만드는 수십 개의 중첩된 필터를 훈련을 통해 찾아주는 것</li>
<li>필터 구조 안에 Locality 정보가 온전히 보존됨</li>
<li>인접한 픽셀들 사이에서의 패턴만 추출할 수 있다는 것 자체만으로도 불필요한 파라미터 및 연산량을 제거하고 훨씬 정확하고 효율적으로 정보를 집약시킬 수 있게 됨</li>
</ul>
<h1 id="receptive-field">Receptive Field</h1>
<ul>
<li>Neural Network의 출력부가 충분한 정보를 얻기 위해 커버하는 입력 데이터의 Receptive Field가 충분히 커서 그 안에 detect해야 할 object의 특성이 충분히 포함되어 있어야 정확한 detection이 가능하게 됨</li>
</ul>
<h1 id="pooling-레이어">Pooling 레이어</h1>
<h3 id="1-receptive-field">1. Receptive Field</h3>
<ul>
<li>Neural Network의 출력부가 충분한 정보를 얻기 위해 커버하는 입력 데이터의 Receptive Field가 충분히 커서 그 안에 detect해야 할 object의 특성이 충분히 포함되어 있어야 정확한 detection이 가능하게 됨</li>
</ul>
<h3 id="2-max-pooling-레이어">2. Max Pooling 레이어</h3>
<ul>
<li>영역 안에서 가장 값이 큰 대표 선수 하나를 뽑고 나머지는 무시하는 역할</li>
</ul>
<p><strong>장점</strong></p>
<ul>
<li>translational invariance 효과<ul>
<li>동일한 특징을 안정적으로 잡아낼 수 있는 긍정적 효과</li>
<li>object 위치에 대한 오버피팅을 방지하고 안정적인 특징 추출 효과를 가져옴</li>
</ul>
</li>
<li>Non-linear 함수와 동일한 피처 추출 효과<ul>
<li>중요한 피처만을 상위 레이어로 추출해서 올려줌으로써 결과적으로 분류기의 성능을 증진시키는 효과를 가짐</li>
</ul>
</li>
<li>Receptive Field 극대화 효과<ul>
<li>Convolutional 레이어를 아주 많이 쌓아서  Receptive Field를 크게 한다면 오버피팅, 연산량 증가, Gradient Vanishing 등의 문제가 발생</li>
<li>이를 해결하는 방법으로 Max Pooling 레이어, Dilated Convolution가 있음</li>
</ul>
</li>
</ul>
<h1 id="deconvolution-레이어">Deconvolution 레이어</h1>
<h3 id="1--auto-encoder">1.  Auto Encoder</h3>
<ul>
<li>Convolution의 결과를 역재생해서 원본 이미지와 최대한 유사한 정보를 복원해냄</li>
</ul>
<h3 id="2-decoder-레이어">2. Decoder 레이어</h3>
<ul>
<li>Convolution 레이어를 거쳐 정보가 집약되는 것이 아니라 오히려 정보량이 많아지고 있음</li>
<li>우리의 AutoEncoder 구조가 얼마나 정보손실 없이 원본 데이터를 잘 압축하고 있느냐에 따라 Decoder가 뽑아낼 수 있는 최종적인 이미지의 퀄리티가 결정됨</li>
<li>Convolution의 수학적 역연산으로서의 Deconvolution과는 다름</li>
</ul>
<h3 id="3-upsampling-레이어">3. Upsampling 레이어</h3>
<ul>
<li>Max pooling 레이어를 통해 Downsampling의 반대 작업을 수행</li>
</ul>
<p><strong>복원 방법</strong>
Nearest Neighbor : 복원해야 할 값을 가까운 값으로 복제
Bed of Nails : 복원해야 할 값을 0으로 처리
Max Unpooling : Max Pooling 때 버린 값을 실은 따로 기억해 두었다가 그 값으로 복원</p>
<h3 id="4-transposed-convolution">4. Transposed Convolution</h3>
<ul>
<li>Upsampling 기법의 일종</li>
<li>Transposed Convolution을 계산하는 과정이 마치 convolution 연산을 거꾸로 계산하는 것과 비슷</li>
</ul>
<p>참고 : <a href="https://realblack0.github.io/2020/05/11/transpose-convolution.html">https://realblack0.github.io/2020/05/11/transpose-convolution.html</a> </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[21. TF2 API]]></title>
            <link>https://velog.io/@j_hyun11/21.-TF2-API</link>
            <guid>https://velog.io/@j_hyun11/21.-TF2-API</guid>
            <pubDate>Fri, 28 Jan 2022 06:25:52 GMT</pubDate>
            <description><![CDATA[<h1 id="tensorflow2-api로-모델-구성하기">TensorFlow2 API로 모델 구성하기</h1>
<h3 id="sequential">Sequential</h3>
<pre><code class="language-python">import tensorflow as tf
from tensorflow import keras

model = keras.Sequential()
model.add(__넣고싶은 레이어__)
model.add(__넣고싶은 레이어__)
model.add(__넣고싶은 레이어__)

model.fit(x, y, epochs=10, batch_size=32)</code></pre>
<ul>
<li>입력 1가지, 출력 1가지 방식 -&gt; 입출력이 여러 개인 경우 적합하지 않은 모델</li>
</ul>
<h3 id="functional">Functional</h3>
<pre><code class="language-python">import tensorflow as tf
from tensorflow import keras

inputs = keras.Input(shape=(__원하는 입력값 모양__))
x = keras.layers.__넣고싶은 레이어__(관련 파라미터)(input)
x = keras.layers.__넣고싶은 레이어__(관련 파라미터)(x)
outputs = keras.layers.__넣고싶은 레이어__(관련 파라미터)(x)

model = keras.Model(inputs=inputs, outputs=outputs)
model.fit(x,y, epochs=10, batch_size=32)</code></pre>
<ul>
<li>keras.Model을 사용</li>
<li>입력과 출력을 규정함으로써 모델 전체를 규정 -&gt;  더 자유로운 모델링 진행 가능</li>
<li>다중 입력, 출력을 가지는 모델을 구성</li>
</ul>
<h2 id="model-subclassing">Model Subclassing</h2>
<pre><code class="language-python">import tensorflow as tf
from tensorflow import keras

class CustomModel(keras.Model):
    def __init__(self):
        super(CustomModel, self).__init__()
        self.__정의하고자 하는 레이어__()
        self.__정의하고자 하는 레이어__()
        self.__정의하고자 하는 레이어__()

    def call(self, x):
        x = self.__정의하고자 하는 레이어__(x)
        x = self.__정의하고자 하는 레이어__(x)
        x = self.__정의하고자 하는 레이어__(x)

        return x

model = CustomModel()
model.fit(x,y, epochs=10, batch_size=32)</code></pre>
<ul>
<li>keras.Model을 상속받은 모델 클래스를 만드는 방식</li>
<li>제일 자유로운 모델링 진행 가능</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[20. 비지도학습]]></title>
            <link>https://velog.io/@j_hyun11/20.-%EB%B9%84%EC%A7%80%EB%8F%84%ED%95%99%EC%8A%B5</link>
            <guid>https://velog.io/@j_hyun11/20.-%EB%B9%84%EC%A7%80%EB%8F%84%ED%95%99%EC%8A%B5</guid>
            <pubDate>Wed, 26 Jan 2022 03:36:49 GMT</pubDate>
            <description><![CDATA[<h1 id="1-비지도학습unsupervised-learning">1. 비지도학습(Unsupervised Learning)</h1>
<ul>
<li>지도학습과 다르게 training data로 정답(label)이 없는 데이터가 주어지는 학습방법</li>
<li>주어진 데이터가 어떻게 구성되어 있는지 스스로 알아내는 방법</li>
<li>아무도 정답을 알려주지 않은 채 오로지 데이터셋의 특징이나 패턴을 기반으로 모델 스스로가 판단</li>
</ul>
<h3 id="예시">예시</h3>
<ul>
<li>군집화(clustering)</li>
<li>차원축소(dimensionlity reduction)</li>
<li>생성 모델(generative model)</li>
</ul>
<h1 id="2-클러스터링1-k-means">2. 클러스터링(1) K-means</h1>
<ul>
<li>데이터X가 무엇인지에 대한 정답(label)과 y가 될 수 있는 분류 기준이 없는 비지도학습에서 클러스터링이란 명확한 분류 기준이 없는 상황에서도 데이터들을 분석하고 유사한 것들끼리 묶어 주는 대표적 알고리즘</li>
<li>k값이 주어졌을 때, k개의 기준점을 중심으로 가장 가까운 데이터들을 뭉침</li>
<li>좌표축 위에 있는 데이터들 사이의 거리를 계산하기 위해서 &quot;유클리드 거리&quot;를 사용</li>
</ul>
<h3 id="k-mean-알고리즘의-순서">K-mean 알고리즘의 순서</h3>
<p>1) 원하는 k(클러스터의 수)를 결정
2) 무작위로 클러스터의 수와 같은 k개의 중심점을 선정
3) 나머지 점들과 모든 중심점 간의 유클리드 거리를 계산
   -&gt; 가장 가까운 거리에 있는 중심점의 클러스터에 속하도록 함
4) 각 K개의 클러스터의 중심점을 재조정
   -&gt; 특정 클러스터에 속하는 모든 점들의 평균값이 해당 클러스터 다음 iteration의 중심이 됨
5) 재조정된 중심점을 바탕으로 모든 점들과 새로 조정된 중심점간의 유클리드 거리를 다시 계산 -&gt; 가장 가까운 거리를 가지는 클러스터에 해당 점을 재배정
6) 4, 5번을 반복 수행 -&gt; 특정 iteration이상이 되면 수렴하게 됨</p>
<h3 id="k-means가-적합하지-않은-경우">K-means가 적합하지 않은 경우</h3>
<ul>
<li>K값을 알거나 예측하기 어려운 경우에는 사용하기 어려움</li>
<li>데이터의 분포에 따하 유클리드 거리가 멀고 밀접하게 연관되어 있는 데이터들인 경우에 클러스터링을 성공적으로 수행하지 못할 수 있음</li>
</ul>
<h1 id="3-클러스터링2-dbscan">3. 클러스터링(2) DBSCAN</h1>
<ul>
<li>Density Based Spatial Clustering of Applications with Noise</li>
<li>밀도 기반의 군집 알고리즘</li>
<li>K-means알고리즘으로 해결하기 어려운 문제들을 해결할 수 있음</li>
<li>K-means알고리즘과 다르게 군집개수(K)를 미리 지정하지 않아도 됨</li>
<li>유클리드 거리를 사용한 K-means알고리즘와 다르게 밀접하게 있는 클러스터를 군집화</li>
</ul>
<h3 id="dbscan-알고리즘-순서">DBSCAN 알고리즘 순서</h3>
<p>1) 임의의 점 p를 설정, p를 포함한 클러스터의 반경 안에 있는 점들의 개수를 셈
2) 만약 해당 원에 minPts(클러스터를 이루는 개체의 최솟값)개 이상의 점이 포함되어 있으면 해당 점 p를 core point로 하고 원에 포함된 점들들 하나의 클러스터로 묶음
3) 해당 원에 minPts개 미만의 점이 포함되어 있으면 pass
4) 모든 점에 대해 돌아가면선 1~3번의 과정을 반복
5) 클러스터링 과정을 끝낸 후 어떤 점을 줌심으로 클러스터에 속하지 못한 점을 noise point(군집에 포함되지 못하는 점)으로 간주. 특정 군집에 속하지만 core point가 아닌 점들은 border point(군집의 중심이 되지는 못하지만, 군집에 속하는 점)이라고 함</p>
<h3 id="dbscan-알고리즘-단점">DBSCAN 알고리즘 단점</h3>
<ul>
<li>군집화할 데이터의 수가 많아질수록 K-means 알고리즘에 비해 DBSCAN의 알고리즘 수행 시간이 늘어남</li>
<li>데이터 분포에 맞는 epsilon, minPts의 값을 지정해야 함</li>
</ul>
<h1 id="4-차원-축소1-pca">4. 차원 축소(1) PCA</h1>
<ul>
<li>대표적인 차원 축소(Dimensionality reduction) 알고리즘</li>
<li>데이터를 나타내는 여러 특징들 중에서 어떤 특징이 가장 그 데이터를 잘 표현하는지 알게 해주는 특징을 추출하는 용도로 사용</li>
<li>데이터 분포의 주성분(데이터의 분산이 가장 큰 방향벡터)을 찾아주는 방법</li>
<li>데이터들의 분산을 최대로 보존, 서로 직교하는 기저(bias)들을 찾아 고차원 공간을 저차원 공간으로 projection</li>
<li>기존 feature 중 중요한 것을 선택하는 방식이 아닌 기존의 feature를 선형 결합하는 방식</li>
</ul>
<h1 id="5-차원-축소2-t-sne">5. 차원 축소(2) T-SNE</h1>
<ul>
<li>T-Stochastic Neighbor Embedding</li>
<li>시각화에 많이 쓰이는 알고리즘</li>
<li>기존 차원의 공간에서 가까운 점들은 차원축소된 공간에서도 가깝게 유지</li>
<li>PCA는 데이터가 가진 고유한 물리적 정보량을 보존(차원축소를 하면서 두 점 사이의 거리도 정보 손실 발생)한다면 T-SNES는 데이터들 간의 상대적 거리를 보존함(고차원에서 먼 거리의 두점은 저차원에서도 먼 거리를 유지)</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[19. 선형 회귀와 로지스틱 회귀]]></title>
            <link>https://velog.io/@j_hyun11/19.-%EC%84%A0%ED%98%95-%ED%9A%8C%EA%B7%80%EC%99%80-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80</link>
            <guid>https://velog.io/@j_hyun11/19.-%EC%84%A0%ED%98%95-%ED%9A%8C%EA%B7%80%EC%99%80-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80</guid>
            <pubDate>Mon, 24 Jan 2022 05:53:24 GMT</pubDate>
            <description><![CDATA[<h1 id="1-회귀분석">1. 회귀분석</h1>
<h3 id="회귀분석regression-analysis">회귀분석(Regression Analysis)</h3>
<ul>
<li>관찰된 여러 데이터를 각 연속형 변수 간의 관계를 모델링하고 이에 대한 적합도를 측정하는 분석 방법</li>
</ul>
<h3 id="예시">예시)</h3>
<ul>
<li>부모와 자식의 키 관계</li>
<li>부동산 가격 예측</li>
<li>1인당 국민 총소득과 배기가스 배출량 사이의 관계 예측</li>
</ul>
<h3 id="선형-회귀분석의-기본-가정">선형 회귀분석의 기본 가정</h3>
<p>(1) 선형성 : 예측하고자 하는 종속변수 y와 독립변수 x간에 선형성을 만족하는 특성. 그러므로 <strong>비선형회귀분석</strong>에서는 해당하지 않는다.</p>
<p>(2) 독립성 : 독립변수 x간에 상관관계가 없이 독립성을 만족하는 특성. 
다중 회귀분석에서 중요한 기본가정으로 <strong>단순회귀분석</strong>에서는 해당하지 않는다.</p>
<p>(3) 등분산성 : 분산이 같다. 이는 잔차가 특정한 패턴 없이 고르게 분포했다는 의미</p>
<p>(4) 정규성 : 잔차가 정규성을 만족하는지 여부. 정규분포를 띄는지 확인</p>
<p>-&gt; 4가지 기본가정을 만족해야 유의한 회귀모델이 나온다.
   그렇지 못할 경우 Stepwise로 4가지 기본가정을 위배시키는 변수를 제거</p>
<p>_출처: <a href="https://kkokkilkon.tistory.com/175">https://kkokkilkon.tistory.com/175</a> [꼬낄콘의 분석일지]
_</p>
<h3 id="지도학습의-두-종류">지도학습의 두 종류</h3>
<ul>
<li>분류 : 데이터 x의 여러 feature값들을 이용하여 해당 데이터의 <strong>클래스 y</strong>를 추론  -&gt; 클래스별 확률 값을 출력</li>
<li>회귀 : 데이터의 x의 여러 feature값들을 이용하여 연관된 다른 데이터 <strong>y의 정확한 값</strong>을 추론  -&gt; 연관된 종속변수 값을 직접 출려하는 형태로 모델의 구성이 달라지게 됨</li>
</ul>
<h1 id="2-선형-회귀분석">2. 선형 회귀분석</h1>
<ul>
<li>종속변수 Y와 한 개 이상의 독립변수 X와의 선형 상관관계를 모델링하는 회귀분석 기법</li>
<li>1개의 독립변수이면 단순 선형회귀, 2개이상의 독립변수이면 다중 선형회귀</li>
</ul>
<h3 id="yβxϵ">y=βx+ϵ</h3>
<ul>
<li>β : 회귀계수 (파라미터)</li>
<li>ϵ : 종속변수와 독립변수 사이의 오차 (파라미터)</li>
<li>x,y에 데이터를 넣음 
-&gt; 데이터로부터 β와 ϵ를 추정 
-&gt; 모델링을 수행 
-&gt; 새로운 데이터의 x값들을 입력으로 넣음 
-&gt; 해당하는 y 값을 추론</li>
<li>주어진 데이터에 선형식이 잘 맞도록 회귀계수와 오차를 구함</li>
</ul>
<h3 id="hwxb-머신러닝에서의-선형회귀모델-표기법">H=Wx+b (머신러닝에서의 선형회귀모델 표기법)</h3>
<ul>
<li>H : 가정(Hypothesis)</li>
<li>W : 가중치(Weight)</li>
<li>b : 편향(bias)</li>
<li>보통 W, b는 고차원의 행렬 형태</li>
</ul>
<h3 id="선형회귀에서의-손실함수">선형회귀에서의 손실함수</h3>
<ul>
<li>회귀모델을 이용해 추정한 값과 실제 데이터의 차이</li>
<li>최소제곱법 : n개의 데이터에 대해 잔차의 제곱의 합을 최소로 하는 W,b를 구하는 방법. (잔차를 이용한 회귀모델을 찾는 가장 대표적인 방법)</li>
</ul>
<h3 id="경사하강법">경사하강법</h3>
<p><img src="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNc7Ho%2FbtqBLHKc17S%2FuYR1YABBefaW0FzXc7G0S1%2Fimg.png" alt="">
<em>출처 : <a href="https://lsh424.tistory.com/9">https://lsh424.tistory.com/9</a></em></p>
<ul>
<li>적절한 회귀모델의 회귀계수를 찾기 위해서는 손실함수를 잘 설정하는 것이 중요</li>
<li>손실함수를 최소화 시키는 W, b를 구해야함</li>
<li>머신러닝에서는 가중치의 그래디언트(미분값)가 최소가 되는 지점을 손실함수가 최소가 되는 지점이라고 가정</li>
<li>w 파라미터 개수가 많을 경우 시간이 많이 걸림</li>
</ul>
<p><img src="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPaZtl%2FbtqBL7u7013%2FK3CMqgRdKLFKSOUCj06n01%2Fimg.png" alt="">
<em>출처 : <a href="https://lsh424.tistory.com/9">https://lsh424.tistory.com/9</a></em></p>
<ul>
<li>α : learning rate. 적절한 크기로 선정해서 더 빠르게 수렴시킴</li>
<li>머신러닝&amp;딥러닝에서는 굉장히 중요</li>
</ul>
<h1 id="3-로지스틱-회귀분석">3. 로지스틱 회귀분석</h1>
<ul>
<li>분류해주는 지도학습 알고리즘</li>
<li>데이터가 어떤 범주에 속할 확률을 0~1사이의 값으로 예측, 확률에 따라 가능성이 더 높은 범주에 속함</li>
<li>이진분류 문제 풀 때 많이 사용</li>
</ul>
<h3 id="sigmoid-function">sigmoid function</h3>
<ul>
<li><p>Log-odds 값을 구한 다음, 이를 sigmoid function에 넣어서 0에서 1 사이의 값으로 변환해 주는 것</p>
</li>
<li><p>어느 기점 이하에는 0을 어느 기점 이상에서는 1을 즉, 2분법적으로 나타낼 수 있는 그래프
<img src="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUCWSP%2FbtqB8ndvpLp%2Fi7mKRjQZRctop8mKJllYXK%2Fimg.png" alt="">
<em>출처 : <a href="https://lsh424.tistory.com/9">https://lsh424.tistory.com/9</a></em></p>
</li>
<li><p>실제 데이터를 대입
-&gt; Odds, 회귀계수를 구함
-&gt; Log-odds를 계산한 후 sigmoid function의 입력으로 넣음
-&gt; 특정 범주에 속할 확률 값을 계산
-&gt; 설정한 threshold에 맞추어 설정값 이상이면 1, 이하면 0으로 이진 분류를 수행</p>
</li>
</ul>
<h1 id="4-softmax-함수와-cross-entropy">4. Softmax 함수와 Cross Entropy</h1>
<h2 id="softmax-함수">Softmax 함수</h2>
<ul>
<li><p>여러 범주로 분류하는 함수
<img src="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdktxrm%2Fbtqy8gbvFty%2FyJZYlEU7jvZhsouKkFWWM1%2Fimg.png" alt="">
<em>출처 : <a href="https://lv99.tistory.com/7">https://lv99.tistory.com/7</a></em></p>
</li>
<li><p>softmax의 값을 전부 더했을 때 그 합이 1</p>
</li>
<li><p>log-odds와 작은 log-odds의 차이를 극대화시킴</p>
</li>
<li><p>softmax 함수에 모든 범주의 log-odds를 통과시키면 해당 데이터가 어떤 범주로 분류되는지 확실히 알 수 있음</p>
</li>
<li><p>one-hot encoding(0과 1)을 통해 표현</p>
</li>
</ul>
<h2 id="cross-entropy">Cross Entropy</h2>
<ul>
<li>softmax 함수의 손실함수</li>
<li>분류(classification) 문제를 풀 때 Cross Entropy를 이용해서 손실(loss, cost) 함수를 정의</li>
</ul>
<p><img src="https://androidkt.com/wp-content/uploads/2021/05/Selection_098-768x259.png" alt="">
<em>출처 : <a href="https://androidkt.com/choose-cross-entropy-loss-function-in-keras/">https://androidkt.com/choose-cross-entropy-loss-function-in-keras/</a></em></p>
<ul>
<li>로지스틱 회귀모델이 추론한 확률 분포 q(x)와 실제 데이터의 분포 p(x)의 차이를 계산한 것 -&gt; 차이가 적을 수록 Cross Entropy도 작아짐</li>
</ul>
<h1 id="정리">정리</h1>
<ul>
<li>로지스틱 함수, sigmoid 함수, softmax 함수
<img src="https://miro.medium.com/max/875/0*iSPya15_3yM8RmLE" alt="">
<em>출처 : <a href="https://ericabae.medium.com/ml-softmax-%EC%86%8C%ED%94%84%ED%8A%B8%EB%A7%A5%EC%8A%A4-%ED%95%A8%EC%88%98-7a8c0362b2a3">https://ericabae.medium.com/ml-softmax-%EC%86%8C%ED%94%84%ED%8A%B8%EB%A7%A5%EC%8A%A4-%ED%95%A8%EC%88%98-7a8c0362b2a3</a></em></li>
</ul>
<h2 id="선형-회귀분석">선형 회귀분석</h2>
<ul>
<li>종속변수가 연속형인 경우, 독립변수의 변화에 따른 종속변수 값의 추정</li>
<li>중요하게 사용되는 함수 : 보편적으로 최소제곱법을 이용</li>
<li>손실함수 : 보편적으로 최소제곱법을 이용</li>
</ul>
<h2 id="로지스틱-회귀분석">로지스틱 회귀분석</h2>
<ul>
<li>종속변수의 범주가 2개인 경우 범주별 확률을 추정-&gt;최대확률 범주를 결정하는 분류모델로 활용</li>
<li>중요하게 사용되는 함수 : logits(= log-odds), sigmoid 함수</li>
<li>손실함수 : cross entropy(class = 2)</li>
</ul>
<h2 id="다중-로지스틱-회귀분석">다중 로지스틱 회귀분석</h2>
<ul>
<li>종속변수의 범주가 여러 개인 경우의 로지스틱 회귀분석</li>
<li>중요하게 사용되는 함수 : cross entropy 함수, softmax 함수</li>
<li>손실함수 : cross entropy</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[10. 데이터 전처리]]></title>
            <link>https://velog.io/@j_hyun11/10.-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC</link>
            <guid>https://velog.io/@j_hyun11/10.-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC</guid>
            <pubDate>Wed, 05 Jan 2022 07:21:18 GMT</pubDate>
            <description><![CDATA[<h1 id="1-결측치">1. 결측치</h1>
<h3 id="1-결측치-처리-방법">1) 결측치 처리 방법</h3>
<ul>
<li>결측값을 제거</li>
<li>결측값을 다른 값으로 대체
(새로운 범주내 특정값, 최빈값, 예측값,... ) </li>
</ul>
<h3 id="2-결측치-여부-확인">2) 결측치 여부 확인</h3>
<pre><code class="language-python"># 컬럼별 결측치 개수
print(&#39;전체 데이터 수:&#39;, len(df))

# 행별 결측치 확인
df[df.isnull().any(axis=1)]</code></pre>
<h1 id="2-중복된-데이터">2. 중복된 데이터</h1>
<ul>
<li>행별로 값이 유일해야 한다면 중복된 데이터를 제거</li>
</ul>
<pre><code class="language-python"># 중복된 데이터 여부
df[df.duplicated()]

# 중복된 데이터 제거
df.drop_duplicates(inplace=True)

# id가 중복된 경우 맨 나중에 들어온 값 남기고 제거
df.drop_duplicates(subset=[&#39;id&#39;], keep=&#39;last&#39;)</code></pre>
<h1 id="3-이상치">3. 이상치</h1>
<ul>
<li>대부분 값의 범위에서 벗어나 극단적으로 크거나 작은 값</li>
</ul>
<h2 id="1-이상치-처리-방법">1) 이상치 처리 방법</h2>
<ul>
<li>이상치 삭제</li>
<li>이상치를 다른 값으로 대체(최댓값, 최솟값, ...)</li>
<li>예측값 활용</li>
<li>수치형 데이터를 범주형으로 바꿈</li>
<li>Min-Max Scaling</li>
</ul>
<h2 id="2-이상치-확인">2) 이상치 확인</h2>
<ul>
<li>z-score method : 평균과 표준편차를 이용</li>
<li>IQR method : 사분위 범위수 이용</li>
</ul>
<h1 id="4-정규화outlier">4. 정규화(Outlier)</h1>
<ul>
<li>표준화(Standardization) : 데이터의 평균은 0, 분산은 1로 변환</li>
<li>Min-Max Scaling : 데이터의 최솟값은 0, 최댓값은 1로 변환</li>
</ul>
<h1 id="5-원-핫-인코딩one-hot-encoding">5. 원-핫 인코딩(One-Hot Encoding)</h1>
<ul>
<li>카테고리별 이진 특성을 만들어 해당하는 특성만 1, 나머지는 0으로 만드는 방법</li>
</ul>
<pre><code class="language-python"># get_dummies으로 국가명을 0, 1로 변경
pd.get_dummies(df[&#39;국가명&#39;])</code></pre>
<h1 id="6-구간화binningbucketing">6. 구간화(Binning/bucketing)</h1>
<ul>
<li><p>연속적인 데이터를 구간을 나눠 분석할 때 사용</p>
</li>
<li><p>pandas의 cut 과 qcut을 이용</p>
<pre><code class="language-python"># 6개 구간으로 나눠짐
pd.cut(salary, bins=6)
</code></pre>
</li>
</ul>
<h1 id="백분율-기반으로-5개-구간으로-나눠짐">백분율 기반으로 5개 구간으로 나눠짐</h1>
<p>pd.qcut(salary, q=5)</p>
<pre><code></code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[11. Visualization]]></title>
            <link>https://velog.io/@j_hyun11/11.-Visualization</link>
            <guid>https://velog.io/@j_hyun11/11.-Visualization</guid>
            <pubDate>Wed, 05 Jan 2022 05:48:03 GMT</pubDate>
            <description><![CDATA[<h1 id="1-데이터-준비">1. 데이터 준비</h1>
<hr>

<h3 id="1-데이터-불러오기">1) 데이터 불러오기</h3>
<ul>
<li>Seaborn의 load_dataset() 메서드를 이용</li>
</ul>
<pre><code class="language-python">import pandas as pd
import seaborn as sns

tips = sns.load_dataset(&quot;tips&quot;)</code></pre>
<h3 id="2-eda">2) EDA</h3>
<ul>
<li>결측값 확인</li>
<li>수치형, 범주형 데이터인지 확인</li>
</ul>
<h1 id="2-범주형-데이터-vs-수치형-데이터">2. 범주형 데이터 vs 수치형 데이터</h1>
<hr>

<h3 id="1-범주형">1) 범주형</h3>
<ul>
<li>주로 막대그래프</li>
<li>Pandas와 Matplotlib를 활용</li>
<li>Seaborn과 Matplotlib을 활용<pre><code class="language-python">plt.bar(x = x, height = y)
sns.barplot(data= , x= , y= )</code></pre>
</li>
</ul>
<h3 id="2-수치형">2) 수치형</h3>
<ul>
<li><p>산점도</p>
<pre><code class="language-python">sns.scatterplot(data= , x= , y= , palette= , hue=)</code></pre>
</li>
<li><p>선 그래프</p>
<pre><code class="language-python">sns.lineplot(x= , y= )</code></pre>
</li>
<li><p>히스토그램</p>
<pre><code class="language-python">sns.histplot(data= , label = )</code></pre>
</li>
</ul>
<h1 id="3-시계열-데이터">3. 시계열 데이터</h1>
<hr>
- 예) 1949년-1960년도별 탑승객 예제 데이터

<pre><code class="language-python"># 막대그래프
sns.barplot(data=flights, x=&#39;year&#39;, y=&#39;passengers&#39;)

# 선 그래프, 점 추정치 및 신뢰구간을 표시
sns.pointplot(data=flights, x=&#39;year&#39;, y=&#39;passengers&#39;)

# 선 그래프1
sns.lineplot(data=flights, x=&#39;year&#39;, y=&#39;passengers&#39;)

# 선 그래프2
sns.lineplot(data=flights, x=&#39;year&#39;, y=&#39;passengers&#39;, hue=&#39;month&#39;, palette=&#39;ch:.50&#39;)
plt.legend(bbox_to_anchor=(1.03, 1), loc=2) #legend

# 히스토그램
sns.histplot(flights[&#39;passengers&#39;])</code></pre>
<h1 id="4-heatmap">4. Heatmap</h1>
<hr>

<ul>
<li>데이터와 현상을 수치에 따라 색상으로 나타냄</li>
<li>2차원으로 시각화</li>
<li>데이터를 pivot해서 사용</li>
</ul>
<pre><code class="language-python">sns.heatmap(pivot)
sns.heatmap(pivot, linewidths=.2, annot=True, fmt=&quot;d&quot;)
sns.heatmap(pivot, cmap=&quot;YlGnBu&quot;)
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[9. 배열(array)과 표(table)]]></title>
            <link>https://velog.io/@j_hyun11/9.-%EB%B0%B0%EC%97%B4array%EA%B3%BC-%ED%91%9Ctable</link>
            <guid>https://velog.io/@j_hyun11/9.-%EB%B0%B0%EC%97%B4array%EA%B3%BC-%ED%91%9Ctable</guid>
            <pubDate>Fri, 31 Dec 2021 05:12:35 GMT</pubDate>
            <description><![CDATA[<h1 id="1-numpy-주요-기능">1. NumPy 주요 기능</h1>
<h4 id="ndarray만들기">ndarray만들기</h4>
<ul>
<li>ndarray 객체는 arange()와 array([])로 만들 수 있습니다.</li>
</ul>
<pre><code class="language-python">import numpy as np

# 아래 A와 B는 결과적으로 같은 ndarray 객체를 생성합니다. 
A = np.arange(5)
B = np.array([0,1,2,3,4])  # 파이썬 리스트를 numpy ndarray로 변환

# &#39;4&#39;가 있어서 모두 문자열로 바뀝니다
C = np.array([0,1,2,3,&#39;4&#39;])

# D도 A, B와 같은 결과 
D = np.ndarray((5,), np.int64, np.array([0,1,2,3,4]))</code></pre>
<h4 id="크기-size-shape-ndim">크기 (size, shape, ndim)</h4>
<ul>
<li>ndarray.size :행렬 내 원소의 개수</li>
<li>ndarray.shape : 행렬의 모양</li>
<li>ndarray.ndim : 행렬의 축 개수</li>
<li>reshape() : 행렬의 모양을 바꿈</li>
</ul>
<h4 id="type">type</h4>
<ul>
<li>NumPy: numpy.array.dtype</li>
<li>파이썬: type()</li>
</ul>
<h4 id="특수-행렬">특수 행렬</h4>
<pre><code class="language-python"># 단위행렬
np.eye(3)</code></pre>
<pre><code class="language-python"># 0 행렬
np.zeros([2,3])</code></pre>
<pre><code class="language-python"># 1행렬
np.ones([3,3])</code></pre>
<h4 id="브로드캐스트">브로드캐스트</h4>
<ul>
<li>브로드캐스팅 : ndarray와 상수, 또는 서로 크기가 다른 ndarray끼리 산술연산이 가능한 기능</li>
</ul>
<pre><code class="language-python">A = np.arange(9).reshape(3,3)
B = np.array([1, 2, 3])
print(&quot;\nA+B:&quot;, A+B)</code></pre>
<h4 id="슬라이스와-인덱싱">슬라이스와 인덱싱</h4>
<ul>
<li>NumPy도 파이썬 내장 리스트와 비슷한 슬라이스와 인덱싱 연산을 제공</li>
</ul>
<h4 id="random">random</h4>
<ul>
<li>np.random.randint(): ~ 사이 1개 난수 하나를 생성</li>
<li>np.random.choice(): 리스트에 주어진 값 중 하나를 랜덤하게 골라줍니다.</li>
<li>np.random.permutation(): 무작위로 섞인 배열을 만들어 줍니다.</li>
<li>np.random.normal(): 정규분포를 따르는 변수를 임의로 표본추출해 줍니다.</li>
<li>np.random.uniform(): 균등분포를 따르는 변수를 임의로 표본추출해 줍니다.</li>
</ul>
<h4 id="전치행렬">전치행렬</h4>
<p>arr.T: 행렬의 행과 열 맞바꾸기
np.transpose: 축을 기준으로 행렬의 행과 열 바꾸기</p>
<h1 id="2-데이터의-행렬-변환_이미지">2. 데이터의 행렬 변환_이미지</h1>
<h4 id="이미지와-관련된-파이썬-라이브러리">이미지와 관련된 파이썬 라이브러리</h4>
<ul>
<li>matplotlib</li>
<li>PIL</li>
</ul>
<h4 id="간단한-이미지-조작">간단한 이미지 조작</h4>
<ul>
<li>open : Image.open()</li>
<li>size : Image.size </li>
<li>filename : Image.filename</li>
<li>crop : Image.crop((x0, y0, xt, yt)) 이미지 자르기</li>
<li>resize : Image.resize((w,h))</li>
<li>save : Image.save()</li>
</ul>
<pre><code class="language-python">from PIL import Image, ImageColor
import os
img_path = os.getenv(&quot;HOME&quot;) + &quot;이미지 경로&quot;
img = Image.open(img_path)

import numpy as np
img_arr = np.array(img) </code></pre>
<p>PIL.Image.Image 클래스는 리스트를 상속받지 않았지만 <strong>array_interface</strong>라는 속성이 정의되어 있어서 Numpy ndarray로 변환 가능</p>
<pre><code class="language-python">img_g = Image.open(img_path).convert(&#39;L&#39;) # 흑백으로 반환

# 색상
red = ImageColor.getcolor(&#39;RED&#39;,&#39;RGB&#39;)
reda = ImageColor.getcolor(&#39;red&#39;,&#39;RGBA&#39;)
yellow = ImageColor.getcolor(&#39;yellow&#39;,&#39;RGB&#39;)</code></pre>
<h1 id="3-구조화된-데이터와-pandas">3. 구조화된 데이터와 pandas</h1>
<h4 id="series">Series</h4>
<ul>
<li>일련의 객체를 담을 수 있는, 1차원 배열과 비슷한 자료 구조</li>
<li>배열 형태인 리스트, 튜플, 딕셔너리를 통해서 만들거나 NumPy 자료형(정수형, 실수형 등)으로도 만들 수 있습니다.</li>
</ul>
<pre><code class="language-python">data = {&#39;Region&#39; : [&#39;Korea&#39;, &#39;America&#39;, &#39;Chaina&#39;, &#39;Canada&#39;, &#39;Italy&#39;],
        &#39;Sales&#39; : [300, 200, 500, 150, 50],
        &#39;Amount&#39; : [90, 80, 100, 30, 10],
        &#39;Employee&#39; : [20, 10, 30, 5, 3]
        }
s = pd.Series(data)
s</code></pre>
<h4 id="dataframe">DataFrame</h4>
<ul>
<li>표(table)와 같은 자료 구조</li>
<li>DataFrame은 여러 개의 컬럼을 나타낼 수 있습니다.</li>
<li>csv 파일이나 excel 파일을 DataFrame으로 변환하는 경우가 많습니다.</li>
</ul>
<pre><code class="language-python">d = pd.DataFrame(data)
d</code></pre>
<h1 id="4-pandas와-함께-eda-시작하기">4. pandas와 함께 EDA 시작하기</h1>
<h4 id="eda---통계">EDA - 통계</h4>
<ul>
<li>.value_counts(): 각 범주(Case 또는Category)별로 값 반환</li>
<li>.value_counts().sum(): 컬럼별 통계 수치의 합을 확인</li>
<li>.sum(): 해당 컬럼 값의 총합</li>
<li>.corr(): 두 컬럼 내 데이터가 얼마만큼의 상관관계가 있는지를 나타낸것(2개의 매개변수가 필요)</li>
</ul>
<h4 id="pandas-통계-관련-메서드">pandas 통계 관련 메서드</h4>
<ul>
<li>count(): NA를 제외한 수를 반환</li>
<li>describe(): 요약 통계를 계산</li>
<li>min(), max(): 최소, 최댓값을 계산</li>
<li>sum(): 합을 계산</li>
<li>mean(): 평균을 계산</li>
<li>median(): 중앙값을 계산</li>
<li>var(): 분산을 계산</li>
<li>std(): 표준편차를 계산</li>
<li>argmin(), argmax(): 최소, 최댓값을 가지고 있는 값을 반환</li>
<li>idxmin(), idxmax(): 최소, 최댓값을 가지고 있는 인덱스를 반환</li>
<li>cumsum(): 누적 합을 계산</li>
<li>pct_change(): 퍼센트 변화율을 계산</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>