<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>머신러닝/딥러닝/추천/랭킹</title>
        <link>https://velog.io/</link>
        <description>데이터사이언티스트</description>
        <lastBuildDate>Wed, 03 Jul 2024 11:54:34 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>머신러닝/딥러닝/추천/랭킹</title>
            <url>https://velog.velcdn.com/images/jh_ds/profile/1cc35ba6-fcc5-431a-b1b5-ddf225eb4b99/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 머신러닝/딥러닝/추천/랭킹. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jh_ds" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[텍스트 임베딩] one-hot encoding의 한계점과 word2vec]]></title>
            <link>https://velog.io/@jh_ds/%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%9E%84%EB%B2%A0%EB%94%A9-one-hot-encoding%EC%9D%98-%ED%95%9C%EA%B3%84%EC%A0%90%EA%B3%BC-word2vec-omfblsx4</link>
            <guid>https://velog.io/@jh_ds/%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%9E%84%EB%B2%A0%EB%94%A9-one-hot-encoding%EC%9D%98-%ED%95%9C%EA%B3%84%EC%A0%90%EA%B3%BC-word2vec-omfblsx4</guid>
            <pubDate>Wed, 03 Jul 2024 11:54:34 GMT</pubDate>
            <description><![CDATA[<p>텍스트 임베딩은 단어를 벡터로 변환하여 기계 학습 모델이 이해할 수 있도록 하는 중요한 과정입니다. </p>
<p><strong><em>이 과정에서 사용되는 원-핫 인코딩(one-hot encoding)의 한계점과 word2vec의 장점은?</em></strong></p>
<h3 id="one-hot-encoding의-한계점">One-Hot Encoding의 한계점</h3>
<h4 id="차원의-저주-curse-of-dimensionality">차원의 저주 (Curse of Dimensionality)</h4>
<p>One-hot encoding에서는 단어의 개수만큼 차원이 생깁니다. 예를 들어, 10,000개의 단어가 있는 어휘 집합이 있다면, 각 단어는 10,000차원 벡터로 표현됩니다. 이는 매우 고차원으로, 데이터의 희소성(sparsity) 문제를 야기합니다.</p>
<h4 id="의미-정보-부족">의미 정보 부족</h4>
<p>One-hot encoding에서는 단어 간의 의미적 유사성을 반영하지 않습니다. 예를 들어, &#39;고양이&#39;와 &#39;강아지&#39;는 의미적으로 유사하지만, one-hot 벡터에서는 완전히 독립적이고 아무런 연관성이 없는 벡터로 표현됩니다.</p>
<h4 id="메모리-비효율성">메모리 비효율성</h4>
<p>고차원 벡터는 많은 메모리를 차지합니다. 대부분의 원소가 0이기 때문에, 실제로는 비효율적입니다.</p>
<h4 id="확장성-문제">확장성 문제</h4>
<p>새로운 단어가 추가될 때마다 벡터의 차원이 늘어나야 하므로, 실시간 또는 동적인 어휘 집합에 대해 적용하기 어렵습니다.</p>
<h3 id="word2vec의-장점">Word2Vec의 장점</h3>
<h4 id="저차원-임베딩">저차원 임베딩</h4>
<p>Word2Vec은 단어를 고정된 크기의 저차원 밀집 벡터(dense vector)로 변환합니다. 일반적으로 100-300차원의 벡터를 사용하므로, 차원의 저주 문제를 극복할 수 있습니다.</p>
<h4 id="의미적-유사성-반영">의미적 유사성 반영</h4>
<p>Word2Vec은 단어의 의미적 유사성을 반영합니다. 예를 들어, &#39;고양이&#39;와 &#39;강아지&#39;는 Word2Vec 벡터 공간에서 가까운 위치에 있게 됩니다. 이는 Word2Vec이 단어의 주변 맥락(context)을 학습하여 유사한 맥락에서 사용되는 단어들이 유사한 벡터를 갖도록 하기 때문입니다.</p>
<h4 id="메모리-효율성">메모리 효율성</h4>
<p>저차원 밀집 벡터로 표현되기 때문에 메모리를 효율적으로 사용할 수 있습니다. 이는 특히 대규모 텍스트 데이터셋을 다룰 때 큰 장점입니다.</p>
<h4 id="확장성">확장성</h4>
<p>Word2Vec 모델은 새로운 단어가 추가되더라도 기존 모델을 유지하면서 새로운 단어에 대해 벡터를 학습할 수 있습니다. 또한, 사전 학습된 Word2Vec 모델을 다양한 자연어 처리 작업에 전이 학습(transfer learning) 형태로 사용할 수 있습니다.</p>
<p>다양한 활용 가능성
Word2Vec 벡터는 단어 유사도 계산, 군집화, 차원 축소 및 다양한 자연어 처리 작업에 유용하게 사용될 수 있습니다.</p>
<blockquote>
<p>이러한 이유들로 인해, Word2Vec은 많은 자연어 처리(NLP) 작업에서 원-핫 인코딩을 대체하여 사용되고 있습니다. Word2Vec은 단어 간의 의미적 관계를 보다 잘 반영하여, 자연어 이해와 처리 성능을 크게 향상시킬 수 있습니다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[임베딩레이어란? (embedding layer)]]></title>
            <link>https://velog.io/@jh_ds/%EC%9E%84%EB%B2%A0%EB%94%A9%EB%A0%88%EC%9D%B4%EC%96%B4%EB%9E%80-embedding-layer</link>
            <guid>https://velog.io/@jh_ds/%EC%9E%84%EB%B2%A0%EB%94%A9%EB%A0%88%EC%9D%B4%EC%96%B4%EB%9E%80-embedding-layer</guid>
            <pubDate>Tue, 02 Jul 2024 14:21:20 GMT</pubDate>
            <description><![CDATA[<p>딥러닝에서 임베딩 레이어(embedding layer)는 텍스트나 범주형 데이터와 같은 이산형(discrete) 데이터를 연속적인 벡터 공간으로 변환해주는 역할을 합니다. </p>
<p> 주로 자연어 처리(NLP)에서 많이 사용되며, 단어, 문장, 문서와 같은 텍스트 데이터를 수치화하여 컴퓨터가 이해할 수 있는 형태로 변환합니다.</p>
<p>임베딩 레이어는 일반적으로 딥러닝 모델의 첫 번째 레이어로 사용되며, 입력 데이터를 특정 차원의 밀집 벡터(dense vector)로 매핑합니다. 이 과정에서 단어나 범주는 고유한 인덱스를 가지고 있으며, 각 인덱스는 임베딩 레이어를 통해 해당 단어나 범주에 대응하는 실수값 벡터로 변환됩니다.</p>
<blockquote>
<p>예를 들어, 단어 &quot;apple&quot;이라는 텍스트를 임베딩 레이어를 통해 100차원의 벡터 [0.5, -0.3, 0.1, ...]로 매핑할 수 있습니다. 이렇게 변환된 임베딩 벡터는 해당 단어의 의미와 특성을 반영하며, 유사한 의미를 가진 단어들은 벡터 공간 상에서 서로 가까이 위치할 가능성이 높습니다.</p>
</blockquote>
<p>임베딩 레이어는 데이터의 밀도를 높이고, 불필요한 차원을 줄이며, 딥러닝 모델의 성능을 향상시키는 데 기여합니다. 또한, 사전 훈련된 임베딩을 사용하면 일반화 성능을 향상시킬 수 있으며, 특정 작업에 맞게 임베딩을 Fine-tuning 할 수도 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[loss function 종류]]></title>
            <link>https://velog.io/@jh_ds/loss-function-%EC%A2%85%EB%A5%98</link>
            <guid>https://velog.io/@jh_ds/loss-function-%EC%A2%85%EB%A5%98</guid>
            <pubDate>Tue, 02 Jul 2024 14:17:30 GMT</pubDate>
            <description><![CDATA[<p>딥러닝에서 손실 함수(loss function)는 모델의 예측값과 실제값 사이의 차이를 측정하여 모델이 얼마나 잘 작동하는지를 평가하는 데 사용됩니다. 
대표적인 손실 함수들을 살펴보겠습니다.</p>
<h3 id="1-평균-제곱-오차-mean-squared-error-mse">1. 평균 제곱 오차 (Mean Squared Error, MSE)</h3>
<p><strong><em>회귀 문제</em></strong>
설명: 예측값과 실제값 사이의 차이의 제곱을 평균한 값입니다. 차이의 제곱을 사용하므로 큰 오류가 더 크게 반영됩니다.
<img src="https://velog.velcdn.com/images/jh_ds/post/f91b4330-e495-46ef-9c5a-65f2ab5ad5a4/image.png" alt=""></p>
<h3 id="2-평균-절대-오차-mean-absolute-error-mae">2. 평균 절대 오차 (Mean Absolute Error, MAE)</h3>
<p><em><strong>회귀 문제</strong></em>
설명: 예측값과 실제값 사이의 절대 차이를 평균한 값입니다. MSE와 달리 큰 오류에 덜 민감합니다.
<img src="https://velog.velcdn.com/images/jh_ds/post/b721e2c3-b048-4ddb-999f-a5e2ca40e259/image.png" alt=""></p>
<h3 id="3-교차-엔트로피-손실-cross-entropy-loss">3. 교차 엔트로피 손실 (Cross-Entropy Loss)</h3>
<p><em><strong>분류 문제</strong></em>
설명: 예측 확률 분포와 실제 클래스의 분포 사이의 차이를 측정합니다. 주로 이진 분류와 다중 클래스 분류에 사용됩니다.</p>
<p>이진 교차 엔트로피</p>
<ul>
<li>이진 분류 문제에 사용되며, 두 클래스 간의 교차 엔트로피를 계산합니다.
<img src="https://velog.velcdn.com/images/jh_ds/post/2648c81e-0bc8-494f-9d55-c72e180a08e7/image.png" alt=""></li>
</ul>
<p>범주형 교차 엔트로피</p>
<ul>
<li>다중 클래스 분류 문제에 사용됩니다.
<img src="https://velog.velcdn.com/images/jh_ds/post/06886596-6c14-42c7-8450-5ef3d0b4e6c6/image.png" alt=""></li>
</ul>
<h3 id="4-후버-손실-huber-loss">4. 후버 손실 (Huber Loss)</h3>
<p><em><strong>회귀 문제</strong></em>
설명: MSE와 MAE의 장점을 결합한 손실 함수입니다. 작은 오류에 대해서는 MSE처럼 동작하고, 큰 오류에 대해서는 MAE처럼 동작합니다.
<img src="https://velog.velcdn.com/images/jh_ds/post/bca0286d-3d0e-43bb-a570-882b01e4cc9c/image.png" alt=""></p>
<h3 id="5-hinge-loss">5. Hinge Loss</h3>
<p><em><strong>서포트 벡터 머신(SVM)에서 주로 사용</strong></em>
설명: 분류 문제에서 사용되며, 올바른 클래스의 예측 점수가 충분히 크도록 유도합니다.
<img src="https://velog.velcdn.com/images/jh_ds/post/ca35a0fc-4728-4029-80bc-d6851422986e/image.png" alt=""></p>
<h3 id="6-kullback-leibler-divergence-kl-divergence">6. Kullback-Leibler Divergence (KL Divergence)</h3>
<p><em><strong>확률 분포 비교</strong></em>
설명: 두 확률 분포 사이의 차이를 측정합니다. 주로 분포의 유사성을 평가할 때 사용됩니다.
<img src="https://velog.velcdn.com/images/jh_ds/post/bfb72aaf-44ac-486a-97c4-6904abd34031/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[XGboost / LightGBM / CatBoost]]></title>
            <link>https://velog.io/@jh_ds/XGboost-LightGBM-CatBoost</link>
            <guid>https://velog.io/@jh_ds/XGboost-LightGBM-CatBoost</guid>
            <pubDate>Tue, 02 Jul 2024 13:54:00 GMT</pubDate>
            <description><![CDATA[<p>XGBoost (2014), LightGBM (2017), CatBoost(2018)는 모두 그라디언트 부스팅(Gradient Boosting) 알고리즘을 기반으로 하지만, 각기 다른 최적화와 특징을 가지고 있습니다. </p>
<h4 id="각-모델은-어떤-특징을-가지고있으며-어떤-데이터에-좋은-성능을-보일까요"><em>각 모델은 어떤 특징을 가지고있으며 어떤 데이터에 좋은 성능을 보일까요?</em></h4>
<h3 id="xgboost">XGBoost</h3>
<blockquote>
<p>XGBoost (Extreme Gradient Boosting)는 성능과 효율성을 고려하여 설계된 그라디언트 부스팅 프레임워크입니다.</p>
</blockquote>
<p><em>Regularization</em></p>
<ul>
<li>L1 및 L2 정규화를 사용하여 모델의 복잡도를 제어하고 과적합을 방지합니다.</li>
</ul>
<p><em>Parallel Processing</em></p>
<ul>
<li>병렬 처리를 통해 학습 속도를 크게 향상시킵니다.</li>
</ul>
<p><em>Tree Pruning</em></p>
<ul>
<li>&quot;최소 손실을 고려한 가지치기&quot; 방법을 사용하여 불필요한 노드를 제거하고 트리를 최적화합니다.</li>
</ul>
<p><em>Handling Missing Values</em></p>
<ul>
<li>결측값을 자동으로 처리하여 데이터 전처리의 부담을 줄입니다.</li>
</ul>
<h4 id="좋은-성능을-보이는-데이터">좋은 성능을 보이는 데이터</h4>
<p>(1) 크고 복잡한 데이터셋</p>
<ul>
<li>XGBoost는 매우 큰 데이터셋과 복잡한 특징을 가진 데이터에 대해 잘 작동합니다.</li>
</ul>
<p>(2) 다양한 타입의 문제</p>
<ul>
<li>분류, 회귀, 순위 예측 등 다양한 문제에 효과적입니다.</li>
</ul>
<p>(3) 정형 데이터</p>
<ul>
<li>특히 테이블 형식의 정형 데이터에 대해 좋은 성능을 보입니다.<h3 id="lightgbm">LightGBM</h3>
<blockquote>
<p>LightGBM (Light Gradient Boosting Machine)은 마이크로소프트에서 개발한 그라디언트 부스팅 프레임워크로, 학습 속도와 메모리 사용을 최적화한 것이 특징입니다.</p>
</blockquote>
</li>
</ul>
<p><em>Leaf-wise Tree Growth</em></p>
<ul>
<li>전통적인 level-wise 방식 대신 leaf-wise 방식을 사용하여 트리를 확장합니다. 이는 더 깊고 예측력이 높은 트리를 생성합니다.</li>
</ul>
<p><em>Histogram-based Algorithm</em></p>
<ul>
<li>연속형 변수를 히스토그램으로 변환하여 연산 효율성을 높입니다.</li>
</ul>
<p><em>Categorical Feature Handling</em></p>
<ul>
<li>범주형 변수를 자동으로 처리하여 효율성을 높입니다.</li>
</ul>
<h4 id="좋은-성능을-보이는-데이터-1">좋은 성능을 보이는 데이터</h4>
<p>(1) 대규모 데이터셋</p>
<ul>
<li>LightGBM은 특히 매우 큰 데이터셋에서 빠르고 효율적인 학습을 제공합니다.</li>
</ul>
<p>(2) 많은 특징을 가진 데이터</p>
<ul>
<li>많은 수의 특징을 가진 데이터에서도 잘 작동합니다.</li>
</ul>
<p>(3) 온라인 학습</p>
<ul>
<li>실시간 데이터와 온라인 학습 시나리오에서 유용합니다.</li>
</ul>
<h3 id="catboost">CatBoost</h3>
<blockquote>
<p>CatBoost (Categorical Boosting)는 Yandex에서 개발한 그라디언트 부스팅 프레임워크로, 범주형 데이터를 효과적으로 처리하는 데 초점을 맞추고 있습니다.</p>
</blockquote>
<p><em>Categorical Feature Handling</em></p>
<ul>
<li>범주형 변수를 자동으로 처리하여 원-핫 인코딩 없이도 범주형 변수의 정보를 잘 반영합니다.</li>
</ul>
<p><em>Ordered Boosting</em></p>
<ul>
<li>부스팅 과정에서 데이터 순서를 고려하여 과적합을 방지합니다.</li>
</ul>
<p><em>Robustness to Overfitting</em></p>
<ul>
<li>과적합에 강한 모델을 제공하며, 작은 데이터셋에서도 잘 작동합니다.</li>
</ul>
<h4 id="좋은-성능을-보이는-데이터-2">좋은 성능을 보이는 데이터</h4>
<p>(1) 범주형 변수가 많은 데이터</p>
<ul>
<li>CatBoost는 범주형 변수가 많은 데이터에 대해 매우 좋은 성능을 보입니다.</li>
</ul>
<p>(2) 작고 복잡한 데이터셋</p>
<ul>
<li>상대적으로 작은 데이터셋에서도 좋은 성능을 발휘합니다.</li>
</ul>
<p>(3) 정형 데이터</p>
<ul>
<li>테이블 형식의 데이터에서 특히 강력한 성능을 보입니다.</li>
</ul>
<h3 id="요약">요약</h3>
<p><em><strong>XGBoost</strong></em></p>
<ul>
<li>매우 큰 데이터셋과 복잡한 특징을 가진 데이터에 적합하며, 정형 데이터에 대해 좋은 성능을 보입니다.</li>
</ul>
<p><em><strong>LightGBM</strong></em></p>
<ul>
<li>학습 속도와 메모리 사용이 최적화되어 있어 대규모 데이터셋과 많은 특징을 가진 데이터에 적합합니다.</li>
</ul>
<p><em><strong>CatBoost</strong></em></p>
<ul>
<li>범주형 변수가 많은 데이터와 상대적으로 작은 데이터셋에서도 좋은 성능을 발휘하며, 범주형 변수를 효과적으로 처리합니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Min-Max정규화, Max정규화 차이]]></title>
            <link>https://velog.io/@jh_ds/Min-Max%EC%A0%95%EA%B7%9C%ED%99%94-Max%EC%A0%95%EA%B7%9C%ED%99%94-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@jh_ds/Min-Max%EC%A0%95%EA%B7%9C%ED%99%94-Max%EC%A0%95%EA%B7%9C%ED%99%94-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Tue, 02 Jul 2024 13:28:05 GMT</pubDate>
            <description><![CDATA[<p>Min-Max 정규화와 Max 정규화는 데이터의 스케일을 조정하는 방법으로, 머신 러닝 모델의 성능을 향상시키기 위해 자주 사용됩니다.</p>
<p><strong><em>보통 Min-Max 정규화가 주로 사용되지만 어떠한 경우에 Max 정규화가 필요할까요?</em></strong></p>
<h3 id="min-max-normalization">Min-Max Normalization</h3>
<p>Min-Max 정규화는 데이터를 특정 범위로 조정하는 방법입니다. 일반적으로 0과 1 사이로 조정합니다. 이 방법은 데이터의 최소값을 0으로, 최대값을 1로 맞추고 나머지 값들을 비례적으로 변환합니다.</p>
<p><img src="https://velog.velcdn.com/images/jh_ds/post/71f9dce4-811f-4ad4-a9d4-56a034298676/image.png" alt=""></p>
<h3 id="max-normalization">Max Normalization</h3>
<p>Max 정규화는 데이터의 최대값을 기준으로 데이터를 정규화하는 방법입니다. 이 방법에서는 모든 값을 데이터의 최대값으로 나누어 범위를 0과 1 사이로 맞춥니다.</p>
<p><img src="https://velog.velcdn.com/images/jh_ds/post/995e8bf8-253b-4fb2-8296-0adf9660c0b1/image.png" alt=""></p>
<h3 id="차이점">차이점</h3>
<h4 id="범위">범위</h4>
<p>Min-Max 정규화는 데이터의 최소값과 최대값을 0과 1로 맞추지만, Max 정규화는 최대값을 1로 맞춥니다.</p>
<h4 id="변화량">변화량</h4>
<p>Min-Max 정규화는 모든 데이터의 범위가 동일하게 변하지만, Max 정규화는 각 값이 최대값에 대해 상대적으로 변합니다.</p>
<h3 id="max-정규화가-유리한-case">Max 정규화가 유리한 Case</h3>
<h4 id="특정-피처의-상대적인-크기만-중요할-때">특정 피처의 상대적인 크기만 중요할 때</h4>
<ul>
<li>데이터에서 각 피처의 상대적인 크기만 중요하고, 절대적인 범위가 크게 중요하지 않을 때 유용합니다. 예를 들어, 어떤 값이 전체에서 차지하는 비율이 중요할 때 사용할 수 있습니다.</li>
</ul>
<h4 id="스파스-데이터sparse-data">스파스 데이터(sparse data)</h4>
<ul>
<li>데이터의 대부분 값이 0이고, 소수의 큰 값이 있는 경우 Max 정규화가 효과적일 수 있습니다. 이러한 경우 Min-Max 정규화는 극단적인 값들에 의해 왜곡될 수 있습니다.</li>
</ul>
<h4 id="빠르게-변화하는-데이터">빠르게 변화하는 데이터</h4>
<ul>
<li>데이터가 지속적으로 빠르게 변화하는 환경에서 최대값에 대해 상대적으로 정규화하는 것이 더 유용할 수 있습니다. 예를 들어, 실시간으로 변하는 센서 데이터나 주식 가격 등에서 사용할 수 있습니다.</li>
</ul>
<h4 id="계산의-간소화">계산의 간소화</h4>
<ul>
<li>Max 정규화는 계산이 간단하여 빠르게 처리할 수 있습니다. 따라서 계산 자원이 제한된 환경에서 유리할 수 있습니다.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>