<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>HJ</title>
        <link>https://velog.io/</link>
        <description>First time, Last time, Every time.</description>
        <lastBuildDate>Tue, 23 Jul 2024 12:24:21 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>HJ</title>
            <url>https://velog.velcdn.com/images/__hj______/profile/b66fb59e-8830-4dd6-95b6-7c496e317a88/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. HJ. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/__hj______" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[오랜만에 쓰는 TIL]]></title>
            <link>https://velog.io/@__hj______/thelastproject</link>
            <guid>https://velog.io/@__hj______/thelastproject</guid>
            <pubDate>Tue, 23 Jul 2024 12:24:21 GMT</pubDate>
            <description><![CDATA[<h2 id="vamos">Vamos!!</h2>
<p>이게 얼마만인지.. 벨로그 들어온게 기억이 안날정도다
SQL 처음 배워서 흐헝 어려웡 했던게 어제 같은데
벌써 <strong>최종 프로젝트</strong>다!!</p>
<h3 id="드디어-최종-프로젝트-시작">드디어 최종 프로젝트 시작!!</h3>
<p>간단하게 프로젝트 진행 상황을 5분 기록보드로 정리했을땐 다음과 같다!
<img src="https://velog.velcdn.com/images/__hj______/post/3f6ee7c3-8709-4f68-bec5-467e9794bf4f/image.png" alt=""></p>
<p>Riot Games API를 활용해서 League of legend 데이터 프레임도 만들어 봤다.(*Match_V5, 83개의 컬럼)
<img src="https://velog.velcdn.com/images/__hj______/post/cf79d1c0-0d7f-4373-ab98-2c1258d43595/image.png" alt=""> </p>
<p>csv로 마는 과정에서 가장 아래 row 2줄의 데이터가 컬럼 하나씩 밀려서 저장되어서 곤란하기도 했다..</p>
<p><img src="https://velog.velcdn.com/images/__hj______/post/06d9820b-2c19-4871-9a42-c67bb4d35e55/image.png" alt=""> 😭곤란하다 곤란해.. ㅜ</p>
<p>주제는 이미 결정했지만 주 게임을 선정 못해서 계속해서 컬럼을 비교하고 다양한 API를 찾아보았고, 팀장님의 추천으로 <strong>이터널리턴</strong>의 API로 결정했다.</p>
<p><img src="https://velog.velcdn.com/images/__hj______/post/fd9cf031-5975-4162-97b1-b02e94b7cff6/image.png" alt=""></p>
<p>😄데이터 걱정은 안해도 될 것 같다!</p>
<p>두 게임 다 API로 할 수 있는게 많아서.. 롤과 이터널리턴 중 데이터를 결정하기 위해서 신규유저 입장에서 플레이해보고 결정하기로 했다.</p>
<p>롤은 최근에 처음으로 시작했기때문에 신규유저의 불편함은 잘 알고있었다. 
그래서 이터널리턴도 설치해서 튜토리얼부터 해봤는데...
<img src="https://velog.velcdn.com/images/__hj______/post/20b4738b-2e4d-4381-a351-8108aa1d0693/image.png" alt=""></p>
<p>한국인 특. MMORPG 광인 특. 두글자 레어닉에서 막혔고.. 결국 일단 급한대로 설정해서 튜토리얼을 플레이했다!</p>
<p><img src="https://velog.velcdn.com/images/__hj______/post/1b0219c8-a01d-46e6-9262-ab19efc7edc2/image.png" alt=""></p>
<p>전략기반 서바이벌 게임이어서 낯설다고 생각했고 튜토리얼도 어려운 부분이 있었지만, 그래픽도 화려하고 캐릭터도 이쁘고 또!! 게임 속에 MMORPG같은 요소들이 녹아 있어서 재미를 느꼈다!!</p>
<h2 id="entonces">Entonces!</h2>
<p><strong>이터널리턴 API</strong>로 결정!</p>
<p>최종 프로젝트를 시작하면서 여러가지 걱정도 많았고, 주제 선정에 너무 딥하게 신중하기도 했지만, 역시.. 판단력 좋으신 팀장님께서 더 좋은 방향으로 팀을 이끌어 주셨다!👍👍</p>
<p>뭔가,, 쓰다보니 일기가 된 것 같은데,, </p>
<p><strong>✨쌈@뽕✨</strong>하게 분석하겠어.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-Clustering(군집분석)]]></title>
            <link>https://velog.io/@__hj______/TIL-Clustering</link>
            <guid>https://velog.io/@__hj______/TIL-Clustering</guid>
            <pubDate>Mon, 17 Jun 2024 09:45:06 GMT</pubDate>
            <description><![CDATA[<h1 id="clustering군집분석">Clustering(군집분석)</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/518f16f8-4128-4f3e-ab8a-df8a82e95fe2/image.png" alt=""></p>
<h2 id="1-클러스터링이란">1. 클러스터링이란?</h2>
<blockquote>
<p>💡 정답이 없을 때, 정답을 찾아가는 과정!! = 비지도학습!</p>
</blockquote>
<h3 id="1-정의">1) 정의</h3>
<ul>
<li>클러스터링은 데이터분석에서 피쳐(컬럼) 유사성의 개념을 기반으로 전체 데이터셋을 그룹로 나누는 <strong>그룹핑 기법</strong>이다. 여기서 각 그룹을 <strong>클러스터</strong>라고 한다!<blockquote>
<p>즉, 의미있는 특징(컬럼), 우리가 놓치고 있는 부분등을 찾기위해 가설을 세우고, 최적의 그룹 갯수를 찾아 그룹별 인사이트를 도출해내야 한다!
<img src="https://velog.velcdn.com/images/__hj______/post/d05029d6-c3f1-4578-93e9-7db87da1f561/image.png" alt=""></p>
</blockquote>
</li>
</ul>
<h3 id="2-예시---마케팅데이터">2) 예시 - 마케팅데이터</h3>
<p>클러스터링을 한 후, 기준을 어떻게 나눠야하는지 모를 때
▶ 결과 : &#39;잠옷만 사는 고객&#39;, &#39;골프채만 구매하는 고객&#39; 등으로 분류. 그런데 <strong>나눠진 기준을 알 수 없다.</strong></p>
<blockquote>
<p>즉, 많은 컬럼들 속에서 <strong>어떻게 군집을 나누면 좋을 지</strong> 보고 싶을 때 <strong>클러스터링</strong>을 진행한다!</p>
</blockquote>
<p>😄 : &quot;우리 데이터 컬럼 이만큼 다 줄테니까, 니가 나눠봐!&quot; 
🤨 : &quot;어 이상한데 몇개 빼고 다시해봐~&quot;</p>
<blockquote>
</blockquote>
<p>그 뒤에, 그룹이 잘 나뉘어 졌는지는 시각화를 통해 확인!</p>
<h2 id="2-클러스터링-프로세스">2. 클러스터링 프로세스</h2>
<h3 id="1-프로세스pre-processing">1) 프로세스(pre-processing)</h3>
<blockquote>
<h4 id="①-기간-선정--클러스터링을-위한-데이터-기간-설정">① <strong>기간 선정</strong> : 클러스터링을 위한 데이터 기간 설정</h4>
</blockquote>
<ul>
<li>의미 있는 패턴을 도출하기 위해서 ▶ <strong>최소 3개월 이상</strong>의 데이터셋이 권장</li>
<li>클러스터링의 목적 : live한 데이터의 유입 시 유저의 행동을 통해 이를 알맞게 배치시키는 <strong>모델의 생성</strong><ul>
<li>해당 <strong>모델</strong>은 초기에 생성, 서비스 변동사항에 따라 일정 주기에 따라 재시행!</li>
</ul>
</li>
</ul>
<blockquote>
<h4 id="②-이상치-기준선정-및-제외--iqr-z-score-등-다양한-이상치-기법을-통해-이상치-비중-기록">② 이상치 기준선정 및 제외 : IQR, Z-SCORE 등 다양한 이상치 기법을 통해 이상치 비중 기록</h4>
</blockquote>
<h5 id="--🌀-z-score">- 🌀 <strong>Z-SCORE</strong></h5>
<ul>
<li>데이터의 분포가 <strong>정규 분포</strong>를 이룰 때, 데이터의 <strong>표준 편차</strong>를 이용해 이상치를 탐지하는 방법</li>
<li>각 데이터(행) 마다 Z-SCORE를 구한다.<ul>
<li>Z값은 X에서 평균을 뺀 데이터를 표준편차로 나눈 값. <strong>표준 점수</strong>라고 부른다.</li>
<li><strong>표준 점수</strong>는 평균으로부터 얼마나 멀리 떨어져 있는지를 보여주며, 일반적으로 <strong>-3에서 +3 사이의 값을 가진다.</strong> ❗±3 이상이면 이상치로 간주한다.❗</li>
<li>⚠️ 현업에서는, 정확한 ±3을 따지기 보단, <strong>회사의 니즈에 따른 특정 조건에 따라 기준을 정립</strong>하고 이를 적용하여 데이터를 핸들링한다.</li>
</ul>
</li>
<li>Z-SCORE=0 : 평균과 같음을 의미한다. (= 평균에서 떨어진 거리가 0)</li>
<li>Z-SCORE&gt;0 : 평균보다 큼. (ex. Z-SCORE가 1이면, 평균보다 1 표준편차만큼 더 큰값을 의미)</li>
<li>Z-SCORE&lt;0 : 평균보다 작음. (ex. Z-SCORE가 -1이면, 평균보다 1 표준편차만큼 더 작은값을 의미)
<img src="https://velog.velcdn.com/images/__hj______/post/d5fbd4ef-3bd7-49de-83b9-5cd68f10535f/image.png" alt=""><blockquote>
</blockquote>
<h5 id="--🌀-iqrinterquartile-range">- 🌀 IQR(Interquartile Range)</h5>
</li>
<li>데이터의 분포가 <strong>정규 분포를 이루지 않을 떄</strong> 사용한다.</li>
<li>데이터의 25% 지점()과 75% 지점() 사이의 범위()를 사용한다. ❗이를 벗어나는 값들은 모두 <strong>이상치로 간주</strong>❗</li>
<li>이걸 시각화 한 것 = <strong>Box Plot</strong>, IQR 밖의 데이터 포인트는 이상치로 표시</li>
<li>IQR : (제 3사분위 값) - (제 1사분위 값)
<img src="https://velog.velcdn.com/images/__hj______/post/7c07fe30-b10c-4c32-ad3c-a76520ecd161/image.png" alt=""><blockquote>
</blockquote>
<h5 id="--🌀-isolation-forest">- 🌀 Isolation Forest</h5>
</li>
<li><strong>머신러닝 기법 중 하나</strong>다. ❗컬럼 갯수가 많을 때 이상치를 판별하기 용이하다.❗</li>
<li>데이터셋을 <strong>의사결정나무</strong> 형태로 표현한다.
<img src="https://velog.velcdn.com/images/__hj______/post/e4cd9539-f428-451d-b77a-d908ec16ff59/image.png" alt=""></li>
<li>질문에 질문들이 꼬리를 물고 이어져, 각 값은 매, 펭귄, 돌고래, 곰 중 하나에 배치된다.</li>
<li>하지만 <strong>이상치</strong>의 경우, 어디에도 속하지 않는다.</li>
<li>✅ 한번 분리될 때 마다 <strong>경로 길이</strong>가 부여되며, 트리에서 <strong>몇 번 분리</strong>해야 하는지<strong>(데이터까지의 경로 길이)</strong>를 기준으로 데이터가 <strong>이상치인지 아닌지를 판단</strong></li>
<li>✅ 즉, <strong>이상치</strong>는 다른 관측치에 비해 <strong>짧은 경로 길이</strong>를 가진다.</li>
<li>경로 길이로 점수는 0에서 1사이로 산출되며, <strong>결과가 1에 가까울수록 이상치</strong>로 간주한다.
<img src="https://velog.velcdn.com/images/__hj______/post/885562d9-2290-4fe2-a0ac-21f2868c46af/image.png" alt=""><blockquote>
</blockquote>
<h5 id="--🌀-dbscan">- 🌀 DBScan</h5>
<ul>
<li><strong>밀도 기반의 클러스터링 알고리즘</strong>으로, <strong>어떠한 클러스터에도 포함되지 않는 데이터</strong>를 <strong>이상치</strong>로 탐지하는 방법! ❗복잡한 구조의 데이터에서 이상치를 판별하는데 유용하다.❗</li>
<li>ex. 지리 데이터 분석, 이미지 데이터 분석의 이상치 기법으로 사용.</li>
<li>각 데이터 밀도를 기반으로 군집 형성 ▶ <strong>설정된 거리 내에서 설정된 최소 개수의 다른 포인트가 있을 경우</strong> ▶ 해당 포인트는 <strong>핵심포인트</strong>로 간주!</li>
<li>✅ 핵심 포인트들이 서로 연결되어 군집을 형성하며, 이와 <strong>연결되지 않은 포인트 = 이상치</strong>로 분류.
<img src="https://velog.velcdn.com/images/__hj______/post/84acbb54-1bd9-41a9-94bf-c17af393fe7b/image.png" alt=""></li>
</ul>
</li>
</ul>
<blockquote>
<h4 id="③-표준화--데이터의-크기가-너무-크거나-컬럼-간-데이터-range에-차이가-많을-때-일부-컬럼에-대해-진행-ex-데이터의-변동이-큰-경우--잔잔하게-있다가-갑자기-데이터가-팍-튀었는데-그-팍-튄-자리에서-잔잔하게-있는-경우-표준화-진행">③ <strong>표준화</strong> : 데이터의 크기가 너무 크거나, 컬럼 간 데이터 range에 차이가 많을 때 일부 컬럼에 대해 진행! (ex. 데이터의 변동이 큰 경우 = 잔잔하게 있다가 갑자기 데이터가 팍! 튀었는데, 그 팍! 튄 자리에서 잔잔하게 있는 경우 표준화 진행)</h4>
</blockquote>
<h5 id="--🌀-minmax-scale">- 🌀 MinMax Scale</h5>
<ul>
<li><strong>모든 데이터 값을 0과 1 사이에 배치</strong></li>
<li>❗이상치에 취약하다.❗</li>
<li>ex. <code>df[&#39;pay_amt&#39;] = 0,0,0,0,1,2,3,10000</code> 에서 100이 1에 배치되면서 나머지 값들은 0에 수렴하는 값을 가지게 되므로, 전체 데이터 분포가 뭉해지기 때문이다!<blockquote>
</blockquote>
<h5 id="--🌀-standard-scale">- 🌀 Standard Scale</h5>
</li>
<li><strong>평균을 0, 표준편차를 1</strong>로 변환.</li>
<li>❗MinMax Scale이 가지는 한계점을 보완한다.❗</li>
<li>각각의 Data point가 &#39;평균으로부터 얼마나 떨어져 있는지&#39;에 대한 수치로 변환</li>
<li>✅ <strong>군집 분석</strong>시 가장 많이 쓰는 표준화 기법</li>
</ul>
<blockquote>
<h4 id="④-🌟🌟차원-축소pca🌟🌟--가장-대표적인-차원-축소-기법">④ 🌟🌟<strong>차원 축소(PCA)</strong>🌟🌟 : 가장 대표적인 차원 축소 기법</h4>
</blockquote>
<ul>
<li>많은 컬럼으로 구성된 다차원 데이터 세트의 차원을 축소하여 새로운 차원의 데이터 세트를 생성하는 것. <ul>
<li>(= 컬럼이 너무 많기 때문에 학습이 어렵고 더 좋은 특징만 가지고 사용하겠어!!)<blockquote>
<blockquote>
<p>&quot;컬럼이 너무 많아서 뭘로 나눠야할 지 모르겠어!!&quot; ▶ &quot;오! 차원축소로 중요한 성분을 가지고 그걸 기준으로 데이터를 나눠 보겠어!! ▶ &quot;성분을 2개~3개 골라볼까?&quot; 의 <strong>시작점</strong>이 <strong>차원 축소</strong></p>
</blockquote>
</blockquote>
</li>
</ul>
</li>
<li>여러 변수 간에 존재하는 상관관계를 이용하여 이를 대표하는 주성분을 추출해 차원을 축소하는 기법.<ul>
<li>(<strong>데이터의 분포를 가장 잘 표현하는 성분을 찾아주는 것.</strong>)</li>
</ul>
</li>
<li>✅ 핵심 : <strong>가장 높은 분산을 가지는 데이터의 축</strong>을 찾아 <strong>그 축으로 차원을 축소</strong>하는 것.<ul>
<li><strong>축 = 주성분 = 피쳐 = 컬럼 = 차원</strong>
<img src="https://velog.velcdn.com/images/__hj______/post/2fc56f7d-1168-485f-b2a4-7a576d7fdf7f/image.png" alt=""></li>
</ul>
</li>
<li>100%는 없다. 그래서 $p-value$로 유의미한지 따져야 한다.</li>
</ul>
<h3 id="2-프로세스experiment--비지도학습이라서-직접-k값을-넣어야한다-이때-k값을-참고할때-다음의-3가지를-사용">2) 프로세스(Experiment) : 비지도학습이라서 직접 k값을 넣어야한다. 이때 K값을 참고할때 다음의 3가지를 사용!!</h3>
<blockquote>
<h4 id="⑤-k값군집갯수-초기-컬럼피쳐-선정--sillhouette-coefficient-elbow-point-distance-map을-통해-초기-군집-갯수-지정">⑤ K값(군집갯수), 초기 컬럼(피쳐) 선정 : <code>Sillhouette Coefficient</code>, <code>elbow-point</code>, <code>Distance Map</code>을 통해 초기 군집 갯수 지정</h4>
</blockquote>
<ul>
<li><strong>초기 컬럼</strong>의 설정은 <strong>모든 컬럼</strong>을 기준으로 진행</li>
<li>클러스터링을 반복진행하며, <strong>K값</strong>과 <strong>피쳐의 컨디션</strong>을 기록하고, <strong>최적으로 구분된 컨디션</strong>을 찾는다.</li>
<li>경우에 따라, <strong>파생변수</strong>(ex. 게임시간, 획득한 경험치, <strong>시간당 평균 획득 경험치(얘가 파생변수)</strong>를 확인)를 만들어 클러스터링을 진행하기도 함!!<h5 id="--🌀-sillhouette-coefficient">- 🌀 Sillhouette Coefficient</h5>
</li>
<li>&quot;아 K값 몇개로 나눠야할 지 모르겠는데, 실루엣계수 함 볼까?&quot;</li>
<li><strong>각 군집간의 거리</strong>가 얼마나 <strong>효율적으로 분리</strong>되어 있는지를 나타낸다.<ul>
<li>효율적으로 잘 분리되어 있다 = 다른 군집과의 거리는 떨어져 있고, 동일 군집끼리 데이터는 서로 가깝게 뭉쳐있다.</li>
</ul>
</li>
<li><strong>실루엣 계수는 -1에서 1사이의 값</strong>을 가지며, -1이나 1에 가까울수록 근처의 군집과 멀리 떨어져 있는 것이며 <strong>0에 가까울수록 근처 군집과 가깝다</strong>는 뜻이다!</li>
<li>✅ 즉, <strong>-1이나 1에 가까울수록 군집 간 거리가 유의미하게 구분된다</strong>는 것을 의미한다.
<img src="https://velog.velcdn.com/images/__hj______/post/7934ed59-e6ac-4f88-b32e-8d011194674c/image.png" alt=""><blockquote>
</blockquote>
<h5 id="--🌀-scree-plot의-elbow-point">- 🌀 Scree plot의 elbow-point</h5>
</li>
<li>⚠️ K값이 뭔지 모르겠을 때 가장 중요하게 봐야하는 지표!</li>
<li>yellow brick library - elbow method를 사용하여, <strong>알고리즘</strong>이 군집이 나뉘는 시간까지 고려한 K값을 도출한다.
<img src="https://velog.velcdn.com/images/__hj______/post/73dba69b-e2f3-4dc4-8bfb-7bd3d08bb291/image.png" alt=""></li>
<li>X축 = K값 = 군집 갯수</li>
<li>elbow-point = 가장 많이 꺾이는 구간 = 까만색 점선</li>
<li>초록색 점선 : 군집을 나누는데 까지 알고리즘이 수행한 시간<ul>
<li>(ex. 9개로 나누는건 힘들었는데, 10개로 나누는건 쉬웠다!)</li>
</ul>
</li>
<li>elbow-point와, 각 군집이 갯수로 나누는데 까지 걸린 알고리즘의 시간을 포함하여 최적의 K값을 보여준다.<blockquote>
</blockquote>
<h5 id="--🌀-distance-map">- 🌀 Distance Map</h5>
</li>
<li>군집간 거리를 시각화 해주는 기법</li>
<li>실행마다 다르게 보여질 수 있다.</li>
<li><strong>군집이 떨어져 있는 거리를 가시적으로 확인하기 위한 참고치</strong>일 뿐이다.
<img src="https://velog.velcdn.com/images/__hj______/post/8d9177c6-c4a4-4539-af3b-2e081af8a7a4/image.png" alt=""></li>
</ul>
<blockquote>
<h4 id="⑥-k-means-clustering-시행--데이터를-거리기반-k개의-군집cluster으로-묶는clustering-알고리즘">⑥ k-means clustering 시행 : 데이터를 <strong>거리기반</strong> K개의 군집(Cluster)으로 묶는(Clustering) 알고리즘</h4>
</blockquote>
<ul>
<li>K : 묶을 군집(Cluster)의 개수</li>
<li>means : 평균</li>
<li>✅ 즉, 각 <strong>군집의 평균(mean)을 활용하여 K개의 군집으로 묶는다</strong>!!<h5 id="--🌀-알고리즘">- 🌀 <strong>알고리즘</strong></h5>
<img src="https://velog.velcdn.com/images/__hj______/post/6b2edbfb-fbb8-4c58-8ccd-81282b37c02f/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/0e3a3376-0c20-40d4-a61b-e86ba4b6c23f/image.png" alt=""><blockquote>
</blockquote>
</li>
<li>중심점을 랜덤하게 설정하고, 임의의 점에서 절대거리를 계산하고 가장 가까운 군집에 배치한 뒤, 중심점을 평균으로 업데이트하고, 다시 다음 점에 대해 알고리즘을 돌리는 것. 이 중심점이 더이상바뀌지 않을때(= 평균의 값이 더이상 변하지 않는다 = 더이상 나눌 데이터가 없다)까지 군집을 수행!</li>
</ul>
<blockquote>
<h4 id="⑦-군집-분포-확인">⑦ 군집 분포 확인</h4>
</blockquote>
<ul>
<li>데이터셋을 기반으로 데이터가 잘(얼마나 밀도있게) 나뉘었는지 확인하는 과정을 거치게 된다.</li>
<li>scatter plot은 군집이 잘 나뉘어진걸 확인한다.</li>
<li>K<strong>값과 컬럼(피쳐)을 조정</strong>하며, 군집별 특성이 명확하고 각각의 data point가 충돌하지 않도록 실험을 <strong>반복</strong>해야한다.</li>
<li>⚠️ 반드시 기록하면서 비교해야한다!!
<img src="https://velog.velcdn.com/images/__hj______/post/9497cccf-f410-4bf1-8441-82a493b6c220/image.png" alt="">
<img src="https://velog.velcdn.com/images/__hj______/post/d69d19d0-b5e1-442d-9f85-8545e68d00b4/image.png" alt=""></li>
</ul>
<blockquote>
<h4 id="⑧-②⑦번-과정을-반복하며-최적의-결과-도출">⑧ <strong>②~⑦번 과정을 반복하며 최적의 결과 도출</strong></h4>
</blockquote>
<ul>
<li>실험을 수행할 때마다 <strong>다양한 기준</strong>을 고려해야 한다.</li>
<li>통계학적 지식을 필요로 하지만, 이것이 모든 부분을 설명할 수 없다. (추론통계니까!)</li>
<li>비지도학습인만큼, <strong>주관이 개입</strong>되어야한다.<ul>
<li>데이터 자체에 결측이 많지는 않은지? (ex. 50%이상 결측이면, 해당 컬럼 버린다.)</li>
<li>데이터가 결측은 아니나, value가 0인 경우가 많은지?</li>
<li>데이터의 전반적인 분포는 어떠한지?(컬럼별로) 컬럼 간 상관계수는 어떠한지?</li>
<li>데이터가 불규칙한지? (불규칙▶표준화)</li>
<li>컬럼이 가지는 개념적인 의미는 무엇인지? (주관▶ex. 고객 분류 시, 결제금액을 제외하냐? NO!)</li>
<li>컬럼 값이 이진형인지? (T/F는 지양하는게 좋음▶클러스터링 시 극단적인 결과를 불러옴)</li>
<li>cluster 비중이 지나치게 편향되어 있는지?(ex. A-100명, B-100명, C-100만명 ▶ NO!)</li>
</ul>
</li>
</ul>
<blockquote>
<h4 id="⑨-모델링">⑨ <strong>모델링</strong></h4>
</blockquote>
<ul>
<li>클러스터링 결과를 가지고 이를 모델에 학습시킨다.</li>
<li>모델은 우리가 실험한 로직을 매번 수행하지 않도록 해주는 개념이다!!</li>
</ul>
<blockquote>
<h4 id="⑩-데이터-적재-및-자동화-설정">⑩ <strong>데이터 적재 및 자동화 설정</strong></h4>
</blockquote>
<ul>
<li>이렇게 cluster 별로 나뉜 고객들을 별도 테이블에 저장해준다.</li>
<li>Python으로 진행할 수 있다.</li>
<li>스케줄 기능을 통해, 주기별로 라이브한 데이터를 자동 테이블에 적재하는 것 까지가 클러스터링의 최종 작업이다.</li>
</ul>
<blockquote>
<h4 id="⑪-인사이트-도출">⑪ <strong>인사이트 도출</strong></h4>
</blockquote>
<ul>
<li>이렇게 적재된 테이블을 통해 클러스터별로 인사이트를 도출할 수 있다.</li>
</ul>
<h2 id="3-python-code-실습">3. Python code 실습</h2>
<blockquote>
<h3 id="1-라이브러리-설치-및-데이터-로드">1) 라이브러리 설치 및 데이터 로드</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/48cf6b38-5c5e-44d2-807c-20cc2d872ea5/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="2-데이터-확인-및-결측치-제거">2) 데이터 확인 및 결측치 제거</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/cebd93e6-1fac-48e3-81a6-7010e4b35656/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="3-클러스터링-할-컬럼-지정--연속형-변수들만">3) 클러스터링 할 컬럼 지정 : 연속형 변수들만</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/e0a75921-80ec-4690-b116-f1af8378fafa/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="4-표준화">4) 표준화</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/ef1c1b04-c3dc-436b-a458-172b73f35d67/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="5-차원축소pca">5) 차원축소(PCA)</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/7ba57fda-331a-421f-a470-b084b44f6c9b/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="6-k값-초기-컬럼피쳐-설정">6) k값, 초기 컬럼(피쳐) 설정</h3>
</blockquote>
<ul>
<li>screen plot의 elbow-point로 k값 설정<img src="https://velog.velcdn.com/images/__hj______/post/571e44a2-6cc0-4fb6-ab40-38b523844aa2/image.png" alt=""><blockquote>
</blockquote>
</li>
<li>distance map으로 군집간 거리 확인 <img src="https://velog.velcdn.com/images/__hj______/post/7f2e72cd-c44a-47b7-b1c5-049d4f0e8270/image.png" alt=""></li>
</ul>
<blockquote>
<h3 id="7-kmeans-clustering-시행">7) kmeans clustering 시행</h3>
<h2 id=""><img src="https://velog.velcdn.com/images/__hj______/post/4369d5c6-e66a-4a07-a529-a0736f32bdcc/image.png" alt=""></h2>
<p><img src="https://velog.velcdn.com/images/__hj______/post/30aa4761-af90-49ed-9532-cd4d509a5a64/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="8-군집-분포-확인--시각화">8) 군집 분포 확인 : 시각화</h3>
<p>-3D<img src="https://velog.velcdn.com/images/__hj______/post/89fa2260-c804-4014-9277-851f2dbe4c74/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/a66b3dde-6ea2-4c09-b979-8daf83de64a8/image.png" alt=""></p>
</blockquote>
<p>-2D<img src="https://velog.velcdn.com/images/__hj______/post/2ef6ae33-e4e2-4313-a90c-3b03b753f3a1/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/19dbeb5c-f623-4904-af22-1a0bcfc1323c/image.png" alt=""></p>
<blockquote>
<h3 id="9-결론">9) 결론</h3>
<p>scatterpolt에 검은 점들이 섞여 있으므로, 피쳐를 조절해가며 다시 진행해야 한다.</p>
</blockquote>
<p>*클러스터 번호에 base_df의 컬럼을 concat해서 어떤 컬럼이 기준인지 알아내야 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-데이터분석 프로세스]]></title>
            <link>https://velog.io/@__hj______/TIL-Dataanalysisprocess</link>
            <guid>https://velog.io/@__hj______/TIL-Dataanalysisprocess</guid>
            <pubDate>Wed, 12 Jun 2024 14:07:12 GMT</pubDate>
            <description><![CDATA[<h1 id="데이터분석-프로세스">데이터분석 프로세스</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/add980dd-f367-4839-89c6-c94757198fd6/image.png" alt=""></p>
<h2 id="1-데이터-수집">1. 데이터 수집</h2>
<ul>
<li>이미 존재하는 데이터 : SQL or Python으로 추출, 리포팅</li>
<li>없는 데이터 : 머신러닝으로 예측
<img src="https://velog.velcdn.com/images/__hj______/post/1eab1399-292f-436d-8951-a4e94efd4f2f/image.png" alt="">SNOWFLAKE - “MODERN” DATA ARCHITECTURES</li>
</ul>
<blockquote>
<ol>
<li><strong>Data Sources</strong></li>
</ol>
<ul>
<li><code>OLTP Database</code> : <strong>O</strong>n<strong>L</strong>ine <strong>T</strong>ransaction <strong>P</strong>rocessing은 온라인 뱅킹, 쇼핑, 주문 입력 등 동시에 발생하는 다수의 트랜잭션(데이터베이스 작업의 단위) 처리 유형</li>
<li><code>Enterprise Applications</code> : 회사 내 데이터 (ex. 입사, 연봉, 고객 관계 데이터, 제품 마케팅 세일즈)</li>
<li><code>Third-Party</code> : 제3자로 부터 가지고 오는 데이터 (ex. 마케팅할 때 Google Analytics와 같은 외부소스에서 수집되는 데이터)</li>
<li><code>Web/Log</code> : 사용자의 로그데이터</li>
</ul>
</blockquote>
<blockquote>
<ol start="2">
<li><strong>ETL</strong> : <strong>E</strong>xtract(데이터 추출), <strong>T</strong>ransform(데이터 변환-데이터 베이스에 데이터가 입력되고, 수정되고 삭제되는 것을 관리하는 작업단위), <strong>L</strong>oad(로드)과정을 통해 Data Warehouse(데이터 창고)로 데이터가 저장된다.</li>
</ol>
</blockquote>
<blockquote>
<ol start="3">
<li><strong>Data Lake</strong> : 원시 형태의 다양한 유형의 데이터를 저장</li>
</ol>
</blockquote>
<blockquote>
<ol start="4">
<li><strong>Data Warehouse</strong> : 보다 구조화된 형태로 정제된 데이터를 저장 (최종 저장소)</li>
</ol>
<ul>
<li><code>Web/Log Data</code></li>
<li><code>Other</code></li>
</ul>
</blockquote>
<blockquote>
<ol start="5">
<li><strong>Data Marts</strong> : Data Warehouse와 다르게 특정 조직의 목적을 위해 가공된 데이터 (ex. 회사의 금융, 마케팅, 영업부서 등에서 &quot;저 이제 데이터 말겠습니다~&quot;)</li>
</ol>
</blockquote>
<blockquote>
<ol start="6">
<li><strong>BI/Analytics</strong> : <strong>B</strong>usiness <strong>I</strong>ntelligence(BI)는 의사결정에 사용될 데이터를 수집하고 분석하는 프로세스</li>
</ol>
</blockquote>
<h2 id="2-실제-데이터-수집">2. 실제 데이터 수집</h2>
<ul>
<li>😄회사 내 데이터가 존재한다면 : SQL 혹은 Python을 통해 Data Marts 생성</li>
<li>😭회사 내 데이터가 없다면 : 데이터 수집 필요<ul>
<li><strong>방법 1</strong> : CSV, Excel 파일 다운로드</li>
<li><strong>방법 2</strong> : API(<strong>A</strong>pplication <strong>P</strong>rogramming <strong>I</strong>nterface - ex. 김밥천국가서 주문표 작성해서 사장님한테 제출하는거 = 규격화 된 형태로 서로 의사소통 하는 것)를 이용한 데이터 수집<img src="https://velog.velcdn.com/images/__hj______/post/964d4c13-494e-4bb4-9890-3785e0daf4bb/image.png" alt=""></li>
<li>방법 3 : Data Crawling(API보다 데이터가 정형화되어있지 않음)<img src="https://velog.velcdn.com/images/__hj______/post/afa36915-618c-4098-aaa6-76f110eef3bd/image.png" alt=""></li>
</ul>
</li>
</ul>
<h2 id="3-eda--탐색적-데이터-분석">3. EDA : 탐색적 데이터 분석</h2>
<ul>
<li><strong>EDA</strong>(<strong>E</strong>xploratory <strong>D</strong>ata <strong>A</strong>nalysis, 탐색적 데이터 분석)는 데이터의 시각화, 기술통계 등의 방법을 통해 데이터를 이해하고 탐구하는 과정이다.</li>
</ul>
<h3 id="1-기술통계를-통한-eda-예시">1) 기술통계를 통한 EDA 예시</h3>
<ul>
<li><code>tips.describe()</code><ul>
<li><code>include=&#39;all&#39;</code> 옵션을 통해 범주형 데이터도 확인 가능<img src="https://velog.velcdn.com/images/__hj______/post/2c7b0ff0-7f0e-4195-90d5-ae5a3c08d48b/image.png" alt=""></li>
</ul>
</li>
</ul>
<h3 id="2-시각화를-이용한-eda-예시">2) 시각화를 이용한 EDA 예시</h3>
<ul>
<li>tips 데이터
<img src="https://velog.velcdn.com/images/__hj______/post/54b8f232-d58c-4fbc-99a6-c45ec5b1cff2/image.png" alt=""></li>
</ul>
<blockquote>
<h4 id="①-countplot--범주형-자료의-빈도-수-시각화">① countplot : 범주형 자료의 빈도 수 시각화<img src="https://velog.velcdn.com/images/__hj______/post/1831f4f7-034a-44a2-9fcd-ba705bda17c4/image.png" alt=""></h4>
</blockquote>
<ul>
<li>방법 : 범주형 데이터의 각 카테고리별 <strong>빈도 수</strong>를 나타낼 때 (ex. 상점에서 판매되는 제품의 카테고리별 판매수 파악)</li>
<li>X축 : 범주형 자료</li>
<li>y축 : 자료의 빈도수(자료의 갯수)</li>
</ul>
<blockquote>
<h4 id="②-barplot--범주형-자료의-시각화">② barplot : 범주형 자료의 시각화 <img src="https://velog.velcdn.com/images/__hj______/post/1a6b187c-f158-48a4-8f01-7c310163f87d/image.png" alt=""></h4>
</blockquote>
<ul>
<li>방법 : 범주형 데이터의 각 카테고리에 따른 수치 데이터의 <strong>평균</strong>을 비교 (ex. 다양한 연령대별 평균소득을 비교할 때)</li>
<li>X축 : 범주형 자료</li>
<li>y축 : 연속형 자료</li>
</ul>
<blockquote>
<h4 id="③-boxplot--수치형--범주형-자료의-시각화">③ boxplot : 수치형 &amp; 범주형 자료의 시각화</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/19ebd3f6-bb9a-48ea-927a-0e80e6e843c1/image.png" alt=""></p>
</blockquote>
<ul>
<li>방법 : 데이터의 분포, 중앙값, 사분위 수, 이상치 등을 한눈에 표현하고 싶을 때 (ex. 여러 그룹간 시험 점수 분포를 비교할 때)</li>
<li>X축 : 수치형 or 범주형</li>
<li>y축 : 수치형 자료</li>
</ul>
<blockquote>
<h4 id="④-histogram--수치형-자료-빈도-시각화">④ histogram : 수치형 자료 빈도 시각화</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/866eaa99-c325-451a-a04d-50ae3740247d/image.png" alt=""><em>이거는 seaborn 라이브러리</em>
<img src="https://velog.velcdn.com/images/__hj______/post/0bdbf13e-1fa1-4026-a203-89a7ae05907c/image.png" alt=""><em>이거는 matplotlib 라이브러리</em></p>
</blockquote>
<ul>
<li>방법 : <strong>연속형 분포</strong>를 나타내고 싶을 때, 데이터가 몰려있는 구간을 파악하기 쉬움 (ex. 고객들의 연령 분포를 파악 할 때)</li>
<li>X축 : 수치형 자료</li>
<li>y축 : 자료의 빈도수</li>
</ul>
<blockquote>
<h4 id="⑤-scatterplot--수치형끼리-자료의-시각화">⑤ scatterplot : 수치형끼리 자료의 시각화</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/500f9727-4e18-405a-b8de-19fd4d3334c5/image.png" alt=""></p>
</blockquote>
<ul>
<li>방법 : 두 연속형 변수간의 <strong>관계</strong>를 시각적으로 파악하고 싶을 때 (ex. 키와 몸무게 간의 관계를 나타낼 때)</li>
<li>X축 : 수치형 자료</li>
<li>y축 : 수치형 자료</li>
</ul>
<blockquote>
<h4 id="⑥-pairplot--전체-변수에-대한-시각화">⑥ pairplot : 전체 변수에 대한 시각화</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/9f96f562-ff6d-43e3-a086-ca0bc5a243cc/image.png" alt=""></p>
</blockquote>
<ul>
<li>방법 : 한 번에 여러 개의 변수를 <strong>동시에 시각화</strong> 하고 싶을 때</li>
<li>X축 : 범주형 or 수치형 자료</li>
<li>y축 : 범주형 or 수치형 자료</li>
<li>대각선(=같은 변수) : 히스토그램(분포)</li>
</ul>
<h2 id="4-데이터-전처리">4. 데이터 전처리</h2>
<h3 id="1-이상치outlier">1) 이상치(Outlier)</h3>
<p>: 관측된 데이터 범위에서 많이 벗어난 아주 작은 값 혹은 큰 값. 크게 2가지 기준이 있다.</p>
<h4 id="①-esdextreme-studentized-deviation-이용한-이상치-발견">① ESD(Extreme Studentized Deviation) 이용한 이상치 발견</h4>
<ul>
<li>데이터가 <strong>정규분포</strong>를 따른다고 가정할 때, <strong>평균에서 표준편차의 3배</strong> 이상 떨어진 값</li>
<li>모든 데이터가 정규분포를 따르지 않을 수 있기 때문에 다음 상황에서는 제외!!<ul>
<li>데이터가 크게 <strong>비대칭</strong>일때(→ Log변환 등을 노려볼 수 있다)</li>
<li><strong>샘플 크기가 작을</strong> 경우
<img src="https://velog.velcdn.com/images/__hj______/post/a4caa8b8-3408-4402-a9e2-3d6be9551f96/image.png" alt=""></li>
</ul>
</li>
</ul>
<h4 id="②-iqrinter-quantile-range-이용한-이상치-발견">② IQR(Inter Quantile Range) 이용한 이상치 발견</h4>
<ul>
<li>ESD와 동일하게 <strong>비대칭적</strong>이거나 <strong>생플사이즈가 작은</strong> 경우 제한됨</li>
<li>Boxplot : 데이터의 <strong>사분위 수</strong>를 포함하여 분포를 보여주는 시각화 그래프. &#39;상자-수염 그래프&#39;
<img src="https://velog.velcdn.com/images/__hj______/post/d529521d-fe96-4420-a9d9-edd53dd414fd/image.png" alt=""><ul>
<li><strong>사분위 수</strong> : 데이터를 순서에 따라 4등분 한 것
<img src="https://velog.velcdn.com/images/__hj______/post/fca87b26-dcf0-4c3c-a694-e49ea7df22f6/image.png" alt=""></li>
</ul>
</li>
</ul>
<h4 id="③-이상치-발견-방법">③ 이상치 발견 방법</h4>
<p>  ✅ <strong>ESD</strong>(평균과 표준편차)를 이용한 처리
  <img src="https://velog.velcdn.com/images/__hj______/post/3bb112a4-27fb-4ac2-9ba1-85f5db36c026/image.png" alt=""></p>
<pre><code class="language-python">  import numpy as np
  mean = np.mean(data)         #평균
  std = np.std(data)            #표준편차
  upper_limit = mean + 3*std    #표준편차 3배 떨어진 값(상방)
  lower_limit = mean - 3*std    #표준편차 3배 떨어진 값(하방)</code></pre>
<p>  ✅ <strong>IQR</strong>을 이용한 처리(boxplot)
  <img src="https://velog.velcdn.com/images/__hj______/post/61fe6421-d14f-40c0-b993-6a605440dd32/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/7d739608-8be1-4ad8-a9d7-e1dead736833/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/8aa1e887-3b20-48f9-ba88-0d666182992c/image.png" alt=""></p>
<pre><code class="language-python">  Q1 = df[&#39;column&#39;].quantile(0.25)  #얘는 pd.series[], 하위 25%
  Q3 = df[&#39;column&#39;].qunatile(0.75)  #얘는 상위 25%
  IQR = Q3 - Q1                      #얘는 박스플롯 구간
  uppper_limit = Q3 + 1.5*IQR          #얘는 선 끝, 상한 이상치
  lower_limit = Q1 - 1.5*IQR          #얘는 선 끝, 하한 이상치</code></pre>
<p>  ✅ <strong>조건필터링</strong>을 통한 삭제(a.k.a <strong>boolean Indexing</strong>)
 <code>df[df[&#39;column&#39;] &gt; limit_value</code></p>
<p>  <img src="https://velog.velcdn.com/images/__hj______/post/dbd3b01d-038d-41bb-aa3f-d7228b9c08d3/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/d8671f90-8f1c-4bcb-8d53-3bd100ff61a1/image.png" alt=""></p>
<blockquote>
<p>이상치는 주관적인 값이다. 도메인과 비즈니스 맥락에 따라 기준이 달라지며 데이터 품질은 향상되지만, 정보 손실을 동반하기 떄문에 주의해야한다. </p>
</blockquote>
<blockquote>
<p><strong>이상 탐지(Anomaly Detection)</strong>라는 이름으로 데이터에서 패턴을 다르게 보이는 개체 또는 자료를 찾는 방법으로도 발전할 수 있다. ex) 사기탐지, 사이버 보안 등</p>
</blockquote>
<h3 id="2-결측치missing-value">2) 결측치(Missing Value)</h3>
<p>: 존재하지 않는 데이터. null, NaN</p>
<h4 id="①-수치형-데이터-처리-방법">① 수치형 데이터 처리 방법</h4>
<ul>
<li><strong>평균 값</strong> 대치 : 대표적인 대치 방법</li>
<li><strong>중앙값</strong> 대치 : 데이터에 이상치가 많아 평균 값이 대표성이 없다면 중앙 값을 이용 (ex. 이상치는 평균값을 흔들리게 함)</li>
</ul>
<h4 id="②-범주형-데이터-처리-방법">② 범주형 데이터 처리 방법</h4>
<ul>
<li><strong>최빈값</strong> 대치</li>
</ul>
<blockquote>
<p>💡 이상치는 평균 값을 흔들리게 한다.<img src="https://velog.velcdn.com/images/__hj______/post/485ff2a8-7f51-4cab-a89d-c5dd4c68c6df/image.png" alt=""></p>
</blockquote>
<h4 id="③-사용-함수">③ 사용 함수</h4>
<p>  ✅ 간단한 삭제 &amp; 대치
    - <code>df.dropna(axis = 0)</code> : 행 삭제
    - <code>df.dropna(axis = 1)</code> : 열 삭제<img src="https://velog.velcdn.com/images/__hj______/post/86ddffbb-eee8-4daa-98d2-0ccd01920482/image.png" alt="">
    - <code>df.fillna(value)</code> : 특정 값으로 대치(평균, 중앙, 최빈값) <img src="https://velog.velcdn.com/images/__hj______/post/bb8008b5-4134-446a-8332-04270174c893/image.png" alt="">
    - <strong>Boolean Indexing</strong> <img src="https://velog.velcdn.com/images/__hj______/post/d18e13fd-5ad9-4a48-90b3-6353d1167472/image.png" alt=""></p>
<p>  ✅ 알고리즘을 이용
    - <code>sklearn.impute.SimpleImputer</code> : 평균, 중앙, 최빈값으로 대치
    - <code>SimpleImputer.statistics_</code> : 대치한 값 확인 가능 <img src="https://velog.velcdn.com/images/__hj______/post/4f3fc15e-b512-4136-915d-27a438275894/image.png" alt="">
    - <code>sklearn.impute.IterativeImputer</code> : 다변량대치(회귀 대치)
    - <code>sklearn.impute.KNNImputer</code> : KNN 알고리즘을 이용한 대치</p>
<blockquote>
<p>💡 이 방법 외에도, <strong>Imputation</strong>(<strong>알고리즘</strong>을 이용한 방법론)을 이용하여 대치할 수도 있다. </p>
</blockquote>
<blockquote>
<p>💡 예를 들어, 대표적인 알고리즘인 K-Nearest Neighbors(K 최근접 이웃 : 주변 정보를 통해 결측값 예측)이라는 방법이 있다.</p>
</blockquote>
<h3 id="3-범주형-데이터-전처리---인코딩encoding">3) 범주형 데이터 전처리 - 인코딩(Encoding)</h3>
<p>: <strong>인코딩</strong>의 사전적 뜻은 어떤 정보를 정해진 규칙에 따라 변환하는 것.</p>
<blockquote>
<h4 id="①-레이블-인코딩label-encoding">① 레이블 인코딩(Label Encoding)</h4>
</blockquote>
<ul>
<li><strong>정의</strong> : 문자열 범주형 값을 고유한 숫자로 할당<ul>
<li>1등급 → 0</li>
<li>2등급 → 1</li>
<li>3등급 → 2<blockquote>
</blockquote>
</li>
</ul>
</li>
<li><strong>특징</strong><ul>
<li>장점 : 모델이 처리하기 쉬운 <strong>수치형</strong>으로 데이터 변환</li>
<li>단점 : 실제로는 그렇지 않은데, 순서 간 크기에 의미가 부여되기 때문에 모델이 잘못 해석 가능</li>
<li>두가지는 상관없는데, 3개 이상부터는 <strong>반드시 순서형 자료</strong>를 사용해야함<blockquote>
</blockquote>
</li>
</ul>
</li>
<li><strong>사용 함수</strong> : <code>sklearn.preprocessing.LabelEncoder</code><ul>
<li>메소드<ul>
<li><code>fit</code> : 데이터 학습
: ex. 학점 데이터 니가 학습해서 분류해봐.<img src="https://velog.velcdn.com/images/__hj______/post/3eb5787f-61ed-48da-b233-537445f9a6ea/image.png" alt=""></li>
<li><code>transform</code> : 정수형 데이터로 변환
: ex. 학점 → A=0, B=1, C=2, D=3, F=4</li>
<li><code>fit_transform</code> : fit과 transform을 연결하여 한번에 실행
: fit+transform 한번에 해버려 그냥!</li>
<li><code>inverse_transform</code> : 인코딩된 데이터를 원래 문자열로 변환
: 아 몰랑 다시 원상복구해줘!</li>
<li><code>classes_</code> : 인코더가 학습한 클래스(범주)
: 몇개를 학습했어? ex. 학점 데이터에서 A~F까지 몇개임?
<img src="https://velog.velcdn.com/images/__hj______/post/5fb7c029-e6ba-4067-880a-f102a795caf9/image.png" alt="">
<img src="https://velog.velcdn.com/images/__hj______/post/8a014c04-08fc-4977-bb39-22f674d0ea42/image.png" alt=""></li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote>
<h4 id="②-원-핫-인코딩one-hot-encoding">② 원-핫 인코딩(One-Hot Encoding)</h4>
</blockquote>
<ul>
<li><strong>정의</strong> : 각 범주를 이진 형식으로 변환하는 기법
<img src="https://velog.velcdn.com/images/__hj______/post/e575bd85-dca9-4cb0-807e-ade3917be42c/image.png" alt=""><ul>
<li>빨강 → [1,0,0]</li>
<li>파랑 → [0,1,0]</li>
<li>초록 → [0,0,1]<blockquote>
</blockquote>
</li>
</ul>
</li>
<li><strong>특징</strong><ul>
<li>장점 : 각 범주가 독립적으로 표현되어, 순서가 중요도를 잘못 학습하는 것을 방지, <strong>명목형 데이터</strong>(혈액형, 색깔, 성별)에 권장한다!!</li>
<li>단점 : 범주 개수가 많을 경우 차원이 크게 증가(차원의 저주 : 데이터가 너무 많아서 모델이 멍청해짐), 모델의 복잡도를 증가, 과적합 유발!<blockquote>
</blockquote>
</li>
</ul>
</li>
<li><strong>사용 함수</strong> : <code>pd.get_dummies</code> , <code>sklearn.preprocessing.OneHotEncoder</code><ul>
<li>메소드(LabelEncoder와 동일)
<img src="https://velog.velcdn.com/images/__hj______/post/f376c7fa-2f0f-4d0b-9df9-1c2059380955/image.png" alt=""><ul>
<li><code>categories_</code> : 인코더가 학습한 클래스(범주)<img src="https://velog.velcdn.com/images/__hj______/post/2e4ce5d0-0052-4ba8-a77a-731b25ab27ce/image.png" alt=""></li>
<li><code>get_feature_names_out()</code> : 학습한 클래스 이름(리스트)
<img src="https://velog.velcdn.com/images/__hj______/post/3151c374-a32d-4249-aa97-6305215996da/image.png" alt=""><pre><code class="language-python"># CSR 데이터 데이터프레임으로 만들기
csr_df = pd.DataFrame(csr_data.toarray(), columns = oe.get_feature_names_out())
# 기존 데이터프레임에 붙이기(옆으로)
pd.DataFrame([titaninc_df,csr_df], axis = 1) </code></pre>
<img src="https://velog.velcdn.com/images/__hj______/post/856ed2f4-909a-4511-b8fe-954a06de323d/image.png" alt=""></li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="4-수치형-데이터-전처리---스케일링scaling">4) 수치형 데이터 전처리 - 스케일링(Scaling)</h3>
<p>: <strong>인코딩</strong>-범주형 자료 전처리 / <strong>스케일링</strong>-수치형 자료 전처리
<img src="https://velog.velcdn.com/images/__hj______/post/48d9110d-85f2-4e2d-8392-50fd0448174d/image.png" alt=""> <img src="https://velog.velcdn.com/images/__hj______/post/d476d2df-84eb-4c41-9ea0-9ca73766f179/image.png" alt="">
<img src="https://velog.velcdn.com/images/__hj______/post/7f6d6d0e-21fb-41f2-8d00-4406dbc3c598/image.png" alt="">
<img src="https://velog.velcdn.com/images/__hj______/post/4c25295d-c07d-4df7-83a0-68ea62a4859c/image.png" alt=""></p>
<blockquote>
<h4 id="①-표준화standardization">① 표준화(Standardization)</h4>
</blockquote>
<ul>
<li><strong>정의</strong> : 각 데이터에 평균을 빼고 표준편차를 나누어 평균을 0, 표준편차를 1로 조정하는 방법 (=<strong>Z-Score</strong>를 통한 표준화)
<img src="https://velog.velcdn.com/images/__hj______/post/11e2ee30-c451-4c18-bbc0-8f31d6d35a14/image.png" alt=""></li>
<li><strong>수식</strong>
<img src="https://velog.velcdn.com/images/__hj______/post/3359855c-f844-4de8-85ae-74b78648a049/image.png" alt=""></li>
<li><strong>사용 함수</strong> : <code>sklearn.preprocessing.StandardScaler</code><ul>
<li>메소드<ul>
<li><code>fit</code> : 데이터 학습(평균과 표준편차를 계산)</li>
<li><code>transform</code> : 데이터 스케일링 진행 <img src="https://velog.velcdn.com/images/__hj______/post/2bb51eb2-f08e-48fd-a975-f486ae6fbfee/image.png" alt=""></li>
</ul>
</li>
<li>속성<ul>
<li><code>mean_</code> : 데이터의 평균 값</li>
<li><code>scale_</code>, <code>var_</code> : 데이터의 표준편차, 분산 값</li>
<li><code>n_features_in_</code> : fit할 때 들어간 변수 개수</li>
<li><code>feature_names_in_</code> : fit할 때 들어간 변수 이름</li>
<li><code>n_samples_seen_</code> : fit할 때 들어간 데이터의 개수</li>
</ul>
</li>
</ul>
</li>
<li><strong>특징</strong><ul>
<li>장점<ul>
<li>이상치가 있거나 분포가 치우쳐져 있을 때 유용!</li>
<li>모든 특성의 스케일을 동일하게 맞춘다. 많은 알고리즘에서 좋은 성능!</li>
</ul>
</li>
<li>단점<ul>
<li>데이터의 최소-최대 값이 정해지지 않음</li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote>
<h4 id="②-정규화normalization">② 정규화(Normalization)</h4>
</blockquote>
<ul>
<li><strong>정의</strong> : 데이터를 0과 1사이 값으로 조정(최소값 0, 최대값1)</li>
<li><strong>수식</strong>
<img src="https://velog.velcdn.com/images/__hj______/post/a78a40cf-9f5d-428c-bc71-91a54bf9350e/image.png" alt=""></li>
<li><strong>사용 함수</strong> : <code>sklearn.preprocessing.MinMaxScaler</code><ul>
<li>❗표준화와 공통인 것은 제외다</li>
<li>속성<ul>
<li><code>data_min_</code> : 원 데이터의 최소 값</li>
<li><code>data_max_</code> : 원 데이터의 최대 값</li>
<li><code>data_range_</code> : 원 데이터의 최대-최소 범위 <img src="https://velog.velcdn.com/images/__hj______/post/a0560d9e-25f2-4b10-bba7-05fc7f2b9795/image.png" alt=""></li>
</ul>
</li>
</ul>
</li>
<li><strong>특징</strong><ul>
<li>장점<ul>
<li>모든 특성의 스케일을 동일하게 맞춤</li>
<li>최대-최소 범위가 명확하다</li>
</ul>
</li>
<li>단점<ul>
<li>이상치에 영향을 많이 받을 수 있음(반대로 말하면 이상치가 없을 때 유용)</li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote>
<h4 id="③-로버스트-스케일링robust-scaling">③ 로버스트 스케일링(Robust Scaling)</h4>
</blockquote>
<ul>
<li><strong>정의</strong> : 중앙값과 IQR을 사용하여 스케일링</li>
<li><strong>수식</strong>
<img src="https://velog.velcdn.com/images/__hj______/post/a0d0698c-ca6c-4d2b-a8be-927bcb92cda8/image.png" alt=""></li>
<li><strong>사용 함수</strong> : <code>sklearn.preprocessing.RobustScaler</code><ul>
<li>속성<ul>
<li><code>center_</code> : 훈련 데이터의 중앙값</li>
</ul>
</li>
</ul>
</li>
<li><strong>특징</strong><ul>
<li>장점 : 이상치의 영향에 덜 민감</li>
<li>단점 : 표준화와 정규화에 비해 덜 사용됨</li>
</ul>
</li>
</ul>
<h2 id="5-데이터-분리">5. 데이터 분리</h2>
<h3 id="1-과적합은-머신러닝의-적">1) 과적합은 머신러닝의 적</h3>
<ul>
<li><strong>과대적합(Overfitting)</strong>이란? 데이터를 너무 과도하게 학습한 나머지 해당 문제만 잘 맞추고 새로운 데이터를 제대로 예측 혹은 분류하지 못하는 현상
<img src="https://velog.velcdn.com/images/__hj______/post/03b2a8fd-40de-43ce-af14-cc2e19e2e849/image.png" alt=""></li>
</ul>
<h4 id="①-예측-혹은-분류를-하기-위해서-모형의-복잡도를-설정">① 예측 혹은 분류를 하기 위해서 모형의 복잡도를 설정</h4>
<ul>
<li>모형이 지나치게 <strong>복잡</strong>할 때 : <strong>과대적합(Overfitting)</strong>이 될 수 있음</li>
<li>모형이 지나치게 <strong>단순</strong>할 때 : <strong>과소적합(Underfitting)</strong>이 될 수 있음</li>
</ul>
<h4 id="②-과적합의-원인">② 과적합의 <strong>원인</strong></h4>
<ul>
<li>모델의 복잡도 (ex. 고3이 3월 모의고사만 공부하고 수능치는거)</li>
<li>데이터 양이 충분하지 않음</li>
<li>학습 반복이 많음 (ex. 딥러닝의 경우)</li>
<li>데이터 불균형 (ex. 정상환자-암환자 비율이 95:5)</li>
</ul>
<h3 id="2-과적합-해결---테스트-데이터의-분리">2) 과적합 해결 - 테스트 데이터의 분리</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/8c1b9244-b9f8-427b-a093-8b03889678bb/image.png" alt=""></p>
<ul>
<li>학습 데이터(Train Data) : 모델을 <strong>학습</strong>(<code>fit</code>)하기 위한 데이터</li>
<li>테스트 데이터(Test Data) : 모델을 <strong>평가</strong>하기 위한 데이터</li>
<li><strong>사용 함수</strong> : <code>sklearn.model_selection.train_test_split</code></li>
<li><strong>파라미터</strong><ul>
<li><code>test_size</code> : 테스트 데이터 세트 크기 (보통 3 or 2)</li>
<li><code>train_size</code> : 학습 데이터 세트 크기 (보통 7 or 8)</li>
<li><code>shuffle</code> : 데이터 분리 시 섞기</li>
<li><code>random_state</code> : 호출할 때마다 <strong>동일한 학습/테스트 데이터를 생성</strong>하기 위한 <strong>난수 값</strong>. 수행할 때 마다 동일한 데이터 세트로 분리하기 위해 숫자를 고정 시켜야함</li>
<li><strong>변환 값</strong>(❗<strong>순서 매우 중요</strong>❗)
<code>X_train</code> : (ex. 전체의 70% 중 공부하는것의 70%), 
<code>X_test</code> : (ex. 전체의 30% 중 테스트하는것의 70%),
<code>y_train</code> : (ex. 전체의 70% 중 공부하는것의 30%),
<code>y-test</code> : (ex. 전체의 30% 중 테스트하는것의 30%)</li>
</ul>
</li>
</ul>
<blockquote>
<p>⚠️ Train Data에서 얻은 정보는 절대절대절대절대절대 Test Data에 <strong>적용하면 안됨</strong>.</p>
</blockquote>
<h3 id="3-데이터분리-실습">3) 데이터분리 실습</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/b0528f75-39fc-488b-846c-e887cf77c676/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/__hj______/post/95e6c048-e0ca-458e-85f9-d21d2725acce/image.png" alt=""> *이따구로 불균형하니까 주의해야함. 이 비율 지켜서 뽑아내야함.</p>
<p><img src="https://velog.velcdn.com/images/__hj______/post/e69d713a-75e9-479d-ba60-e091acb074eb/image.png" alt=""> *Train Data 잘 뽑힘</p>
<p><img src="https://velog.velcdn.com/images/__hj______/post/5d314dbf-0ab8-469e-aa3a-f4eb93ed6929/image.png" alt=""> *Test Data 잘 뽑힘</p>
<blockquote>
<p>✅ <code>stratify= 분포가 불균형한 컬럼</code> 을 설정해줘야 비율을 지켜서 데이터를 분리할 수 있다.</p>
</blockquote>
<h2 id="6-교차-검증과-gridsearch">6. 교차 검증과 GridSearch</h2>
<h3 id="1-교차-검증cross-validation">1) 교차 검증(Cross Validation)</h3>
<ul>
<li><strong>교차검증</strong>(Cross Validation)이란? 데이터 셋을 여러개의 하위 집합으로 나누어 돌아가면서 검증 데이터로 사용하는 방법이다.<blockquote>
<p>💡위에 있는 평가방법들은 <strong>모델을 평가</strong>하기 위한 별도의 <strong>테스트 데이터</strong>로 평가하는 과정이다. 하지만, 이때도 고정된 테스트 데이터가 존재하기 때문에 <strong>과적합</strong>할 수 있다. 그래서 <strong>교차검증</strong>을 해야한다.</p>
</blockquote>
</li>
</ul>
<h4 id="①-k-fold-validation">① K-Fold Validation</h4>
<ul>
<li><p><strong>정의</strong> : Train Data를 K개의 하위 집합으로 나누어 모델을 학습시키고 모델을 최적화 하는 방법이다.</p>
<ul>
<li>K는 분할의 갯수이다.<ul>
<li>Split 1 : 학습용(Fold 2~5), 검증용(Fold 1)</li>
<li>Split 2 : 학습용(Fold 1, 3~5), 검증용(Fold 2)</li>
<li>Split 5까지 반복 후 최종 평가
<img src="https://velog.velcdn.com/images/__hj______/post/3b270624-0960-4a2e-9bcc-8e3d032fc37f/image.png" alt=""></li>
</ul>
</li>
</ul>
</li>
<li><p><strong>특징</strong> : 데이터가 부족할 떄 유용하다. → <strong>반복 학습</strong>이기 때문!</p>
</li>
<li><p><strong>사용 함수</strong> :</p>
<ul>
<li><code>sklearn.model_selection.KFold</code></li>
<li><code>sklearn.model_selection.StrifiedKFold</code> : 불균형한 레이블(Y)를 가지고 있을 때!</li>
</ul>
<p><img src="https://velog.velcdn.com/images/__hj______/post/0c4be201-b5e8-41ee-bd67-eb7e6b4be9ba/image.png" alt=""></p>
</li>
</ul>
<h4 id="②-gridsearch-v--하이퍼-파라미터-자동-적용하기">② GridSearch V : 하이퍼 파라미터 자동 적용하기</h4>
<ul>
<li><strong>하이퍼 파라미터</strong>(Hyper Parameter)란? 모델을 구성하는 입력 값 중 사람이 임의적으로 바꿀 수 있는 입력 값. 다양한 값을 넣고 실험할 수 있다.</li>
<li>이걸 자동화 하는 게 <strong>Grid Search</strong>이다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/__hj______/post/cb9efd80-4227-4134-bc3a-759199421226/image.png" alt=""></p>
<h2 id="7-총-정리">7. 총 정리</h2>
<p><img src="https://velog.velcdn.com/images/__hj______/post/3bf096b1-14ec-4af0-a2da-b3b42a39fdfd/image.png" alt=""></p>
<ul>
<li>test data는 마지막에 모델을 평가하기 위해서 빼둔다! 절대 안건든다!!</li>
<li>train 안에서 7대 3으로 나눠서 또 검증, 평가 한다.</li>
<li>거기서 가장 좋은 전처리 결과를 뽑아서 test data에 적용한다!</li>
</ul>
<p>어렵다 어려워..😭</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-20240612]]></title>
            <link>https://velog.io/@__hj______/TIL-20240612</link>
            <guid>https://velog.io/@__hj______/TIL-20240612</guid>
            <pubDate>Wed, 12 Jun 2024 02:22:31 GMT</pubDate>
            <description><![CDATA[<h1 id="codekata">[CODEKATA]</h1>
<h3 id="1661-average-time-of-process-per-machine">1661. Average Time of Process per Machine</h3>
<blockquote>
<p>Table: <code>Activity</code></p>
</blockquote>
<pre><code>+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| machine_id     | int     |
| process_id     | int     |
| activity_type  | enum    |
| timestamp      | float   |
+----------------+---------+</code></pre><p>The table shows the user activities for a factory website.
(machine_id, process_id, activity_type) is the primary key (combination of columns with unique values) of this table.
machine_id is the ID of a machine.
process_id is the ID of a process running on the machine with ID machine_id.
activity_type is an ENUM (category) of type (&#39;start&#39;, &#39;end&#39;).
timestamp is a float representing the current time in seconds.
&#39;start&#39; means the machine starts the process at the given timestamp and &#39;end&#39; means the machine ends the process at the given timestamp.
The &#39;start&#39; timestamp will always be before the &#39;end&#39; timestamp for every (machine_id, process_id) pair.</p>
<p>There is a factory website that has several machines each running the same number of processes. Write a solution to find the average time each machine takes to complete a process.</p>
<p>The time to complete a process is the <code>&#39;end&#39; timestamp</code> minus the <code>&#39;start&#39; timestamp</code>. The average time is calculated by the total time to complete every process on the machine divided by the number of processes that were run.</p>
<p>The resulting table should have the <code>machine_id</code> along with the average time as <code>processing_time</code>, which should be rounded to 3 decimal places.</p>
<p>Return the result table in any order.</p>
<p>The result format is in the following example.</p>
<blockquote>
<p>Example 1:</p>
</blockquote>
<p>Input: 
Activity table:</p>
<pre><code>+------------+------------+---------------+-----------+
| machine_id | process_id | activity_type | timestamp |
+------------+------------+---------------+-----------+
| 0          | 0          | start         | 0.712     |
| 0          | 0          | end           | 1.520     |
| 0          | 1          | start         | 3.140     |
| 0          | 1          | end           | 4.120     |
| 1          | 0          | start         | 0.550     |
| 1          | 0          | end           | 1.550     |
| 1          | 1          | start         | 0.430     |
| 1          | 1          | end           | 1.420     |
| 2          | 0          | start         | 4.100     |
| 2          | 0          | end           | 4.512     |
| 2          | 1          | start         | 2.500     |
| 2          | 1          | end           | 5.000     |
+------------+------------+---------------+-----------+
Output: 
+------------+-----------------+
| machine_id | processing_time |
+------------+-----------------+
| 0          | 0.894           |
| 1          | 0.995           |
| 2          | 1.456           |
+------------+-----------------+</code></pre><p>Explanation: 
There are 3 machines running 2 processes each.
Machine 0&#39;s average time is ((1.520 - 0.712) + (4.120 - 3.140)) / 2 = 0.894
Machine 1&#39;s average time is ((1.550 - 0.550) + (1.420 - 0.430)) / 2 = 0.995
Machine 2&#39;s average time is ((4.512 - 4.100) + (5.000 - 2.500)) / 2 = 1.456</p>
<h3 id="-code">&lt;/&gt; Code</h3>
<pre><code class="language-python"># Write your MySQL query statement below
select a1.machine_id, round(avg(a2.timestamp-a1.timestamp),3) as processing_time
from Activity a1 inner join Activity a2 on a1.machine_id=a2.machine_id and a1.process_id=a2.process_id
where a1.activity_type = &#39;start&#39; and a2.activity_type = &#39;end&#39;
group by 1;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-로지스틱회귀 정리 & 모델링 정리]]></title>
            <link>https://velog.io/@__hj______/TIL-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1%ED%9A%8C%EA%B7%80-%EC%A0%95%EB%A6%AC-%EB%AA%A8%EB%8D%B8%EB%A7%81-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@__hj______/TIL-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1%ED%9A%8C%EA%B7%80-%EC%A0%95%EB%A6%AC-%EB%AA%A8%EB%8D%B8%EB%A7%81-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Tue, 11 Jun 2024 12:54:12 GMT</pubDate>
            <description><![CDATA[<h1 id="로지스틱회귀-정리">로지스틱회귀 정리</h1>
<ul>
<li><p>사실상 로지스틱회귀는 선형회귀의 아이디어에서 종속 변수(Y)만 가공한 것이기 때문에 장/단점이 똑같다.</p>
</li>
<li><p><strong>로지스틱회귀</strong></p>
<ul>
<li>장점 : 직관적이다. 이해하기 쉽다.</li>
<li>단점 : 복잡한 비선형관계를 모델링하기 어려울 수 있다.</li>
<li>Python 패키지 : <code>sklearn.linear_model.LogisticRegression</code></li>
</ul>
<blockquote>
<p>✅ 알맞은 척도 사용하여 평가하기!!
<img src="https://velog.velcdn.com/images/__hj______/post/713744f8-4b09-49fc-b407-3d3ef6e60b9d/image.png" alt=""></p>
<ul>
<li>ex) accuracy 같은 경우, y 변수가 unbalance한 경우 사용할 수 없다.</li>
</ul>
</blockquote>
</li>
</ul>
<h1 id="모델링-기본-마무리">모델링 기본 마무리</h1>
<h2 id="1-회귀-분류-정리">1. 회귀, 분류 정리</h2>
<h3 id="1-선형회귀와-로지스틱회귀의-공통점">1) 선형회귀와 로지스틱회귀의 공통점</h3>
<ul>
<li>모델 생성이 쉬움</li>
<li>가중치(회귀계수)를 통한 해석이 쉬운 장점이 있다.</li>
<li>X변수에 범주형, 수치형 변수 둘 다 사용할 수 있다.</li>
</ul>
<h3 id="2-선형회귀와-로지스틱회귀의-차이점">2) 선형회귀와 로지스틱회귀의 차이점</h3>
<ul>
<li>Y(종속변수)</li>
<li>평가척도</li>
<li>sklearn 모델 클래스 &amp; 평가 클래스
<img src="https://velog.velcdn.com/images/__hj______/post/6409af15-0ff2-496d-af5d-de4df3327db7/image.png" alt=""></li>
</ul>
<h2 id="2-전체-데이터-분석-프로세스">2. 전체 데이터 분석 프로세스</h2>
<p><img src="https://velog.velcdn.com/images/__hj______/post/7b5a33b9-0db5-47e8-9960-e36c4458d905/image.png" alt=""></p>
<blockquote>
<p><img src="https://velog.velcdn.com/images/__hj______/post/2c016b22-efa5-4fa1-8805-85262646386c/image.png" alt="">
✅ <strong>숫자를 예측하는 회귀분석</strong>, <strong>범주를 맞추는 분류분석</strong>에 대해 배웠지만 세상에 있는 모든 문제를 다 해결할 수 없다. 데이터 모델링은 데이터 사이언스의 아주 일부분이며, <strong>데이터 품질 향상을 위해 데이터 수집과 전처리</strong>에 아주 많은 시간을 투자해야 한다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-다중로지스틱회귀 실습]]></title>
            <link>https://velog.io/@__hj______/TIL-%EB%8B%A4%EC%A4%91%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1%ED%9A%8C%EA%B7%80-%EC%8B%A4%EC%8A%B5</link>
            <guid>https://velog.io/@__hj______/TIL-%EB%8B%A4%EC%A4%91%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1%ED%9A%8C%EA%B7%80-%EC%8B%A4%EC%8A%B5</guid>
            <pubDate>Tue, 11 Jun 2024 12:33:31 GMT</pubDate>
            <description><![CDATA[<h1 id="다중로지스틱회귀-실습">다중로지스틱회귀 실습</h1>
<h2 id="1-타이타닉-데이터-실습">1. 타이타닉 데이터 실습</h2>
<blockquote>
<h4 id="1-데이터-생성-및-라이브러리-설치">1) 데이터 생성 및 라이브러리 설치</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/5b66af5d-1491-440e-ba39-cd6dc65e69c3/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="2-x변수-선정">2) X변수 선정</h4>
</blockquote>
<ul>
<li>y(Survived) : 상망</li>
<li>X(수치형) : Fare</li>
<li>X(범주형) : Pclass(좌석등급), Sex
<img src="https://velog.velcdn.com/images/__hj______/post/6e570095-b51a-4e1b-9a25-4ec44981b597/image.png" alt=""></li>
</ul>
<blockquote>
<h4 id="3-결과값-도출-과정-함수화">3) 결과값 도출 과정 함수화</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/a7779677-9f81-49f0-ac3c-23a56ea20009/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/230749fd-fa9d-4fec-91ce-1563dd0c6b8d/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="4-범주형-데이터-수치화">4) 범주형 데이터 수치화</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/b4e26772-e068-499a-b1fd-67b45468b1d1/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="5-로지스틱회귀모델-불러오고-데이터-훈련하기">5) 로지스틱회귀모델 불러오고, 데이터 훈련하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/9bfd25c3-abc1-4dab-a2ac-c9984ee9cc9b/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="6-가중치-바이어스-변수-확인">6) 가중치, 바이어스, 변수 확인</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/6e7cbd69-dfac-4237-9934-e803e7842c19/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="7-예측-컬럼-생성">7) 예측 컬럼 생성</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/56a86f79-6fb6-48d2-8864-9a169a179282/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="8-평가--accuracy-f1-score">8) 평가 : Accuracy, F1-Score</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/86c11a75-518b-4170-a348-6d5c778605da/image.png" alt=""></p>
</blockquote>
<ul>
<li>단순선형회귀분석 모델에 비해 다중선형회귀분석 모델은 정확도와 F1-Score가 크게 향상되었다.</li>
</ul>
<blockquote>
<h4 id="9-부가설명">9) 부가설명</h4>
</blockquote>
<ul>
<li><code>predict_proba()</code> : 각 데이터의 모든 변수에 대한 확률 예측
<img src="https://velog.velcdn.com/images/__hj______/post/736b01ed-5504-4354-9026-ec02b57a5f93/image.png" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-로지스틱회귀 실습]]></title>
            <link>https://velog.io/@__hj______/TIL-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1%ED%9A%8C%EA%B7%80-%EC%8B%A4%EC%8A%B5</link>
            <guid>https://velog.io/@__hj______/TIL-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1%ED%9A%8C%EA%B7%80-%EC%8B%A4%EC%8A%B5</guid>
            <pubDate>Tue, 11 Jun 2024 11:01:03 GMT</pubDate>
            <description><![CDATA[<h1 id="로지스틱회귀-실습">로지스틱회귀 실습</h1>
<h2 id="1-자주쓰는-함수">1. 자주쓰는 함수</h2>
<ul>
<li><code>sklearn.linear_model.LogisticRegression</code> : 로지스틱회귀 모델 클래스<ul>
<li>속성<ul>
<li><code>classes_</code>: 클래스(Y)의 종류</li>
<li><code>n_features_in_</code> : 들어간 독립변수(X) 개수</li>
<li><code>feature_names_in_</code>: 들어간 독립변수(X)의 이름</li>
<li><code>coef_</code>: 가중치</li>
<li><code>intercept_</code>: 바이어스</li>
</ul>
</li>
<li>메소드<ul>
<li><code>fit</code>: 데이터 학습</li>
<li><code>predict</code>: 데이터 예측</li>
<li><code>predict_proba</code>: 데이터가 Y = 1일 확률을 예측</li>
</ul>
</li>
</ul>
</li>
<li><code>sklearn.metrics.accuracy</code>: 정확도</li>
<li><code>sklearn.metrics.f1_socre</code>: f1_score</li>
</ul>
<h2 id="2-타이타닉-실습">2. 타이타닉 실습</h2>
<blockquote>
<h3 id="1-데이터-생성-및-라이브러리-설치">1) 데이터 생성 및 라이브러리 설치</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/3a9e64de-20ab-4ce7-89e4-0aa9b9b239c9/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="2-x변수-선정">2) X변수 선정</h3>
</blockquote>
<ul>
<li>숫자<ul>
<li>Age, Sibsp, Parch, Fare</li>
</ul>
</li>
<li>범주형<ul>
<li>Pclass, Sex, Cabin, Embarked<blockquote>
</blockquote>
</li>
</ul>
</li>
<li>X변수 1개, y변수(Survived)
<img src="https://velog.velcdn.com/images/__hj______/post/03f8de57-3af6-4702-96a7-e27540127bf9/image.png" alt=""></li>
</ul>
<blockquote>
<h3 id="3-로지스틱회귀모델-불러오고-데이터-훈련하기">3) 로지스틱회귀모델 불러오고, 데이터 훈련하기</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/f6fcca80-285d-4b7a-83fb-78ca378cba0c/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="4-산점도-확인">4) 산점도 확인</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/15371923-10bc-4199-a23b-ebd4ac0a2487/image.png" alt=""></p>
</blockquote>
<ul>
<li>산점도 모양이 이상적이지 않은 것은 데이터 전처리를 하지 않았기 때문이다. 히스토그램으로 X변수의 분포를 파악해보자.</li>
</ul>
<blockquote>
<h3 id="5-히스토그램-확인">5) 히스토그램 확인</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/a4ae0335-35fd-42f8-8203-8f43f34d4ae5/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="6-기술통계-확인-후-모델-학습">6) 기술통계 확인 후, 모델 학습</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/8792c292-ec90-4502-94a1-6bd06de44e9f/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="7-매번-출력을-입력하지-않도록-함수화">7) 매번 출력을 입력하지 않도록 함수화</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/bb75ae0b-d27b-48fc-a1f2-e13b758e84a7/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="8-예측값-생성">8) 예측값 생성</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/36325508-b4fa-4235-9f46-73a0c0ef587e/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="9-평가--accuracy-f-1-score">9) 평가 : Accuracy, F-1 Score</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/96c9786b-7718-4fdc-90e1-f1bdc36e0214/image.png" alt=""></p>
</blockquote>
<ul>
<li>매번 결과를 보여달라고 입력하지 않아도 되도록 함수화.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-분류평가지표]]></title>
            <link>https://velog.io/@__hj______/TIL-%EB%B6%84%EB%A5%98%ED%8F%89%EA%B0%80%EC%A7%80%ED%91%9C</link>
            <guid>https://velog.io/@__hj______/TIL-%EB%B6%84%EB%A5%98%ED%8F%89%EA%B0%80%EC%A7%80%ED%91%9C</guid>
            <pubDate>Tue, 11 Jun 2024 10:12:51 GMT</pubDate>
            <description><![CDATA[<h1 id="분류-평가-지표">분류 평가 지표</h1>
<h2 id="1-정확도와-f1-score">1. 정확도와 F1-Score</h2>
<ul>
<li>회귀분석이 숫자를 예측하고 실제 값과 평가했던 것처럼, 분류라는 문제를 평가하긴 쉽게 보인다. 예를 들어, 맞춘 정답을 전체 데이터의 개수로 나누면 될 것처럼 보이지만 과연 그럴까?</li>
</ul>
<h3 id="1-정확도의-한계">1) 정확도의 한계</h3>
<ul>
<li>러닝이는 끝내주는 데이터 분석가라고 소문나있다. 이 친구는 병원에 암을 예측하는 진단 소프트웨어를 개발 해달라는 요청을 받고 납품하는 상황이다. 그런데 너무 귀찮은 나머지 <strong>모든 환자를 정상</strong>이라고 판정하는 &#39;암 예측 모델&#39;을 만들었다.<blockquote>
<p>암 예측 모델 : 무조건 환자가 음성(정상인)이라고 판정</p>
<ul>
<li>100명의 환자 입실, 95명은 음성(정상), 5명은 양성(암환자)</li>
<li>위에 따르면 암 예측 모델의 정확도는 <strong>95%</strong></li>
</ul>
</blockquote>
</li>
<li>정확도는 매우 높은 것 같지만 실제로 양성(암 환자)은 하나도 못 맞췄다. 이런 사기를 잘 걸러내기 위한 <strong>지표</strong>를 만들어야한다.</li>
</ul>
<h3 id="2-혼동-행렬confusion-matrix">2) 혼동 행렬(Confusion Matrix)</h3>
<p>: 실제 값과 예측 값에 대한 모든 경우의 수를 표현하기 위한 2×2 행렬
<img src="https://velog.velcdn.com/images/__hj______/post/1ba6a431-e2fc-40ab-9004-fef78f5d4f95/image.png" alt=""></p>
<h4 id="①-표기법--결과예측">① 표기법 : 결과+예측</h4>
<ul>
<li>실제와 예측이 같으면 True / 다르면 False</li>
<li>예측을 양성으로 했으면 Positive / 음성으로 했으면 Negative</li>
</ul>
<h4 id="②-해석">② 해석</h4>
<ul>
<li><strong>TP</strong> : 실제-양성, 예측-양성 = 올바르게 분류</li>
<li><strong>FP</strong> : 실제-음성, 예측-양성 = 잘못 분류</li>
<li><strong>FN</strong> : 실제-양성, 예측-음성 = 잘못 분류</li>
<li><strong>TN</strong> : 실제-음성, 예측-음성 = 올바르게 분류</li>
</ul>
<h4 id="③-지표">③ 지표</h4>
<p><strong>1. 정밀도(Precision)</strong> : 모델이 양성 1로 예측한 결과 중 실제 양성의 비율(모델의 관점)
&quot;내가 예측했는데, 얼마 맞췄어!&quot;
<img src="https://velog.velcdn.com/images/__hj______/post/2d3dc59d-714c-48f4-abbd-5ffb421d6e48/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/a23eadb5-37ec-48ec-8406-ef06e815dc76/image.png" alt=""></p>
<p><strong>2. 재현율(Recall)</strong> : 실제 값이 양성인 데이터 중 모델이 양성으로 예측한 비율(데이터의 관점)
&quot;실제 암환자 중에 모델이 얼마나 맞췄어!&quot;
<img src="https://velog.velcdn.com/images/__hj______/post/7cd66a44-5646-4123-8b7a-d6e2235bfb3f/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/577d1eee-647f-46fa-b3a8-6e8511e5f6bd/image.png" alt=""></p>
<p><strong>3. F1-Score</strong> : 정밀도와 재현율의 <strong>조화 평균</strong>
*조화평균이란? 1/a + 1/b로 구하는 것.
<img src="https://velog.velcdn.com/images/__hj______/post/d4899a8f-0e0c-4e4a-b242-f3fbb0e67a66/image.png" alt=""></p>
<p><strong>4. 정확도(Accuracy)</strong> : 맞춘 것(모든 True 값 더한 것) / 전체 데이터
<img src="https://velog.velcdn.com/images/__hj______/post/f1b6135d-58bb-4ddd-9252-c4843d666d71/image.png" alt=""></p>
<h4 id="④-실제-적용">④ 실제 적용</h4>
<ul>
<li><strong>TP</strong> : 실제-양성, 예측-양성 = 올바르게 분류 → <strong>0명</strong></li>
<li><strong>FP</strong> : 실제-음성, 예측-양성 = 잘못 분류 → <strong>0명</strong></li>
<li><strong>FN</strong> : 실제-양성, 예측-음성 = 잘못 분류 → <strong>5명</strong></li>
<li><strong>TN</strong> : 실제-음성, 예측-음성 = 올바르게 분류 → <strong>95명</strong><ul>
<li>정밀도는 TP/TP+FP = 0/0+0 = 정의되지 않음(division by zero)</li>
<li>재현율은 TP/TP+FN = 0/0+5 = 0</li>
<li>결과적으로 F1-Score는 2* 0*0/0+0 = 0
= 제대로 작동 안한다.</li>
</ul>
</li>
</ul>
<h3 id="3-정리">3) 정리</h3>
<ul>
<li>위처럼 정확도가 제 기능을 못할 때는 분류에서 특히 y값이 unbalance할 때 일어난다. </li>
<li>따라서 이를 위해서 <strong>y범주의 비율을 맞춰주거나 평가 지표를 F1-Score를 사용함으로써 이를 보완한다.</strong></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL - 로지스틱회귀]]></title>
            <link>https://velog.io/@__hj______/TIL-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1%ED%9A%8C%EA%B7%80</link>
            <guid>https://velog.io/@__hj______/TIL-%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1%ED%9A%8C%EA%B7%80</guid>
            <pubDate>Tue, 11 Jun 2024 09:13:22 GMT</pubDate>
            <description><![CDATA[<p><code>*간단하게 설명하면 이렇게 분류된다.</code>
<img src="https://velog.velcdn.com/images/__hj______/post/1ae4cfce-f79a-420f-81cb-4ef66a110286/image.png" alt=""></p>
<h1 id="로지스틱회귀란">로지스틱회귀란?</h1>
<p>: 범주형 데이터를 맞추는 분류 분석</p>
<h2 id="1-타이타닉-생존-분류-문제">1. 타이타닉 생존 분류 문제</h2>
<ul>
<li>머신이는 승객의 정보로 생존을 예측하는 문제를 보니 매우 재밌는 사실을 발견했다. 여성은 생존 확률이 높고 남성은 생존 확률이 낮다는 것이다. 이 부분만 적용해도 기본적인 예측은 할 수 있다.</li>
</ul>
<blockquote>
<p><strong>여성은 모두 생존, 남성은 모두 사망으로 판별한다면?</strong>
<img src="https://velog.velcdn.com/images/__hj______/post/2bc3aebd-8aea-4111-8d58-496764356bac/image.png" alt=""></p>
</blockquote>
<p><code>가설 : 비상상황 특성 상 여성을 배려해서 많이 생존했을 것이다.</code>
<code>1) pivot table로 확인한다.</code>
<code>2) 그래프를 통해 확인한다.</code></p>
<blockquote>
</blockquote>
<p>1) pivot table로 확인한다.<img src="https://velog.velcdn.com/images/__hj______/post/cc0b56bc-9e79-41a8-b2f1-354b80263744/image.png" alt=""><img src="https://velog.velcdn.com/images/__hj______/post/b227b22b-66b6-437e-a33c-cdcb7ad7b9fc/image.png" alt=""></p>
<ul>
<li><strong>정확도 = 맞춘 갯수(여성 생존 수 + 남성 사망 수) / 전체 데이터</strong><blockquote>
</blockquote>
2) 그래프를 통해 확인한다. <img src="https://velog.velcdn.com/images/__hj______/post/812d50d6-0981-4f3f-a294-62b2283770d2/image.png" alt=""><blockquote>
</blockquote>
✅ 모델을 만들지 않고도 <strong>78%의 정확도</strong>를 가진 인사이트를 도출했다. 하지만 이것은 Data Scientific하지 않다.</li>
</ul>
<h2 id="2-로지스틱회귀-이론">2. 로지스틱회귀 이론</h2>
<h3 id="1-범주형-y에서-선형함수의-한계">1) 범주형 Y에서 선형함수의 한계</h3>
<ul>
<li><strong>X가 연속형 변수</strong>이고, <strong>Y가 특정 값이 될 확률</strong>이라고 설정한다면, 왼쪽 그림과 같이 선형으로 설명하긴 쉽지 않아보인다. 확률은 0과 1사이 인데, 예측 값이 확률 범위를 넘어 갈 수 있는 문제가 있기 때문이다.</li>
<li>ex. Y=1(생존)일 확률을 맞추는 것. P(Y=1), 0≤P≤1
<img src="https://velog.velcdn.com/images/__hj______/post/b96f27df-999d-44f2-95d8-7ba0e6d40100/image.png" alt=""></li>
</ul>
<h3 id="2-로짓의-개념-두두등장">2) 로짓의 개념 두두등장!</h3>
<ul>
<li>위 S형태의 함수를 만들기 위해 <strong>오즈비(Odds ratio)의 개념</strong>을 적용해보겠어!<blockquote>
<p>여기서 잠깐❗</p>
<ul>
<li><strong>오즈비(Odds ratio)</strong>란? <strong>실패확률 대비 성공확률</strong>로, 도박사들이 자주 쓰는 개념이다.</li>
<li>ex) 도박이 성공할 확률이 80%라면, 오즈비는 80%/20% = 4다. </li>
<li>즉, 1번 실패하면 4번은 딴다는 것이다.
<img src="https://velog.velcdn.com/images/__hj______/post/39351aac-c449-4f6e-98af-34c4ac131f10/image.png" alt=""></li>
</ul>
</blockquote>
</li>
<li><em>BUT❗오즈비는 바로 쓸 수 없다!! *</em><blockquote>
<ul>
<li>P는 확률 값으로, 0과 1사이 값인데, <strong>P가 증가할 수록 오즈비가 급격하게 증가</strong>하기 때문에 너무 확률이 급격하게 증가하고 <strong>선형성을 따르지 않게 된다.</strong> 따라서 <strong>로그</strong>를 씌워 이 부분을 좀 완화해야 한다!! <code>log(로그)의 역할 : Tranquila~</code></li>
<li>ex 1) p=0, 0/1-0 = 0</li>
<li>ex 2) p=0.9, 0.9/1-0.9 = 9</li>
<li>ex 3) p=1, 1/1-1 = 1/0 = ＋∞(발산)</li>
</ul>
<p>✅ 이렇게!<img src="https://velog.velcdn.com/images/__hj______/post/e8197421-b56e-42ec-8b12-ac0fab577e59/image.png" alt=""></p>
</blockquote>
</li>
</ul>
<h3 id="3-오즈비와-확률의-관계--로짓과-확률의-관계">3) 오즈비와 확률의 관계 / 로짓과 확률의 관계</h3>
<p>① 로짓의 그래프가 더 선형적인 그림을 나타내어 선형회귀의 기본식을 활용할 수 있게 됨
② 이게바로 <strong>로지스틱&#39;회귀&#39;라고 불리는 이유</strong>이다.</p>
<blockquote>
<p><img src="https://velog.velcdn.com/images/__hj______/post/e66fb7ec-a815-464a-9fb5-2688d95dcd46/image.png" alt=""> </p>
<ul>
<li>확률이 증가할수록 (좌)오즈비는 급격히 발산, (우)로짓은 완만하게 증가</li>
</ul>
</blockquote>
<ul>
<li>위 그래프의 확률-로짓 그래프 X-Y축을 교체!
<img src="https://velog.velcdn.com/images/__hj______/post/412b5e0b-21eb-4da3-a3aa-bf2522d70e11/image.png" alt="">
✅ 이게 바로, <strong>로지스틱 함수</strong>
✅ 로지스틱 함수는 시그모이드 함수 중 하나로 딥러닝에서도 활용된다. 
✅ <strong>값을 계산하면 확률이 도출된다!!</strong>
✅ <strong>기준</strong>이 되는 <strong>임계값</strong>은 정해줘야 한다.<blockquote>
<ul>
<li>ex 1) 생존확률 P = 0.9 이 생존을 의미하려면, P&gt;0.5, 생존 이라는 임계값을 정해줘야한다.
<img src="https://velog.velcdn.com/images/__hj______/post/82aa4fe7-fb5c-4e66-9a39-c2b60e4f2c05/image.png" alt="">
✅ 임계값을 기준으로, X값 대비 Y값의 차이가 크다. = 양극화 </li>
<li><em>= 분류에 적합하다.*</em></li>
</ul>
</blockquote>
</li>
</ul>
<blockquote>
<p><img src="https://velog.velcdn.com/images/__hj______/post/6e7821b9-079b-4694-830d-e016b4e1248e/image.png" alt=""></p>
<ul>
<li>이 식을 P에 대해서 다시 정리하면, (이항하면,)
<img src="https://velog.velcdn.com/images/__hj______/post/24a7b422-d70a-45dc-b891-f5a25898dcbd/image.png" alt=""></li>
<li>이렇게 된다!!</li>
</ul>
</blockquote>
<p>③ <strong>로짓의 장점</strong>은 <strong>어떤 값을 가져오더라도 반드시 특정 사건이 일어날 확률</strong>(Y값이 특정 값일 확률, ex.Y=1(생존))<strong>이 0과 1안에</strong> 들어오게 하는 특징을 가진다.
✅ 즉, Y의 값을 예측하는 것이 아니라, <strong>Y=1일 확률을 예측</strong>하는 것이다.
✅ 그 다음에, 임계값을 기준으로 컷오프를 통해 Y가 n이면 생존, 사망을 예측하는 것이다.</p>
<blockquote>
<ul>
<li>로짓과 기존 선형회귀의 우변을 합쳐 다음과 같은 식을 도출한다.
<img src="https://velog.velcdn.com/images/__hj______/post/e9aaadf1-e934-4c26-bc83-16f74b726be8/image.png" alt=""></li>
<li>양변에 자연지수 $e$를 취하면 (이항 하면)
<img src="https://velog.velcdn.com/images/__hj______/post/f426a6e8-6eef-400e-a16d-cc5e0d090f9d/image.png" alt=""></li>
<li>💡해석 : <strong>X값이 $w_1$만큼 증가</strong>하면 <strong>오즈비는 $e^{w_0}$만큼 증가</strong>한다.</li>
</ul>
</blockquote>
<h3 id="4-정리">4) 정리</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/d82bda40-7b1d-4ea5-b8bb-89a85903730c/image.png" alt=""></p>
<ul>
<li>로지스틱 함수는 가중치 값을 안다면 X값이 주어졌을 때 <strong>해당 사건이 일어날 수 있는 P의 확률</strong>을 계산할 수 있게 된다.</li>
<li>이때, 확률 0.5를 기준으로 그보다 높으면 사건이 일어남(P(Y)=1), 그렇지 않으면 사건이 일어나지 않음(P(Y)=0)으로 판단하여 <strong>분류 예측</strong>에 사용한다.</li>
<li>X가 연속형변수, 성별(0,1)</li>
<li>y가 이진분류(0,1), 다중분류를 이용한 다른 함수(Softmax)(=A,B,C가 일어날 확률을 각각 클래스에 대해 분류하고 모든 클래스의 확률을 합이 1)</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-기초통계2]]></title>
            <link>https://velog.io/@__hj______/TIL-%EA%B8%B0%EC%B4%88%ED%86%B5%EA%B3%842</link>
            <guid>https://velog.io/@__hj______/TIL-%EA%B8%B0%EC%B4%88%ED%86%B5%EA%B3%842</guid>
            <pubDate>Wed, 05 Jun 2024 16:35:53 GMT</pubDate>
            <description><![CDATA[<h1 id="통계야-놀쟈☆">통계야 놀쟈,,,☆</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/bb64d716-414b-424a-8f03-e08a8d710165/image.png" alt="">
*이미지 출처 : 전소현튜터님💕</p>
<h2 id="1-데이터-분석가의-통계적-실험">1. 데이터 분석가의 통계적 실험</h2>
<ul>
<li><p>실험설계는 어떤 가설을 확인하거난 기각하기 위한 목표를 가지고 있다.
  ✅ 데이터 분석가는 상황에 알맞은 분석을 설계하고 진행한다.</p>
<blockquote>
<p>👩 사업 : 이번 제품의 가격이 지난번 가격보다 수익성이 좋을까용?
  🤶 분석 : select 가격 from 매출테이블... 넹,, 살펴보고 말씀드릴게여..</p>
</blockquote>
<h3 id="통계적-실험이란">통계적 실험이란?</h3>
<p>1) <strong>정의</strong> : 어떤 목적을 가지고 관찰을 통해 측정값을 얻어내는것
2) <strong>목적</strong> : 통계적 추론을 통해 보다 진실에 가까운 값을 도출하기 위함</p>
<ul>
<li>ex) 모든 까마귀는 검정색이다 → 안보이아나? → 통계적 추론 실시 → 진실에 가까운 값 도출<blockquote>
<p>제한된 환경에서의 관찰을 통해 확보된 사실을 바탕으로 제한된 결론을 내리고, 확률적 판단으로 제한된 결론을 내려 진실에 가까운 값 도출</p>
</blockquote>
</li>
</ul>
<p>3) <strong>프로세스</strong> : 가설 수립 → 실험 설계 → 데이터 수립 → 추론 및 결론의 도출</p>
</li>
</ul>
<h2 id="2-ab-테스트">2. A/B 테스트</h2>
<p>⚠️ <strong>비즈니스 마케팅시 필수!!!!!!!</strong>
⚠️ 다양한 <strong>통계 개념</strong>을 바탕으로 실험 진행
<img src="https://velog.velcdn.com/images/__hj______/post/4f1736d6-cb65-449c-93a7-585fb0e3c6a3/image.png" alt=""></p>
<h3 id="ab테스트란">A/B테스트란?</h3>
<h4 id="1-정의--대조실험과-같다">1) 정의 : 대조실험과 같다.</h4>
<ul>
<li>A/B TEST는 두 가지 처리 방법 중 어떠한 쪽이 더 좋다라는 것을 입증하기 위해 실험군을 두 그룹으로 나누어 진행하는 실험이다.</li>
<li><strong>버킷테스트</strong> 또는 <strong>분할테스트</strong>라고 불린다.</li>
<li>종종 두 가지 처리 방법 중 하나는 기준이 되는 기존 방법이거나 아예 아무런 처리도 적용하지 않는 방법이다. 
ex) A와 B중 A는 쌩 데이터</li>
</ul>
<h4 id="2-목적--웹앱-서비스의-광고-및-uiux의-roi투자-대비-수익-상승">2) 목적 : 웹/앱 서비스의 광고 및 UI,UX의 ROI(투자 대비 수익) 상승.</h4>
<p>✅즉, <strong>최소 투자</strong>로 <strong>최대 이익</strong>을 창출하고자 하는 것</p>
<ul>
<li><strong>UI/UX 개선</strong> : 서비스에 진입한 방문자의 니즈에 알맞게 UI,UX가 친절하지 않은 경우 이탈할 가능성이 높다. 고객이 될 수 있었던 방문자를 놓치지 않으려면 A/B 테스트를 통해 이를 개선하는 작업이 중요!! <pre><code>  (ex. 이 페이지에서는 구매버튼을 찾기 어렵네!)</code></pre></li>
<li><strong>전환율 증가</strong> : A/B 테스트를 통해 무엇이 효과가 있는지(or 없는지) 파악하면 전환율 상승에 도움이 된다. <pre><code>  (ex. C배너보다 D배너의 전환이 더 좋네!)</code></pre></li>
<li><strong>매출 증가</strong> : A/B테스트를 통해 UX가 개선되면 전환율이 상승할 뿐만 아니라, 브랜드에 대한 고객 충성도도 높아진다. 이는 곧 <strong>반복 구매</strong>로 이어져 매출 증가에 영향을 미치게 된다.</li>
</ul>
<h4 id="3-주요지표">3) 주요지표</h4>
<ul>
<li>서비스의 가입율</li>
<li>재방문율</li>
<li>CTR(노출 대비 클릭율)</li>
<li>CVR(클릭 대비 전환율, 구매전환율)</li>
<li>ROAS(캠페인 비용 대비 캠페인 수익)</li>
<li>eCPM(1,000회 광고 노출당 얻은 수익)</li>
</ul>
<blockquote>
<p><img src="https://velog.velcdn.com/images/__hj______/post/f21a1d54-b7d2-49d9-b851-785eb255e0dc/image.png" alt=""></p>
</blockquote>
<ul>
<li>A/B 테스트는 이렇게 TEST 그룹과 CONTROL 그룹으로 나누어 진행한다.</li>
<li>근데 꼭 2개 그룹으로 나눌 필요 없음.</li>
</ul>
<h3 id="ab-테스트-프로세스--5단계통계적-개념-필수">A/B 테스트 프로세스 : 5단계(통계적 개념 필수!)</h3>
<h4 id="1-현행-데이터-탐색">1) 현행 데이터 탐색</h4>
<ul>
<li>앞서 살펴본 주요 지표를 기준으로 현재 데이터 탐색</li>
</ul>
<h4 id="2-가설-설정">2) 가설 설정</h4>
<ul>
<li>비즈니스 목표를 달성하는데 필요한 KPI(Key Performence Indicator=핵심 성과지표) 정의</li>
<li>KPI 전환율 증가를 위한 <strong>귀무가설, 대립가설</strong> 설정</li>
<li><strong>귀무가설</strong><ul>
<li>통계학에서 처음부터 <strong>버릴 것</strong>을 예상하는 가설</li>
<li>차이가 없거나 유의미한 차이가 없는 경우의 가설</li>
<li>&quot;새로운 광고배너를 게재해도 기존과 <strong>차이가 없을 것이다.</strong>&quot;</li>
</ul>
</li>
<li><strong>대립가설</strong><ul>
<li>귀무가설에 대립하는 명제</li>
<li>&quot;새로운 광고배너를 게재하면 기존과 <strong>차이가 있을 것이다.</strong>&quot;</li>
</ul>
</li>
</ul>
<h4 id="3-유의수준-설정--ex-p-value-≤-005">3) 유의수준 설정 : ex. $p-value$ ≤ 0.05</h4>
<ul>
<li>귀무가설(버릴 것)이 맞을 때 오류를 얼마나 허용할 것인지 기준을 정하는 단계</li>
</ul>
<h4 id="4-테스트-설계-및-실행">4) 테스트 설계 및 실행</h4>
<ul>
<li>사용자를 대조군과 실험군의 두 그룹으로 분리</li>
<li>대조군 그룹에게는 제품이나 서비스의 현재 버전을 보여주고, 실험군 그룹에게는 새 버전을 노출 처리</li>
</ul>
<h4 id="5-테스트-결과-분석">5) 테스트 결과 분석</h4>
<ul>
<li>측정 항목(가설)에 대해 두 그룹의 결과를 분석합니다. <strong>(검정통계량 분석)</strong></li>
<li>통계적 방법으로 결과를 분석하여 대조군과 실험군 사이의 통계적으로 유의미한 차이가 있는지 확인한다.</li>
</ul>
<h3 id="ab-테스트-주의사항❗">A/B 테스트 주의사항❗</h3>
<h4 id="1-적절한-표본-크기">1) 적절한 표본 크기</h4>
<ul>
<li>표본의 크기가 충분하지 않으면 유의미한 결과를 얻을 수 없다. 적절한 표본 크기를 결정하고, 그에 맞는 시간과 자원을 투자해야 한다.</li>
</ul>
<h4 id="2-하나의-변수만-변경">2) 하나의 변수만 변경</h4>
<ul>
<li>A/B 테스트에서는 <strong>하나의 변수만을 변경</strong>해야한다. 두 가지 이상의 변수를 동시에 변경하면 뭐때문인지 알 수 없음.</li>
</ul>
<h4 id="3-무작위성">3) 무작위성</h4>
<ul>
<li>A/B 테스트는 무작위로 선택된 사용자들에게 <strong>각각 다른 변수</strong>를 적용해야 합니다.</li>
</ul>
<h4 id="4-적절한-분석-방법">4) 적절한 분석 방법</h4>
<ul>
<li>A/B 테스트 결과를 해석할 때는 <strong>가설 검증을 위한 통계적 분석 방법을 선택</strong>하고, 유의수준을 설정해야한다.</li>
</ul>
<h4 id="5-테스트-결과의-의미">5) 테스트 결과의 의미</h4>
<ul>
<li>A/B 테스트 결과가 통계적으로 유의미하더라도 항상 <strong>실제로 의미 있는 결과인지</strong> 한번 더 생각해보아야한다.</li>
</ul>
<h4 id="6-정해진-기간-동안-진행">6) 정해진 기간 동안 진행</h4>
<ul>
<li>A/B 테스트는 <strong>일정 기간 동안</strong> 진행되어야한다. 그 기간동안에만 결과를 수집하고, 분석해야한다. 너무 짧은 기간 동안에는 결과를 수집하기 어렵고, 너무 긴 기간동안에는 사용자들의 행동이 변할 수 있다.
<img src="https://velog.velcdn.com/images/__hj______/post/ef75f4ba-0b92-402d-88ca-6b50f73e0f36/image.png" alt=""></li>
</ul>
<h2 id="3-유의수준-설정하기">3. 유의수준 설정하기!</h2>
<p>💡유의수준은 신뢰수준의 반대 개념이다.</p>
<h3 id="여기서-잠깐❗-중심극한정리란">여기서 잠깐❗ 중심극한정리란?</h3>
<ul>
<li>표본수집을 기반으로 한 추리통계에서 모집단의 분포가 어떤 모양이더라도 <strong>모집단의 크기가 충분히 크다면</strong> 표본평균의 분포가 모수 기반의 <strong>정규분포</strong>를 이룰 것이므로 수집한 표본의 통계량을 이용해 모집단의 모수를 추정할 수 있도록 하는 것.</li>
</ul>
<h3 id="유의수준--오류-허용-범위">유의수준 = 오류 허용 범위</h3>
<ul>
<li>표본을 추출하는 순간 모집단과 100% 일치할 수 없기 때문에, 오류의 가능성이 존재함.</li>
<li><strong>가설 검정</strong>에서 결론을 해석하기 위해서는 <strong>기준</strong>을 세우고, 그 기준을 만족하는지 확인해야 한다.</li>
<li>이 &#39;기준&#39;이 바로 <strong>유의수준</strong>이다.</li>
</ul>
<blockquote>
<p>✅ 유의수준 : 귀무가설(버릴 가설)이 맞을 때 오류허용 기준(확률)</p>
</blockquote>
<ul>
<li><p><strong>IF</strong> α로 표시하고 95%의 신뢰도를 기준으로 한다면 (1−0.95)인 0.05값이 유의수준 값이다.</p>
</li>
<li><p>유의수준은 신뢰수준의 반대 개념. 즉, <strong>오류가 나타날 확률</strong>이다. 보통 <strong>0.05</strong>를 사용한다. </p>
</li>
<li><p>확률값이므로, 역시 <strong>0부터 1 사이의 값</strong>을 가집니다.</p>
</li>
<li><p>우리는 <strong>유의수준을 0.05</strong>로 설정하겠습니다. (= <strong>95% 신뢰도</strong>로 기준을 정한 것!)</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/__hj______/post/6cd94d79-4b1b-4a99-89c2-265b0fe6c571/image.png" alt=""></p>
<h2 id="4-검정통계량과-p-value">4. 검정통계량과 $p-value$</h2>
<p>유의수준 정하고, 실험도 했다! 그럼 <strong>결과 해석</strong>은?!</p>
<h3 id="🚩결과-해석-단계">🚩결과 해석 단계</h3>
<h4 id="1단계-검정-방식-정하기--검정통계량-계산하기">1단계) 검정 방식 정하기 &amp; 검정통계량 계산하기</h4>
<ul>
<li>귀무가설을 채택할지, 기각할지 결정해야한다.</li>
<li><strong>검정통계량이란?</strong> 귀무가설을 채택 또는 기각하기 위해 사용하는 확률변수
  → <strong>확률변수란?</strong> 특정 확률로 발생하는 각각의 결과를 수치값으로 표현하는 변수</li>
</ul>
<blockquote>
<p><strong>ex)</strong> 주사위를 던졌을 때 나오는 숫자를 확률변수 X라고 가정했을 때,
각 X에 대한 확률 P(X)를 구해라
📌 확률변수 X는 1, 2, 3, 4, 5, 6이다.
📌 주사위 값이 1~6 중 어떤 수가 나올지 모르기 때문에 &#39;확률변수&#39;라고 한다.
📌 각 X에 대한 확률은 1/6이다.</p>
</blockquote>
<ul>
<li><strong>검정통계량</strong>은 표본 평균, 비율, 상관 계수 간의 차이 등 다양한 형태를 취할 수 있다.</li>
<li>검정방식의 선택은 <strong>가설과 데이터 종류</strong>에 따라 다르다.
<img src="https://velog.velcdn.com/images/__hj______/post/b04b92b7-c020-478d-a57d-b10ba0b43ff1/image.png" alt=""></li>
</ul>
<h4 id="2단계-p-value">2단계) $p-value$</h4>
<ul>
<li><strong>$p-value$란?</strong> 어떤 사건이 <strong>우연히</strong> 발생할 확률</li>
<li>$p-value$ = Probability-value = &#39;확률&#39;</li>
<li>확률이므로, <strong>0이상 1이하</strong> 이다.</li>
</ul>
<blockquote>
<p><strong>🎯 목표 : 대립가설 채택! = $p-value$가 작아야한다! = $p-value$ &lt; 유의수준</strong></p>
</blockquote>
<ul>
<li><strong>$p-value$ &lt; 0.05</strong> = 우연히 일어났을 가능성이 낮다 = <strong>인과관계 ⭕!!</strong></li>
<li><strong>$p-value$ &gt; 0.05</strong> = 우연히 일어났을 가능성이 높다 = <strong>인과관계 ❌!!</strong></li>
</ul>
<blockquote>
<p><strong>IF</strong> 중심극한정리를 통해, 모집단이 큰 경우 표본평균이 정규분포를 따르게 된다고 가정한다.
<img src="https://velog.velcdn.com/images/__hj______/post/1870e985-82c4-406e-8dfb-d466c8091d1c/image.png" alt=""></p>
</blockquote>
<ul>
<li>정규분포의 그래프 아래쪽이 확률값이다.</li>
<li>유의수준을 설정하고, $p-value$를 도출해서 의미를 해석해야한다.</li>
</ul>
<h4 id="3단계-근데-이거-직접해야함">3단계) 근데 이거 직접해야함?</h4>
<p>🤬 <strong>NO!!</strong>
😆 <strong>Python의 Library를 사용하면 돼!!</strong></p>
<blockquote>
</blockquote>
<p>``` python
import pandas as pd                # 라이브러리 호출
import numpy as np 
import scipy.stats as stats        # 과학 계산용 파이썬 라이브러리
from PIL import Image</p>
<blockquote>
</blockquote>
<p>df = pd.read_csv(&quot;users1.csv&quot;)</p>
<blockquote>
</blockquote>
<p>#t-test</p>
<h1 id="가설-설정">가설 설정</h1>
<h1 id="귀무가설-남성과-여성의-구매금액에-차이가-없을-것이다">귀무가설: 남성과 여성의 구매금액에 차이가 없을 것이다</h1>
<h1 id="대립가설-남성과-여성의-구매금액에-차이가-있을-것이다">대립가설: 남성과 여성의 구매금액에 차이가 있을 것이다</h1>
<h1 id="실제-데이터-비교">실제 데이터 비교</h1>
<p>df.groupby([&#39;Gender&#39;])[&#39;Purchase Amount (USD)&#39;].mean().reset_index()</p>
<blockquote>
</blockquote>
<h1 id="데이터-분리">데이터 분리</h1>
<h1 id="mask-method--원하는-데이터-뽑아서-데이터프레임에-합치는거">mask method : 원하는 데이터 뽑아서 데이터프레임에 합치는거.</h1>
<p>mask=(df[&#39;Gender&#39;]==&#39;Male&#39;)
mask1 = (df[&#39;Gender&#39;]==&#39;Female&#39;)</p>
<blockquote>
</blockquote>
<p>m_df = df[mask]
f_df = df[mask1]</p>
<blockquote>
</blockquote>
<h1 id="결제금액-컬럼만-가져오기">결제금액 컬럼만 가져오기</h1>
<p>m_df=m_df[[&#39;Purchase Amount (USD)&#39;]]
f_df=f_df[[&#39;Purchase Amount (USD)&#39;]]</p>
<blockquote>
</blockquote>
<h1 id="차이가-있는-것으로-보여짐">차이가 있는 것으로 보여짐</h1>
<h1 id="유의수준은-통상적으로-많이-쓰이는-005-로-정함">유의수준은 통상적으로 많이 쓰이는 0.05 로 정함</h1>
<h1 id="scipy-라이브러리를-이용해-t-score-와-pvalue-를-확인할-수-있습니다">scipy 라이브러리를 이용해 t-score 와 pvalue 를 확인할 수 있습니다.</h1>
<h1 id="t-test-는-표본의-평균차이-분석을-알고자-할-때-사용되며-모집단의-분산을-알-수-없는-경우-주로-사용됩니다">t-test 는 표본의 평균(차이 분석)을 알고자 할 때 사용되며, 모집단의 분산을 알 수 없는 경우 주로 사용됩니다.</h1>
<p>t, pvalue=stats.ttest_ind(m_df, f_df)</p>
<blockquote>
</blockquote>
<h1 id="tscore-는-그룹-간-얼마나-차이가-있는지에-대한-지표">tscore 는 그룹 간 얼마나 차이가 있는지에 대한 지표</h1>
<h1 id="tscore-가-크면-그룹-간-차이가-큼을-의미합니다">tscore 가 크면 그룹 간 차이가 큼을 의미합니다.</h1>
<blockquote>
</blockquote>
<h1 id="p-value-는-우연에-의해-나타날-확률에-대한-지표입니다">p-value 는 우연에 의해 나타날 확률에 대한 지표입니다.</h1>
<h1 id="p-value가-005-보다-크다--우연히-일어났을-가능성이-높다--인과관계가-없다고-추정">p-value가 0.05 보다 크다 = 우연히 일어났을 가능성이 높다 = 인과관계가 없다고 추정</h1>
<h1 id="여기서-p-value-값은-005-보다-크므로-인과관계가-없다고-추정할-수-있습니다">여기서 p-value 값은 0.05 보다 크므로, 인과관계가 없다고 추정할 수 있습니다.</h1>
<h1 id="대립가설-기각">대립가설 기각</h1>
<p>t, pvalue</p>
<blockquote>
</blockquote>
<p>#카이제곱검정</p>
<h1 id="가설-설정-1">가설 설정</h1>
<h1 id="귀무가설-성별과-구매size-에는-관련성이-없을-것이다">귀무가설: 성별과 구매Size 에는 관련성이 없을 것이다</h1>
<h1 id="대립가설-성별과-구매size-에는-관련성이-있을-것이다">대립가설: 성별과 구매Size 에는 관련성이 있을 것이다</h1>
<h1 id="실제-데이터-비교-1">실제 데이터 비교</h1>
<p>df.groupby([&#39;Gender&#39;,&#39;Size&#39;])[&#39;Customer ID&#39;].count().reset_index()</p>
<blockquote>
</blockquote>
<h1 id="pandas-라이브러리의-crosstab-함수를-통해-두-범주형-자료의-빈도표를-만들어-주겠습니다">pandas 라이브러리의 crosstab 함수를 통해, 두 범주형 자료의 빈도표를 만들어 주겠습니다.</h1>
<blockquote>
</blockquote>
<p>result = pd.crosstab(df[&#39;Gender&#39;], df[&#39;Size&#39;])</p>
<blockquote>
</blockquote>
<h1 id="카이제곱-검정을-stat-함수를-통해-구현">카이제곱 검정을 stat 함수를 통해 구현</h1>
<h1 id="chi2_contingency를-통해-카이제곱통계량-p-value를-출력할-수-있습니다">chi2_contingency를 통해, 카이제곱통계량, p-value를 출력할 수 있습니다.</h1>
<p>stats.chi2_contingency(observed=result)</p>
<blockquote>
</blockquote>
<h1 id="각-값들을-별도로-보기">각 값들을 별도로 보기</h1>
<h1 id="카이제곱-검정-통계량-pvalue-자유도를-확인할-수-있습니다">카이제곱 검정 통계량, pvalue, 자유도를 확인할 수 있습니다.</h1>
<p>stats.chi2_contingency(observed=result)[0]</p>
<blockquote>
</blockquote>
<h1 id="p-value-는-우연에-의해-나타날-확률에-대한-지표입니다-1">p-value 는 우연에 의해 나타날 확률에 대한 지표입니다.</h1>
<h1 id="p-value가-005-보다-크다--우연히-일어났을-가능성이-높다--인과관계가-없다고-추정-1">p-value가 0.05 보다 크다 = 우연히 일어났을 가능성이 높다 = 인과관계가 없다고 추정</h1>
<h1 id="여기서-p-value-값은-005-보다-크므로-인과관계가-없다고-추정할-수-있습니다-1">여기서 p-value 값은 0.05 보다 크므로, 인과관계가 없다고 추정할 수 있습니다.</h1>
<h1 id="대립가설-기각-1">대립가설 기각</h1>
<p>stats.chi2_contingency(observed=result)[1]</p>
<blockquote>
</blockquote>
<h1 id="자유도와-유의수준을-통해-귀무가설-기각-여부를-판단하기도-합니다">자유도와 유의수준을 통해 귀무가설 기각 여부를 판단하기도 합니다.</h1>
<h1 id="자유도란-굉장히-복잡한-개념이므로-변수1-그룹의-수-1변수2-그룹의-수-1-가-되겠습니다">자유도란, 굉장히 복잡한 개념이므로,,, (변수1 그룹의 수-1)*(변수2 그룹의 수-1) 가 되겠습니다.</h1>
<h1 id="13--3-이-도출되었습니다">1*3 = 3 이 도출되었습니다.</h1>
<p>stats.chi2_contingency(observed=result)[2]</p>
<h2 id="5-summary">5. Summary</h2>
<ul>
<li><strong>A/B 테스트</strong>라는 방법론을 활용할땐 통계개념(<strong>가설 설정</strong>, <strong>통계적 의미 해석</strong>($p-value$), <strong>가설 검정</strong>(T검정, 카이제곱검정))을 사용해야 한다.</li>
<li><strong>A/B 테스트는</strong> 5단계로 진행된다.</li>
<li><strong>현행 데이터 탐색 → 가설 설정 → 유의수준 설정 → 실험 → 해석</strong></li>
<li><strong>귀무가설</strong>은 차이가 없거나 유의미한 <strong>차이가 없는</strong> 경우의 가설<strong>(=버릴 가설)</strong>이다.</li>
<li><strong>대립가설</strong>은 차이가 있는 경우의 가설이다.</li>
<li><strong>$p-value$</strong>는 어떠한 사건이 <strong>우연히 발생할 확률</strong>이다.</li>
<li><strong>$p-value$&lt;0.05 = 우연히 일어났을 가능성이 거의 없다 = 인과관계 &#39;⭕&#39;라고 추정 = 대립가설 채택</strong></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-선형회귀 정리]]></title>
            <link>https://velog.io/@__hj______/TIL-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@__hj______/TIL-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Wed, 05 Jun 2024 04:14:13 GMT</pubDate>
            <description><![CDATA[<h1 id="선형회귀-정리">선형회귀 정리</h1>
<h2 id="선형회귀의-가정">선형회귀의 가정</h2>
<ul>
<li>머신러닝모델 중에 선형회귀는 이해하기 쉽고 방법도 쉬운 장점이 있지만, 말 그대로 <strong>X-Y변수간의 선형적 관계가 좋아야만 좋은 성능</strong>을 낸다. 선형회귀의 가정에 대해 알아보자.</li>
</ul>
<blockquote>
<h3 id="1-선형성linearity">1. 선형성(Linearity)</h3>
<p>: 종속 변수(Y)와 독립 변수(X)간에 선형 관계가 존재해야 한다.
<img src="https://velog.velcdn.com/images/__hj______/post/02a3b206-261d-4b37-bc77-07022bd35808/image.png" alt="">
= Weight vs Height는 선형성이 있다.</p>
</blockquote>
<blockquote>
<h3 id="2-등분산성homoscedasticity">2. 등분산성(Homoscedasticity)</h3>
<p>: 오차의 분산이 모든 수준의 독립 변수에 대해 일정해야 한다. 즉, 오차가 특정 패턴을 보여서는 안되며, 독립 변수의 값에 상관없이 일정해야한다.
<img src="https://velog.velcdn.com/images/__hj______/post/ed4ca8f2-3cb8-4892-9e4e-d02e6e8f623d/image.png" alt="">
    * X축 : 독립변수, Y축 : 에러(오차)</p>
</blockquote>
<blockquote>
<h3 id="3-정규성normality">3. 정규성(Normality)</h3>
<p>: 오차 항은 정규 분포를 따라야 한다.
<img src="https://velog.velcdn.com/images/__hj______/post/d416f860-7569-4c16-aab3-cd375ce5bae1/image.png" alt="">
= 선형 회귀를 기준으로 데이터들이 균일하게 <strong>좌우 대칭</strong>으로 분포해야한다.</p>
</blockquote>
<blockquote>
<h3 id="4-독립성independence">4. 독립성(Independence)</h3>
<p>: X변수는 서로 독립적이어야 한다.(=X변수가 여러 개일 때 서로 연관이 없어야 한다.)</p>
<h4 id="1-다중공선성-문제">1) 다중공선성 문제</h4>
<p>① 변수가 많아지면 서로 연관이 있는 경우가 많다. 
② 이처럼 <strong>회귀분석에서 독립변수(X)간의 강한 상관관계가 나타나는 것을 다중공선성(Multicolinearity)문제</strong> 라고 한다.
③ IF 위에서 예시를 들었던 Weight, Height 가지고 다른 Y(ex. 발 사이즈)를 예측한다면 Weight, Height가 서로 연관있는 변수이기 때문에 다중공선성 문제가 나타난다.
<img src="https://velog.velcdn.com/images/__hj______/post/fcf032e9-638e-4747-8d57-0bad025b08d8/image.png" alt=""></p>
<h4 id="2-다중공선성-해결방법">2) 다중공선성 해결방법</h4>
<p>① 서로 상관관계가 높은 변수 중 하나만 선택(산점도 혹은 상관관계 행렬)
② 두 변수를 동시에 설명하는 차원축소(Principle Component Analysis, PCA) 실행하여 변수 1개로 축소
<img src="https://velog.velcdn.com/images/__hj______/post/aad94c40-45cb-4671-9416-6cddb6fef9dd/image.png" alt=""></p>
</blockquote>
<ul>
<li>pairplot 기능을 이용한 산점도 (= 같은 항목은 히스토그램, 다른 항목은 산점도/산점도가 선형회귀를 띄는 데이터로 모델을 만들면 된다.)
<img src="https://velog.velcdn.com/images/__hj______/post/abbaebb9-1d8a-4055-92b5-4292824a0346/image.png" alt=""></li>
<li>heatmap을 이용한 상관관계 행렬</li>
<li>사실 pairplot과 heatmap은 같은걸 말하고자 한다. 그냥 둘 중에 편한거 사용해서 상관관계를 비교하면 된다.
<img src="https://velog.velcdn.com/images/__hj______/post/f18b15c7-c4a8-41ed-9cbd-758ad7716e9d/image.png" alt=""></li>
<li>PCA(Principle Component Analisys)를 이용한 차원축소</li>
<li><strong>주 성분</strong>(데이터의 공통점을 파악한 뒤 그걸 설명하는 하나의 축-<strong>PCA 1st dimension</strong>. ex.몸무게와 키를 설명하는건 체격이 될 수 있다.)을 만들고, 원래는 두개인 데이터를 축 하나로 설명하는 것이다.</li>
<li>즉, <strong>변수 두개 쓸거를 하나로 합칠 수 있다.</strong>(=공통점만 뽑아서 특성으로 쓸거야!)</li>
<li>주 성분은 데이터를 100% 설명하진 않는다.</li>
</ul>
<h2 id="선형-회귀-정리">선형 회귀 정리</h2>
<h3 id="장점">장점!</h3>
<ul>
<li>직관적이며 이해하기 쉽다.<ul>
<li>X-Y관계를 정량화 할 수 있다.</li>
<li>모델이 빠르게 학습된다.(가중치 계산이 빠르다.) → 행렬 계산<h3 id="단점">단점!</h3>
</li>
</ul>
</li>
<li>X-Y간의 선형성 가정이 필요하다.
  (if 선형성이 없다면, 선형성을 가지도록 데이터를 가공하거나, 선형성 있는 데이터를 가져오거나, 다른 모델을 선택해야한다.)<ul>
<li>평가지표가 평균(mean)을 포함하기에 이상치에 민감하다.
 (이상치가 크면, 평균이 커지므로 이상치 처리가 필수다.)</li>
<li>범주형 변수를 인코딩시 정보 손실이 일어난다.
  (ex. 서울, 경기 → 0, 1 =&gt; 정보 특색이 없어짐)<h4 id="python-패키지">Python 패키지</h4>
<ul>
<li><code>sklearn.linear_model.LinearRegression</code></li>
</ul>
</li>
</ul>
</li>
</ul>
<h1 id="데이터-프로세스-과정">데이터 프로세스 과정</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/bf1fc26d-a307-45ab-8139-e9e47d018dbc/image.png" alt=""></p>
<blockquote>
<ol>
<li>데이터 수집</li>
<li>데이터 전처리
 1) 이상치 처리
 2) 결측치 처리
 3) 인코딩 (범주형 데이터 → 수치화)
 4) 스케일링 (수치형 데이터의 단위를 맞춰주는 것)
 5) 데이터 분리</li>
<li>EDA(탐색적 데이터 분석)
 1) 기술통계
 2) 시각화</li>
<li><strong>🌟모델링&amp;평가🌟</strong>
: ex. 평가 - 회귀(MSE)
 1) 최적화</li>
<li>배포</li>
</ol>
</blockquote>
<p>여기까지가 선형회귀분석이었다!!!!!!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-다중선형회귀분석 실습]]></title>
            <link>https://velog.io/@__hj______/TIL-%EB%8B%A4%EC%A4%91%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80%EC%8B%A4%EC%8A%B5</link>
            <guid>https://velog.io/@__hj______/TIL-%EB%8B%A4%EC%A4%91%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80%EC%8B%A4%EC%8A%B5</guid>
            <pubDate>Tue, 04 Jun 2024 12:55:23 GMT</pubDate>
            <description><![CDATA[<h1 id="선형회귀-심화">선형회귀 심화</h1>
<h2 id="다중선형회귀">다중선형회귀</h2>
<p>: 실제 데이터들은 비선형적 관계를 가지는 경우가 많다. 이를 위해서 X변수를 추가 할 수도, 변형할 수도 있다.
<img src="https://velog.velcdn.com/images/__hj______/post/b3118327-9818-4e2e-9f6b-f2d19d5c939f/image.png" alt=""></p>
<blockquote>
<p><img src="https://velog.velcdn.com/images/__hj______/post/82a33c98-0ca3-4326-a45d-8a3236a7f448/image.png" alt="">
여기에서 제곱을 하거나, X변수가 추가되면 그게 바로 <strong>다중선형회귀</strong>이다.
ex) X = df[[&#39;&#39;]] &#39;&#39;안에다가 여러개 넣으면 된다.</p>
</blockquote>
<h2 id="범주형-데이터-사용하기">범주형 데이터 사용하기</h2>
<h3 id="범주형-데이터-vs-수치형-데이터">범주형 데이터 vs 수치형 데이터</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/71cd4c30-7e3d-4137-af34-aafdeffd09cc/image.png" alt=""></p>
<p>1) <strong>범주형 데이터</strong>
    - <strong>순서형 자료</strong> : 자료의 순서가 의미 있음!
        ex) 학점(A,B,C,D,F &gt; 0, 1, 2, 3, 4 등으로 변경), 등급
    - <strong>명목형 자료</strong> : 자료의 순서가 의미 없음!
        ex) 혈액형, 성별</p>
<p>2) <strong>수치형 데이터</strong>
    - <strong>연속형 데이터</strong> : 두 개의 값이 무한한 개수로 나누어진 데이터
        ex) 키, 몸무게
    - <strong>이산형 데이터</strong> : 두 개의 값이 유한한 개수로 나누어진 데이터
        ex) 주사위 눈, 나이</p>
<h3 id="범주형-데이터-실습">범주형 데이터 실습</h3>
<ul>
<li>머신이는 데이터 선형회귀를 훈련 시켰지만 성능이 별로 좋지 않다는 것을 알게 되었다. 그래서 성별과 같은 다른 데이터를 사용하고 싶어졌다. 그런데 문제는 성별데이터는 문자형이어서 숫자로 표현할 방법이 필요해졌다.<blockquote>
<ul>
<li>머신러닝 모델에 데이터를 훈련시키려면 해당 데이터를 숫자로 바꿔야한다.</li>
<li>성별, 날짜와 같은 데이터를 <strong>범주형 데이터</strong>라고 부르며 이를 임의로 0, 1 등의 숫자로 변경할 수 있다. 이것을 <strong>Encoding 과정</strong>이라고 한다.</li>
</ul>
</blockquote>
</li>
</ul>
<h1 id="범주형-데이터-실습-1">범주형 데이터 실습</h1>
<ul>
<li>함수를 쓸 수도 있고, sklearn에서 제공하는 함수를 쓸 수도 있다.</li>
</ul>
<blockquote>
<h4 id="1-데이터-생성-및-라이브러리-설치">1) 데이터 생성 및 라이브러리 설치</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/f0b3f916-18a6-4ca7-ae50-29aa3502cad2/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="2-선형회귀모델을-불러오고-데이터-훈련하기">2) 선형회귀모델을 불러오고 데이터 훈련하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/2dceed13-7b27-4615-9360-ecbcb70f1532/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="3-가중치와-편향-구하기">3) 가중치와 편향 구하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/dd3d157e-8837-40d0-bb2d-ceb86ba81fe7/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="4-예측-컬럼-만들기">4) 예측 컬럼 만들기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/185285cc-de33-44f9-9ed7-208936af503d/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="5-데이터프레임-확인하기">5) 데이터프레임 확인하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/0841ba35-71e6-4b69-8a67-132f1e2b13a2/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="6-명목형-데이터인-sex를-수치형-데이터로-변환하기">6) 명목형 데이터인 &#39;sex&#39;를 수치형 데이터로 변환하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/1e545148-db1e-45ed-bb85-ba0bebd61602/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="7-모델-설계도-가져오기">7) 모델 설계도 가져오기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/91eddc59-9874-499b-ac41-065583c5cebd/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="8-데이터-집어넣고-학습시키기">8) 데이터 집어넣고 학습시키기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/8dd010d3-e753-4089-9ea2-7f659b0f4e46/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="9-예측-데이터-만들기">9) 예측 데이터 만들기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/13bcefed-c485-4d03-ba7d-b2b404c284f4/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="10-mse-계산완료-평가하기">10) MSE 계산완료! 평가하기!</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/8ce855f3-60e1-4526-95e0-16b8a04b931f/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="11-r-square-계산완료-평가하기">11) R Square 계산완료! 평가하기!</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/278250e0-0320-41a4-aedd-534db160345e/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="12-분석하기">12) 분석하기</h4>
<p>MSE와 R Square를 비교하였을 때, 큰 차이가 없었다.
즉, 성별은 tip에 영향을 크게 주지 않는다는 것이다.
<img src="https://velog.velcdn.com/images/__hj______/post/7339a082-efe1-4eb5-82f8-fdd44c66f25f/image.png" alt="">
<strong>전체 데이터의 모든 항목에 대해 비교한 후, 의미가 있을 데이터를 머신러닝 모델에 집어넣어야한다.</strong></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-단순선형회귀분석 실습]]></title>
            <link>https://velog.io/@__hj______/TIL-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D-%EC%8B%A4%EC%8A%B5</link>
            <guid>https://velog.io/@__hj______/TIL-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D-%EC%8B%A4%EC%8A%B5</guid>
            <pubDate>Tue, 04 Jun 2024 10:37:23 GMT</pubDate>
            <description><![CDATA[<h1 id="선형회귀분석-실습">선형회귀분석 실습</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/fb75fe61-ef07-4b3b-bc0f-e0fe2ef43844/image.png" alt=""></p>
<h2 id="data-science-python-library">Data Science Python Library</h2>
<ul>
<li><code>scikit-learn</code>: Python 머신러닝 라이브러리</li>
<li><code>numpy</code>: Python 고성능 수치 계산을 위한 라이브러리</li>
<li><code>pandas</code>: 테이블 형 데이터를 다룰 수 있는 라이브러리</li>
<li><code>matplotlib</code>: 대표적인 시각화 라이브러리, 그래프가 단순하고 설정 작업 많음</li>
<li><code>seaborn</code>: matplot기반의 고급 시각화 라이브러리, 상위 수준의 인터페이스를 제공</li>
</ul>
<h2 id="parameter-attributes-methods">Parameter, Attributes, Methods</h2>
<ul>
<li><p><strong>Parameter : 입력 함수 값</strong>
  ex 1) fit.intercept : bool, default = True
  ex 2) copy_X : bool, default = True
  ex 3) n_jobs : int, default = True
  ex 4) positive : bool, default = False</p>
</li>
<li><p><strong>Attributes : 모델이 가진 속성</strong>
  ex 1) coef_ : array of shape (n_features,) or (n_targets, n_features)
  ex 2) rank : int
  ex 3) singular : array of shape min(X,y),)
  ex 4) intercept : float or array of shape (n_targets,)
  ex 5) n_features_in_ : int
  ex 6) feature_names_in_ : ndarray of shape (n_features_in_,)</p>
</li>
<li><p><strong>Methods : 지원하는 기능</strong>
  ex 1) <code>fit(X,y[,sample_weight])</code> : Fit linear model. 훈련한다, 적합한다.
  ex 2) <code>get_metadata_routing()</code> : Get metadata routing of this object
  ex 3) <code>get_params([deep])</code> : Get parameters for this estimator.
  ex 4) <code>predict(X)</code> : Predict using the linear model.
  ex 5) <code>score(X,y[,sample_weight])</code> : Return the coefficient of determination of the prediction.
  ex 6) <code>set_fit_request(*[, sample_weight])</code> : Request metadata passed to the <code>fit</code> method.
  ex 7) <code>set_params(**params)</code> : Set the parameters of this estimator.
  ex 8) <code>set_score_request(*[, sample_weight])</code> : Request metadata passed to the <code>score</code> methods.</p>
</li>
</ul>
<h2 id="자주-쓰는-함수">자주 쓰는 함수</h2>
<ul>
<li><code>sklearn.linear_model.LinearRegression</code> : 선형회귀 모델 클래스<ul>
<li><code>coef_</code>: 회귀 계수(가중치, $w1$)</li>
<li><code>intercept</code>: 편향(bias, $w0$)</li>
<li><code>fit</code>: 데이터 학습(값을 넣어줘)</li>
<li><code>predict</code>: 데이터 예측</li>
<li><code>help()</code> : 원하는 정보를 검색</li>
</ul>
</li>
</ul>
<blockquote>
<p>❗항상 <code>fit</code>을 먼저 사용해서 값을 넣은 뒤에 <code>coef_</code>, <code>intercept</code>등을 사용해야만 한다.</p>
</blockquote>
<h2 id="1-키-몸무게-데이터-실습">1. 키-몸무게 데이터 실습</h2>
<blockquote>
<h4 id="1-데이터-생성-및-라이브러리-설치">1) 데이터 생성 및 라이브러리 설치</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/d3689c7a-6c76-49fd-8560-4b98b4d70fe0/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="2-산점도-확인하기">2) 산점도 확인하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/1a5e4707-e293-4f36-9716-1a867e6ffd34/image.png" alt="">
선형회귀 형태를 띄고 있다.</p>
</blockquote>
<blockquote>
<h4 id="3-선형회귀-모델-불러오고-데이터-훈련하기">3) 선형회귀 모델 불러오고 데이터 훈련하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/25b96ae9-25e9-45b2-9bdb-2fdbe0862c69/image.png" alt=""></p>
</blockquote>
<pre><code>from sklearn.linear_model import LinearRegression
# 선형회귀 모델 불러와줘
model_lr = LinearRegression()
# 위에 저게 너무 기니까 이렇게 줄여서 부를게
X = body_df[[&#39;weights&#39;]]
y = body_df[[&#39;heights&#39;]]
# 데이터프레임 형태 고대로 X랑 y라는 이름으로 부를게.</code></pre><p><img src="https://velog.velcdn.com/images/__hj______/post/5c0c000d-9bd4-4d3b-8ad0-405fbbbb91db/image.png" alt=""></p>
<pre><code>model_lr.fir(X=X, y=y)
# 선형회귀 모델을 만들건데, X값에 X라는 데이터를 넣고, y값에 y라는 데이터를 넣어.
w1 = model_lr.coef_[0][0]
# 이차원 구조니까 따로 써줄게. 근데 이거 가중치를 w1이라고 부를게.
w0 = model_lr.intercept_
# bias(편향)을 w0이라고 부를래.
print(&#39;y = {}x {}&#39;.format(w1.round(2), w0.round(2)))
# w1을 첫번째 칸, w0을 두번째 칸에 넣어서 값을 뽑아줘.</code></pre><p><strong><em>= 즉, y(heights)는 x(weights)에 0.86을 곱한 뒤, 109.37을 더하면 된다.</em></strong></p>
<blockquote>
<h4 id="4-y--086x--10937을-활용하여-기존-데이터에-예측컬럼-추가">4) y = 0.86X + 109.37을 활용하여 기존 데이터에 예측컬럼 추가</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/92e411ee-7e14-47fe-9e6b-020807b16796/image.png" alt=""></p>
</blockquote>
<h4 id="4-1-predict-함수를-활용하여-예측-컬럼-추가">4-1) predict 함수를 활용하여 예측 컬럼 추가</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/e04dff3a-6cc3-4243-969b-fcb2939ddaba/image.png" alt=""></p>
<blockquote>
<h4 id="5-error-값을-계산">5) Error 값을 계산</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/4747a681-0cd1-4cac-baf5-dd9233f24528/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="6-양수로-만들기-위해서-제곱">6) 양수로 만들기 위해서 제곱!</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/2f305329-c399-4d57-b255-721905c2e2c0/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="7-mse-계산-완료">7) MSE 계산 완료!</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/0c46275a-62e6-42da-b21d-17af5acc91b5/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="8-r-square-계산-완료">8) R Square 계산 완료!</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/b0c8f3da-f8e1-4534-aadf-a7121179c068/image.png" alt="">
= 88%의 설명력을 가지는 모델이다.</p>
</blockquote>
<blockquote>
<h4 id="9-산점도로-시각화">9) 산점도로 시각화</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/feac2a15-9471-4337-a4c5-74540f5983ad/image.png" alt=""></p>
</blockquote>
<p>이렇게 하면 선형회귀 모델을 만들고, 평가하는 것 까지 했다!</p>
<h2 id="2-tips-데이터-실습">2. tips 데이터 실습</h2>
<ul>
<li>식당에서 파트타임으로 일하고 있는 머신이는 이번에는 tip 데이터를 가지고 적용해보기로 했다. 돈을 많이 벌고 싶었던 머신이는 전체 금액(X)를 알면 받을 수 있는 팁(Y)에 대한 회귀분석을 진행해 볼 예정이다.</li>
</ul>
<blockquote>
<h4 id="1-데이터-생성-및-라이브러리-설치-1">1) 데이터 생성 및 라이브러리 설치</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/fef2ab7f-df21-4ada-a8f1-81d3a73c37d9/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="2-선형회귀모델을-불러오고-데이터-훈련하기">2) 선형회귀모델을 불러오고 데이터 훈련하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/05985fa2-0395-43b3-8ef2-63db576163b1/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="3-가중치와-편향-구하기">3) 가중치와 편향 구하기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/fb1db1f8-c4ef-4828-92fd-9574159285fe/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="4-예측-컬럼-만들기">4) 예측 컬럼 만들기</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/94c12e1e-887b-4347-9b28-2dc8fed3cb8d/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="5-mse-계산완료">5) MSE 계산완료!</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/9b725f98-0eac-453c-92fd-4fee8a581619/image.png" alt=""></p>
</blockquote>
<blockquote>
<h4 id="6-r-square-계산완료">6) R Square 계산완료!</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/1bd683ed-e179-496b-ab7b-66d543f757e9/image.png" alt="">
= 약 46%의 설명력을 가지는 모델이다.</p>
</blockquote>
<ul>
<li>근데 분야마다 적정치가 있기 때문에 판단할 수 없다.</li>
</ul>
<blockquote>
<h4 id="7-산점도-시각화">7) 산점도 시각화</h4>
<p><img src="https://velog.velcdn.com/images/__hj______/post/96181079-6b9d-4010-8bb8-785de7f810cf/image.png" alt=""></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-회귀분석 평가 지표]]></title>
            <link>https://velog.io/@__hj______/TIL-%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D-%ED%8F%89%EA%B0%80-%EC%A7%80%ED%91%9C</link>
            <guid>https://velog.io/@__hj______/TIL-%ED%9A%8C%EA%B7%80%EB%B6%84%EC%84%9D-%ED%8F%89%EA%B0%80-%EC%A7%80%ED%91%9C</guid>
            <pubDate>Tue, 04 Jun 2024 05:21:23 GMT</pubDate>
            <description><![CDATA[<h1 id="회귀분석-평가-지표">회귀분석 평가 지표</h1>
<h2 id="회귀-평가지표---mse">회귀 평가지표 - MSE</h2>
<ul>
<li>머신이가 똑똑하게 에러를 정의한 것을 바탕으로 회귀식의 평가지표를 만들어보겠어.
  그걸 다시 써보자면!</li>
</ul>
<p>   <strong>1. 에러 정의 방법</strong>
    방법 1) 에러 = 실제 데이터 = 예측 데이터 로 정의하기!
    방법 2) 에러를 제곱하여 모두 양수로 만들기, 다 합치기!
    방법 3) 데이터만큼 나누기</p>
<p>   <strong>2. 에러 정의 방법 수식화</strong></p>
<blockquote>
<pre><code>   $y_i$ = y : 실제 값(true), i : 데이터가 여러개여서 붙어있는 거임, ^:예측 값은 웃음(직선을 통해 추정한 값)</code></pre></blockquote>
<pre><code>   방법1) $\varepsilon = y_i - \hat{y_i}$
        : 실제 값에서 추정 값을 빼면 에러다!
방법2) $\sum\limits_{i=1}^n (y_i - \hat{y_i})^2$
        : y에 숫자를 주루룩 넣어서 모든 에러값을 다 제곱하겠어!
방법3) $\frac{\sum\limits_{i=1}^n (y_i - \hat{y_i})^2}{n}$
        : 그걸 개수로 나눌게</code></pre><blockquote>
<p>이게 바로 <strong>Mean Squared Error(MSE)</strong>이다.
<img src="https://velog.velcdn.com/images/__hj______/post/c213311f-dd61-42a0-acbd-31ebdb12653f/image.png" alt=""></p>
</blockquote>
<p>😈 앞으로 만나는 <strong>숫자 예측 문제</strong>는 ML이건 DL이건 뭘 만들던 간에! 위의 <strong>MSE 지표를 최소화</strong>하는 방향으로 진행하고 평가하게 될거다!!</p>
<h2 id="기타-평가-지표">기타 평가 지표</h2>
<blockquote>
<h3 id="rmse">RMSE</h3>
<p>: <strong>MSE에 Root</strong>를 씌워서 제곱 된 단위를 다시 맞추는거!!
    <img src="https://velog.velcdn.com/images/__hj______/post/0ee7c3eb-6a4a-4f78-8e07-59ca14773759/image.png" alt=""></p>
</blockquote>
<blockquote>
<h3 id="mae">MAE</h3>
<p>: <strong>절대 값</strong>을 이용하여 오차를 계산하는거!!
    <img src="https://velog.velcdn.com/images/__hj______/post/88c783c9-a6b1-4aba-a7d8-d9d5b6b989a1/image.png" alt=""></p>
</blockquote>
<h2 id="선형회귀만의-평가지표---r-square">선형회귀만의 평가지표 - R Square</h2>
<ul>
<li>숫자를 예측하는 회귀분석에서 선형회귀만을 평가하는 지표가 1개 더 있다.</li>
<li>어떤 값을 예측한다는 것은 어림짐작으로 평균값보다 예측을 잘해야한다는 것을 의미한다.</li>
<li>ex. 100kg 의 예측 키는 195cm(Y pred) 였는데 실제 키는 180cm(Y true)였다. 
  → 때려맞춰보는거다.</li>
<li>ex. 전체 키 값 다 갖고와서 n으로 나눈다. 그럼 뭐 대량 160cm 였다고 했을 때, 오차가 클뿐이지 말이 되긴한다. 
  → 대표값으로 때려맞춰보는거다.</li>
</ul>
<h3 id="기초용어">기초용어</h3>
<ul>
<li>$y_{i}$: 특정 데이터의 실제 값</li>
<li>$\bar{y}$: 평균 값</li>
<li>$\hat{y}$: 예측, 추정한 값
<img src="https://velog.velcdn.com/images/__hj______/post/614ee75e-08b4-40df-9b4c-03ca93c40149/image.png" alt=""><blockquote>
<h3 id="r-square의-정의">R Square의 정의</h3>
<p><img src="https://velog.velcdn.com/images/__hj______/post/b8270e5a-62fa-41b8-9613-549011e7ef12/image.png" alt=""></p>
</blockquote>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/__hj______/post/5c455120-527c-4a5c-95d9-faf7db01ff69/image.png" alt=""></p>
<blockquote>
<ul>
<li><p>3번의 데이터 값
  SST = 174²
  SSE = 5²
  SSR = 169²
  R² = 169² / (169 + 5)²</p>
<p>  해당 값에 대한 설명력 = 94%
  단, 모든 데이터에 대해서 위 계산을 수행해야 해당 선형회귀에 대한 결과값이 나온다.</p>
</li>
</ul>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-선형회귀]]></title>
            <link>https://velog.io/@__hj______/TIL-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80</link>
            <guid>https://velog.io/@__hj______/TIL-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80</guid>
            <pubDate>Mon, 03 Jun 2024 11:45:43 GMT</pubDate>
            <description><![CDATA[<h1 id="선형회귀의-사례">선형회귀의 사례</h1>
<h2 id="몸무게와-키-상관관계-찾아내기">몸무게와 키 상관관계 찾아내기</h2>
<ul>
<li>방정식을 배운 머신이는 몸무게와 키의 데이터를 획득했다. 일정하게 증가하는 패턴이 있어서 미리 몸무게를 알면 키를 알 수 있을 것이라 생각했다.</li>
</ul>
<pre><code>weights = [87,81,82,92,90,61,86,66,69,69]
heights = [187,174,179,192,188,160,179,168,168,174]</code></pre><blockquote>
<p>키와 몸무게 간의 산점도
<img src="https://velog.velcdn.com/images/__hj______/post/25657251-0dcd-42cc-a245-caa57406a16a/image.png" alt=""></p>
</blockquote>
<ul>
<li>머신이는 키와 몸무게에 대한 데이터가 너무 많아서 두 점을 이어 직선을 만들지 고민 되었지만, 수 많은 점들을 관통하는 여러개의 직선을 많이 그려보기로 했다.</li>
</ul>
<blockquote>
<p><img src="https://velog.velcdn.com/images/__hj______/post/40fc030e-7a55-403a-817f-9664dc1c19a1/image.png" alt=""></p>
</blockquote>
<ul>
<li>어떤 직선이 현재 데이터를 잘 설명한다고 할 수 있나?
= 빨간색 그래프가 적절해 보이지만, 이렇게 대강 직선을 그으면 적절한 그래프를 찾기 어렵다.</li>
</ul>
<h3 id="data-scientific-한-발상">Data Scientific 한 발상</h3>
<ul>
<li>직선과 점 사이의 거리를 계산하는 것이다. 이를 Error라고 정의하고 최소의 Error인 직선을 그리면 된다.</li>
</ul>
<p>방법 1) 실제 데이터 값 - 직선의 예측 값 = Error</p>
<ul>
<li>①번 실제 데이터 : 187, 예측 데이터 : 187 Error:0</li>
<li>②번 실제 데이터 : 174, 예측 데이터 : 181 Error:-7</li>
<li>③번 실제 데이터 : 174, 예측 데이터 : 169 Error:+5
<img src="https://velog.velcdn.com/images/__hj______/post/2f10f38d-4beb-4b05-b107-731a0b697475/image.png" alt=""></li>
</ul>
<blockquote>
<p>But❗ 선분을 기준으로 위에 있는 데이터의 거리를 계산하면 양수이지만, 아래에 있는 데이터는 음수가 된다. 이 경우, 모든 에러를 합치면 서로 상쇄되는 문제가 있었다. 따라서, 음수를 양수로 만들기 위해 제곱을 하는 방법이 있다는걸 생각해 냈다.</p>
</blockquote>
<p> 방법 2) 각각 Error를 제곱하여 모두 더하기</p>
<ul>
<li>①,②,③의 제곱 합 : 49+25=71
<img src="https://velog.velcdn.com/images/__hj______/post/921e4a75-4ea5-4246-85f4-3caf7505cbe9/image.png" alt=""></li>
</ul>
<blockquote>
<p>But❗나중에 데이터를 더 수집할 예정인데, 데이터가 더 늘어날 수록(④,⑤) 에러는 자연스럽게 값이 커질 수 밖에 없는 것이다! 그래서 데이터의 갯수로 나누고 제곱을 풀기 위해서 root를 씌우기로 했다.</p>
</blockquote>
<p> 방법 3) 전체 Error 합에 데이터의 갯수로 나누기</p>
<ul>
<li><p>①,②,③만 고려한다면 71/3 → 23.7 = <strong>오차 합의 평균</strong>
<img src="https://velog.velcdn.com/images/__hj______/post/1965b01b-49ff-4680-891a-b9b2d3e87ff9/image.png" alt=""></p>
<blockquote>
<p>즉❗</p>
<ul>
<li>데이터를 관통하는(=잘 설명하는) 직선을 그었을 때, 직선이 &#39;예측하는 모델&#39;이라 생각하고, 실제 값과 예측 값의 차이가 작을 수록 &#39;예측을 잘 했다!&#39; 이다.<ul>
<li>문제는, 어떤 값은 실제값과 예측값의 차이가 양수이지만, 어떤 값은 음수가 된다.</li>
</ul>
</li>
<li>서로 상쇄되지 않도록, <strong>제곱</strong>을 씌워 음수를 양수화한다.</li>
<li>데이터가 늘어날수록, 데이터의 오차가 생긴다. = 데이터가 늘어날수록 오차의 합이 증가한다. 그래서, <strong>오차 합을 갯수로 나눈다.</strong></li>
</ul>
</blockquote>
</li>
</ul>
<h1 id="선형회귀-이론">선형회귀 이론</h1>
<ul>
<li>머신이는 몸무게를 알면 키를 알 수 있을 것이라 생각했다. 이를 이용하여 방정식을 세우고 용어를 정리해보겠어.</li>
</ul>
<h2 id="선형회귀-용어-정리">선형회귀 용어 정리</h2>
<ul>
<li><p>공통</p>
<ul>
<li>Y는 종속 변수, 결과 변수 (<strong>= 알고 싶은 값</strong>)</li>
<li>X는 독립 변수, 원인 변수, 설명 변수 (<strong>= Y에 영향을 주는 값</strong>)</li>
</ul>
</li>
<li><p>통계학에서 사용하는 선형회귀 식
<img src="https://velog.velcdn.com/images/__hj______/post/2bde133e-3639-49a6-8ad4-14777406e3ed/image.png" alt=""></p>
<ul>
<li>$\beta_0$: 편향(Bias) (=절편)</li>
<li>$\beta_1$: 회귀 계수 (=기울기)</li>
<li>$\varepsilon$: 오차(에러), 모델이 설명하지 못하는 Y의 변동성</li>
</ul>
</li>
<li><p>머신러닝/딥러닝에서 사용하는 선형회귀 식
<img src="https://velog.velcdn.com/images/__hj______/post/9ec610d2-2b92-413d-a1e3-beadadb96ca5/image.png" alt=""></p>
<ul>
<li>$w$: 가중치</li>
<li>b: 편향(Bias)</li>
</ul>
</li>
</ul>
<blockquote>
<ul>
<li>머신러닝/딥러닝 모델에서 오차 항은 명시적으로 다루지 않음</li>
</ul>
</blockquote>
<blockquote>
<p>❗결국❗
두 수식이 전달하려고 하는 의미는 같다. 회귀 계수 혹은 가중치의 값을 알면 X가 주어졌을 때, Y를 알 수 있다는 것이다! 
(ex. y=5x+5, x=1일때, y=10이다.) 
우리는 편의를 위해 X의 계수는 가중치라고 지칭할거다!</p>
</blockquote>
<p>** - 몸무게와 키 데이터를 이용하여 선형회귀 식을 만들면, y=0.86x+109.37이다.
= 즉, 1kg 증가할때마다 키가 0.86cm 증가한다는 것이다.**</p>
<h2 id="⚠️주의">⚠️주의</h2>
<p>1) $\beta_0$ 는 1차 방정식의 Y절편에 해당한다. 근데 $\varepsilon$ 얘는 왜 따로있냐?</p>
<ul>
<li>선분위에 모든 데이터가 있는건 없다. 실제 데이터와 예측 데이터가 똑같은 완벽한 데이터는 없기 때문에, <strong>Error를 통해 보완</strong>하는거다.</li>
</ul>
<p>2) 가중치($w$)를 알게되면 X값에 대해 Y값을 예측할 수 있다는 건데, 그럼 가중치는 어째구함?</p>
<ul>
<li>이게바로 머신러닝을 관통하는 질문이다. 데이터가 충분히 있다면 가중치를 <strong>&#39;추정&#39;</strong>할 수 있다. 뒤에 따로 설명하겠지만, 간단하게 말하자면 그래프를 수도 없이 그려서 에러를 &#39;최소화&#39;하는 직선을 구하는 것이라고 할 수 있다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-통계기초1]]></title>
            <link>https://velog.io/@__hj______/TIL-statistics1</link>
            <guid>https://velog.io/@__hj______/TIL-statistics1</guid>
            <pubDate>Mon, 03 Jun 2024 08:07:40 GMT</pubDate>
            <description><![CDATA[<h1 id="통계야-놀쟈☆">통계야 놀쟈,,,☆</h1>
<h2 id="1-데이터의-종류-분류">1. 데이터의 종류 분류</h2>
<blockquote>
<p>데이터의 생김새에 따라 시각화, 해석, 통계모델 결정에 중요한 역할을 한다.</p>
</blockquote>
<p> <img src="https://velog.velcdn.com/images/__hj______/post/e712512a-38ee-42b5-84b6-e3624e1acef6/image.png" alt=""></p>
<p> <img src="https://velog.velcdn.com/images/__hj______/post/099e819f-fb70-465c-92b1-a11eb08096bb/image.png" alt=""></p>
<h2 id="2-편차-분산-표준편차-표본분포">2. 편차, 분산, 표준편차, 표본분포</h2>
<ul>
<li><p>데이터프레임 : 행과 열로 구성된 이차원의 행렬</p>
</li>
<li><p>테이블이 주어졌을 때, 가장 먼저 해야하는 일 : 각 컬럼의 &#39;대표값&#39;을 구하는 것.</p>
</li>
<li><p>대표값 : 평균, 중앙값, 최빈값</p>
<pre><code># 평균
df[&#39;점수&#39;].mean()

# 중앙값
df[&#39;점수&#39;].median()

# 최빈값
df[&#39;점수&#39;].mode()</code></pre></li>
</ul>
<blockquote>
<p><img src="https://velog.velcdn.com/images/__hj______/post/c4b6c1da-07aa-49cb-9917-261bbb33d042/image.png" alt="">
 : 두 그래프의 평균이 같다. 하지만 분포가 다르다. </p>
</blockquote>
<ul>
<li>평균, 중앙값, 최빈값 : <strong>&#39;where=(어디에 존재하는가)&#39;</strong>의 개념</li>
<li>분산, 편차 : <strong>&#39;How=(어떻게 존재하는가? 얼마나 퍼져있는가?)&#39;</strong>의 개념</li>
</ul>
<blockquote>
<p><strong>편차(deviation)</strong> : 하나의 값에서 평균을 뺀 값 = 평균으로부터 얼마나 떨어져있어?</p>
</blockquote>
<pre><code>- A 학생의 영어점수: 30점
- B 학생의 영어점수: 70점
- C 학생의 영어점수: 80점
- A,B,C 학생의 평균 영어점수: 60점

&gt; A 학생의 편차: -30
&gt; B 학생의 편차: +10
&gt; C 학생의 편차: +20

학생 전체의 편차를 나타내기 위해 각 학생들의 편차를 모두 더하게 되면 0이 나오게 됩니다.
따라서 편차로는 반 전체의 점수 분포를 정확히 알 수가 없기에 나온 개념이 분산입니다.</code></pre><blockquote>
<p><strong>분산(variance)</strong> : 편차의 합이 0으로 나오는 것을 방지하기 위해 생성된 개념 = <strong>편차 제곱합의 평균</strong></p>
</blockquote>
<pre><code>- A 학생의 편차 제곱: (-30)^2 = 900
- B 학생의 편차 제곱: (+10)^2 = 100
- C 학생의 편차 제곱: (+20)^2 = 400 

&gt; 편차 제곱합: 1400
&gt; 편차 제곱합의 평균(분산): 1400/3 = 466 

분산은 466이 도출되었습니다. 그러나 점수라는 값에 제곱이 들어가며(점수에 제곱..!)
그 단위가 달라지게되었어요. 실제 데이터가 어느정도로 차이가 있는 지 알기 어렵게 되었습니다. 
이를 해결하기 위해 도입된 개념이 표준편차입니다. </code></pre><blockquote>
<p><strong>표준편차</strong> : 분산에 제곱근을 씌워준 값. (=원래 단위로 되돌리기 = standard deviation(σ))
<img src="https://velog.velcdn.com/images/__hj______/post/29848958-6264-48b1-9fee-12ce5017d1bc/image.png" alt=""></p>
</blockquote>
<pre><code>- 분산: 466
- 분산의 제곱근 = 표준편차 = 약 21.6 이 되겠습니다. </code></pre><p>= 즉, 반 전체의 영어점수가 약 20만큼 퍼져있다.(분산되어 있다.)라고 해석할 수 있다.</p>
<h2 id="3-모집단-표본-표본분포">3. 모집단, 표본, 표본분포</h2>
<ul>
<li><p>모집단 : 어떤 데이터 집합을 구성하는 전체 대상</p>
</li>
<li><p>표본 : 모집단 중 일부. 모집단의 부분집합
<img src="https://velog.velcdn.com/images/__hj______/post/bfb89921-d154-49b8-ac6b-72891b78292d/image.png" alt=""></p>
</li>
<li><p>표본분포 : 표본의 분포. 표본이 흩어져 있는 정도. 표본통계량으로부터 얻은 도수분포</p>
<ul>
<li><p><strong>표본평균의 분포</strong> : 모집단에서 여러 표본을 추출하고 각 표본의 평균을 계산한다면, 이는 <strong>중심극한정리</strong>에 따라 정규분포에 가까워진다. <strong>이는 표본의 크기가 충분히 크다면 어떤 분포에서도 표본 평균이 정규분포를 따른다는 것을 의미한다.</strong></p>
</li>
<li><p><strong>표본분산의 분포</strong> : 모집단에서 여러 표본을 추출하고 각 표본의 분산을 계산한다면, 이 표본분산들의 분포는 <strong>카이제곱 분포</strong>를 따른다. <strong>이는 모집단이 정규분포를 따를 때 보다 높게 성립된다.</strong></p>
</li>
</ul>
</li>
<li><p>표준오차 : 표본의 표준편차. = 표본평균의 평균과 모평균의 차이</p>
</li>
<li><p><strong>중심 극한 정리</strong> : 표본들을 뽑아서 평균내어 모은게 종모양의 정규분포의 형태를 띄는 원리</p>
</li>
</ul>
<ul>
<li>도수 : 특정 구간에 발생한 값의 수</li>
<li>상대도수 : 특정 도수를 전체 도수로 나눈 비율</li>
<li><strong>도수분포표</strong> : 각 값에 대한 도수와 상대도수를 나타내는 표</li>
<li><strong>히스토그램</strong> : 도수분포표를 활용하여 만든 막대그래프</li>
<li>임의표본추출 : 무작위로 표본을 추출하는 것</li>
<li>편향 : 한쪽으로 치우쳐져 있음</li>
<li>도수분포표 만들기
<img src="https://velog.velcdn.com/images/__hj______/post/5859d862-339c-4eae-87e5-bfbfb3f08e44/image.png" alt="">
<img src="https://velog.velcdn.com/images/__hj______/post/f91c6235-caac-4ee0-913d-9fc6bb1672c4/image.png" alt=""></li>
</ul>
<h2 id="4-정규분포-신뢰구간">4. 정규분포, 신뢰구간</h2>
<blockquote>
<p><img src="https://velog.velcdn.com/images/__hj______/post/797ee3d0-4739-4c08-b86b-c3b5d238a94d/image.png" alt="">
*x는 평균, y는 확률</p>
</blockquote>
<h3 id="1-정규분포-">1) 정규분포 :</h3>
<blockquote>
<p>표본을 선정할 때 그 경우의 수는 매우 많을 것이고 → 중심극한정리에 따라(경우의 수를 평균내어 모아보면) 다음과 같은 종 모양의 분포를 띄게 되는데, 이를 <strong>정규분포</strong>라고 한다.</p>
</blockquote>
<h3 id="2-정규분포의-특징">2) 정규분포의 특징</h3>
<blockquote>
<ul>
<li>분포는 좌우 대칭. 평균치에서 가장 그 확률이 높다.</li>
</ul>
</blockquote>
<ul>
<li>곡선은 각 확률값을 나타내며, 모두 더하면 1이 된다. (동전 앞면 확률 1/2 + 뒷면 확률 1/2 = 1)</li>
<li>정규분포는 평균과 분산(퍼진정도)에 따라 다른 형태를 가진다.</li>
<li><strong>표준정규분포</strong> : <strong>평균 0, 분산 1</strong>을 가지는 경우. (그림의 <strong>붉은색 그래프</strong>)</li>
</ul>
<h3 id="3-표준정규분포의-중요성">3) 표준정규분포의 중요성</h3>
<ul>
<li>위의 그래프에서 각각의 그래프는 평균과 분산값에 따라 다르게 그려진다.</li>
<li>즉, 확률을 계산할 때 힘들다.</li>
<li><strong>표준화</strong> : 분포의 평균과 분산 값을 통일하는 작업</li>
<li><strong>표준화 공식</strong> : 확률변수 x에서 평균 m을 빼고 표준편차로 나누기!
<img src="https://velog.velcdn.com/images/__hj______/post/6f7ee2dc-b98d-45cb-82a4-99f2244a8ad2/image.png" alt=""></li>
</ul>
<blockquote>
<ul>
<li><strong>데이터 분석 시 표준화</strong>가 필요한 경우 : 머신러닝 모델을 만들 때, 데이터의 범위가 많이 차이나는 경우.
ex)
  <img src="https://velog.velcdn.com/images/__hj______/post/ac3dde4c-5626-4e94-a49e-bd3c9e4a6212/image.png" alt=""></li>
</ul>
</blockquote>
<ul>
<li>최근 일주이 접속일수의 1과 결제금액의 1은 같은 의미가 아니다!</li>
<li>근데 파이썬이 해당 값의 의미를 같게 받아들이고 처리할 수 있다!</li>
<li>범위가 큰 데이터의 경우 숫자가 가지는 절대치를 잘못 받아들일 수 있다! (ex. 100억은 100억만큼 기여도가 있어!)</li>
<li>그래서 반드시 표준화를 해야한다!</li>
</ul>
<h2 id="5-신뢰구간-신뢰수준">5. 신뢰구간, 신뢰수준</h2>
<ul>
<li><strong>신뢰구간</strong> : 특정 범위 내에 값이 존재할 것으로 예측되는 영역
  ex. 영어점수가 10점에서 90점 사이 일 것 같아요.</li>
<li><strong>신뢰수준</strong> : 실제 모수를 추정하는데 몇 퍼센트의 확률로 신뢰구간이 실제 모수를 포함하게 되는 확률. 주로 95%와 99%를 이용한다.
  ex. 영어점수가 10점에서 90점 사이에 분포할 확률이 95% 같아요.</li>
</ul>
<blockquote>
<p>&#39;scipy&#39;를 활용하여 95%와 99%의 신뢰구간을 확인하면,
<img src="https://velog.velcdn.com/images/__hj______/post/03f94c39-b6b6-4445-b579-f36a3e2ab37c/image.png" alt="">
= 95%보다 99%의 범위가 더 넓다. 왜냐하면, 그만큼 확률이 높기 때문에 더 큰 범위를 말하는 거다.</p>
</blockquote>
<ul>
<li><strong>해당 데이터에서는 데이터의 양이 적기때문에 모집단 전체를 표본으로 잡았다.</strong></li>
</ul>
<h2 id="6-summary">6. Summary</h2>
<ol>
<li>Python은 데이터의 종류에 따라 관련된 계산을 어떤식으로 수행할 지 결정한다.</li>
<li>데이터의 종류는 대표적으로 <strong>수치형, 범주형 데이터</strong>가 있다.</li>
<li>데이터 <strong>대표값</strong>에는 <strong>평균, 중간값, 최빈값</strong>이 있다.</li>
<li>데이터 <strong>분포</strong>를 보다 명확히 파악하기 위해 <strong>편차, 분산, 표준편차</strong>를 확인한다.</li>
<li>편차는 합이 0이다.</li>
<li>음수값을 없애기 위해 제곱을 취하는 분산의 개념이 도입되었다.</li>
<li>분산은 제곱값으로 그 단위가 달라 표준편차 즉, 제곱근을 씌워 다시 단위를 맞춰줬다.</li>
<li>무수히 많은 데이터의 효과적인 통계분석을 위해 표본추출을 한다.</li>
<li>모집단 : 어떤 데이터의 전체 집합. 표본 : 부분집합</li>
<li><strong>중심극한정리</strong> : 표본의 분포를 가지고 모집단의 분포를 추정하며, 해당 과정에서 무수히 많은 경우의 수의 표본이 생성될 수 있다. 표본 크기가 충분히 크다면 어떤 분포에서도 표본 평균이 정규분포를 따른다.</li>
<li><strong>정규분포</strong> : 종모양. 좌우 대칭의 형태. 평균치에서 그 확률이 가장 높다.</li>
<li><strong>표준정규분포</strong> : 정규분포에서 평균 0, 분산 1을 가지는 경우 &gt; 데이터 분석 시 : 표준화라고 부름</li>
<li><strong>데이터 분석 시 표준화가 필요한 경우</strong> : 머신러닝 모델을 만들 때, 데이터의 범위가 많이 차이나는 경우. &gt; 1이 가지는 무게가 다르다. 범위가 큰 데이터의 경우 숫자가 가지는 절대치를 잘못 받아들일 수 있기 때문.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL-ML(basic)]]></title>
            <link>https://velog.io/@__hj______/TIL-MLbasic</link>
            <guid>https://velog.io/@__hj______/TIL-MLbasic</guid>
            <pubDate>Mon, 03 Jun 2024 03:29:05 GMT</pubDate>
            <description><![CDATA[<h1 id="1-머신러닝이란">1. 머신러닝이란?</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/2e4a3e9e-1ab1-4a6e-8e2c-c9da81d0a482/image.png" alt=""></p>
<ul>
<li><p>AI : 인간의 지능을 요구하는 업무를 수행하기 위한 시스템</p>
</li>
<li><p>Machine Learning : 관측된 패턴을 기반으로 의사 결정을 하기 위한 알고리즘</p>
</li>
<li><p>Deep Learning : 인공신경망을 이용한 머신러닝</p>
</li>
<li><p>Data Science : AI를 포괄하여 통계학과 컴퓨터 공학을 바탕으로 발전한 융합학문</p>
</li>
<li><p>Data Analysis : 데이터 집계, 통계 분석, 머신러닝을 포함한 행위</p>
</li>
</ul>
<blockquote>
<p><strong>Machine Learning</strong>은 기술 통계 등을 통해 집계된 정보로 의사결정을 했던 과거와 달리, <strong>데이터 수집과 처리 기술의 발전으로 대용량 데이터의 패턴을 인식하고 이를 바탕으로 예측, 분류하는 방법론</strong>이다.</p>
</blockquote>
<h2 id="1-머신러닝의-발전-계기">1) 머신러닝의 발전 계기</h2>
<blockquote>
<ul>
<li>통계 : 모집단의 성질을 표본 집단으로 부터 알기 위한 추론 방법.</li>
</ul>
</blockquote>
<ul>
<li><p>비용(돈, 시간 등)의 한계로 통계학은 발전.</p>
</li>
<li><p>인간은 &#39;실수&#39;를 할 수 있다. &gt; 데이터를 기반으로 의사결정을 내리고자 한다. &gt; 머신러닝!</p>
</li>
<li><p>데이터 처리 기술의 발전 &gt; 서비스의 발전, 저장매체(SSD) 가격의 하락</p>
</li>
<li><p>데이터 수집 &gt; 데이터 처리 &gt; ML/DL &gt; 인사이트 도출 에서 데이터 수집이 용이해짐.</p>
</li>
</ul>
<blockquote>
<p>표본 집단의 연구를 통해 모집단을 추측하는 통계학과 달리, <strong>머신러닝은 데이터를 싹 다 수집 후 패턴을 발견해보자!</strong></p>
</blockquote>
<h1 id="2-머신러닝의-종류">2. 머신러닝의 종류</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/fd23dd03-d97f-48d7-b3c3-b7bafadc0a0b/image.png" alt=""></p>
<ul>
<li><p><strong>Supervised Learning(지도 학습)</strong> : 문제의 정답을 모두 알려주고 공부시키는 방법
  ex. 코가 길면 코끼리야! 목이 길면 기린이야!</p>
<ul>
<li><strong>예측/회귀</strong> : 숫자를 맞추는 것</li>
<li><strong>분류</strong> : 범주를 분류하는 것</li>
</ul>
</li>
<li><p><strong>Unsupervised Learning(비지도 학습)</strong> : 답을 가르쳐주지 않고 공부시키는 방법
  ex. 키와 몸무게를보고 니가 알아서 군집 분류해봐! 판단은 내가 할게!</p>
<ul>
<li><strong>연관 규칙</strong> : 장바구니 분석, 조건부확률로 인해 계산하는 방법론, 이커머스에서 많이 사용.<blockquote>
<p>장바구니 분석 : 
기저귀를 사러 간 남편이 맥주를 같이 산다. &gt; 연관이 있다! &gt; 가깝게 배치하여 판매한다!</p>
</blockquote>
</li>
<li><strong>군집</strong> : 두 가지 군집으로 분류할거야. 니가 함 해봐!<pre><code>      ex. 키와 몸무게에 따라 성장 가능성이 있는 집단, 건장한 집단을 분류해봐.</code></pre></li>
</ul>
</li>
<li><p><strong>Reinforcement Learning(강화 학습)</strong> : 보상을 통해 상은 최대화하고, 벌은 최소화하는 방향으로 행위를 강화하는 학습
  ex. 농구 게임을 할 때 골을 넣은 거리가 멀 수록 칭찬을 해주면 &#39;먼게 좋구나!&#39; 라고 학습하고 멀리서 골을 넣는 것.</p>
</li>
</ul>
<h2 id="1-머신러닝-적용-분야">1) 머신러닝 적용 분야</h2>
<ul>
<li><strong>금융</strong> : 신용평가, 사기탐지, 주식 예측</li>
<li><strong>헬스케어</strong> : 질병 예측, 환자 데이터 분석</li>
<li><strong>이커머스</strong> : <ul>
<li>고객 구매 패턴 분석 (ex. 쿠폰을 받고 반응 할 확률?)<ul>
<li>추천 시스템 (ex. 성별 및 연령에 따라 상품 추천 - 30대 남성 : 면도크림 추천)</li>
</ul>
</li>
<li>가격 최적화<ul>
<li>장바구니 분석<blockquote>
<p><strong>&lt;딥러닝&gt;</strong></p>
<ul>
<li><strong>자연어 처리</strong> : 번역, 챗봇, 텍스트 분석</li>
<li><strong>이미지&amp;영상처리</strong> : 얼굴인식(ex. snow AI), 이미지 생성
ex. 콜로라도 주립 박람회 대회 수상작 : 스페이스 오페라극장
<img src="https://velog.velcdn.com/images/__hj______/post/ea48cdc4-4360-4336-8ffd-674ea603091a/image.png" alt=""></li>
</ul>
</blockquote>
</li>
</ul>
</li>
</ul>
</li>
<li>Midjourney &gt; Discord 추가 사용!</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[WIL_5월 마지막주]]></title>
            <link>https://velog.io/@__hj______/WIL5%EC%9B%94-%EB%A7%88%EC%A7%80%EB%A7%89%EC%A3%BC</link>
            <guid>https://velog.io/@__hj______/WIL5%EC%9B%94-%EB%A7%88%EC%A7%80%EB%A7%89%EC%A3%BC</guid>
            <pubDate>Fri, 31 May 2024 14:02:37 GMT</pubDate>
            <description><![CDATA[<h2 id="facts-">FACTS :</h2>
<ul>
<li>사실 지난주에 프로젝트 + 인적성 + 코테 겹쳐서 매우 바빴다가, 이제 프로젝트가 끝났기 때문에 팀이 변경되었다. 그리고 AI역량검사를 쳤다.</li>
</ul>
<h2 id="feelings-">FEELINGS :</h2>
<ul>
<li>지난주에 하루에 2시간씩 자면서 정신없이 일주일을 보내다가.. 갑자기 프로젝트도 한순간에 끝나고, 인적성이랑 코테도 거의 다 쳐서 너무 한가해진 기분이었다.. 그래서 뭔가 공허하고, 해야하는걸 아는데 집중하기 힘들었다.. 강의도 열심히 들으면서 다시 앞을 보고 달려가야한다는걸 아는데, 자꾸 나태해지려고 했다.</li>
</ul>
<h2 id="findings-">FINDINGS :</h2>
<ul>
<li>새로운 팀원분들을 만나뵙게 되었는데, 굉장히 적극적이시고, motive를 주신다! 그리고 무엇보다도, 으쌰으쌰할 수 있는 분위기를 만들어 주셔서 덕분에 이렇게 TIL과 WIL도 꾸준히 쓰게 되었다. 그리고 다른 팀에 계신분들도 만나뵙게 되었다! 번아웃이 올 뻔 했지만, 잘 넘어가고 있는 듯 하다.</li>
</ul>
<h2 id="future-">FUTURE :</h2>
<ul>
<li>항상 적극적으로 임하고, 나도 누군가에게 motive를 줄 수 있는 사람이 될 것이다. 내가 밝으면 주위도 밝아진다는 마인드로 항상 햅삐햅삐하도록 노력할 것이다.</li>
</ul>
<p><strong>+) 소소한 후기</strong>
 하.. 솔직히 이번 주가 나에겐 고비와도 같은 시간이었다..
한순간에 바빴던 일정들이 다 끝나면서 붕 뜨는 듯한 느낌에 
아직 끝나지 않았다는 걸 알지만 체력적으로나 정신적으로나 너무 지쳐있었다..
뭔가 굉장히 열심히는 하는데, 속이 채워지지 않는 &#39;속 빈 강정&#39;처럼 내 자신이 느껴졌다.
그러다 새로운 팀을 만나게 되었고,
내가 너무 생각에 매몰되어 있었구나 라는걸 느꼈다.
처음처럼 즐기듯이 계속 하면 되는데 왜 그렇게 조급해했을까, 복잡하게 생각했을까 라는걸 느꼈다.
주말동안 그동안 못잤던 잠을 푹 자고, 책도 읽으면서 재충전하고 다음주를 맞이해야겠다.</p>
<p><strong>First time, Last time, Every time</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL_20240531]]></title>
            <link>https://velog.io/@__hj______/TIL20240531</link>
            <guid>https://velog.io/@__hj______/TIL20240531</guid>
            <pubDate>Fri, 31 May 2024 13:40:23 GMT</pubDate>
            <description><![CDATA[<p>Hola todos!
Voy a escribirlo en español, porque aún no he tomado todas las lecciones de estadísticas.
Vamos!</p>
<h1 id="codekata">[CODEKATA]</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/a4294b72-48c1-4ca0-9962-edfa10927d47/image.png" alt=""></p>
<p>Mientras revisaba este problema, entendí la zonificación del período.
Por ejemplo, si desea conocer los datos que no incluyen noviembre, puede especificar el período que incluye noviembre como condición y luego volver a extraer los datos que no se encuentran dentro de ese período.</p>
<blockquote>
<p>Y puede usar </p>
</blockquote>
<pre><code>where not exists ()</code></pre><p>o</p>
<pre><code>where A not in ()</code></pre><p>son muy importante.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL_20240530]]></title>
            <link>https://velog.io/@__hj______/TIL20240530</link>
            <guid>https://velog.io/@__hj______/TIL20240530</guid>
            <pubDate>Thu, 30 May 2024 11:43:04 GMT</pubDate>
            <description><![CDATA[<h1 id="codekata">[CODEKATA]</h1>
<p><img src="https://velog.velcdn.com/images/__hj______/post/93172b93-487d-44f0-b4b0-e08436cec16f/image.png" alt=""></p>
<ol>
<li>2022년 8월부터 2022년 10월까지 월별 자동차별 총 대여 횟수 계산</li>
<li>월별 대여횟수가 0인 항목 제거 후, 총 합이 5 이상인 항목만 모으기</li>
<li>해당 항목들로 월별, 자동차별, 횟수별 값 추출하기</li>
</ol>
<p><img src="https://velog.velcdn.com/images/__hj______/post/1b9bb0eb-44d7-4471-94a3-3b36e47ca3f5/image.png" alt=""></p>
<ol>
<li>with로 멤버별 후기의 수를 순위를 매긴다.</li>
<li>1위의 후기들을 추출한다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/__hj______/post/1942ff48-6d81-445d-8872-4b3d1fbff787/image.png" alt=""></p>
<ol>
<li>그냥 간단하게 리스트를 만들어서 없는 숫자를 넣은 다음 더해라 하면 된다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/__hj______/post/4f02bbf5-a168-4203-b107-b9b5e72beec8/image.png" alt=""></p>
<ol>
<li>리스트에 숫자가 1개 초과인 리스트 들만 최소값을 제거하고, 1개인 리스트는 -1을 담도록 한다.
<img src="https://velog.velcdn.com/images/__hj______/post/ee31f315-a033-4787-9b96-c231b69a828f/image.png" alt=""></li>
<li>길이를 2로 나눴을 때 나머지가 0이 아닌것은 중간 값을 추출하고, </li>
<li>0인 것은 짝수니까 center 기준 -1과 +1을 추출한다.</li>
</ol>
<h1 id="-후기">+) 후기</h1>
<p>통계를 좀 더 공부해야겠다고 느꼈다.
솔직히 수학을 손에서 놓고 산지 거진 10년인데,
이번에 인적성, 역량검사, 온라인 테스트, 코딩테스트 치면서도
아.. 수학이 중요하구나를 뼈저리게 느꼈었다..
통계도 또 수학이라.. 정말 수학을 해야겠다고 느끼고 있다.
해보자.</p>
]]></description>
        </item>
    </channel>
</rss>