<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kiki_.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Thu, 03 Feb 2022 02:17:46 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. kiki_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/kiki_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[😺1월 4째주 weekly review]]></title>
            <link>https://velog.io/@kiki_/1%EC%9B%94-4%EC%A7%B8%EC%A3%BC-weekly-review</link>
            <guid>https://velog.io/@kiki_/1%EC%9B%94-4%EC%A7%B8%EC%A3%BC-weekly-review</guid>
            <pubDate>Thu, 03 Feb 2022 02:17:46 GMT</pubDate>
            <description><![CDATA[<p>더 공부하고 싶은 내용:
분할정복, 퀵정렬, 병합정렬</p>
<h1 id="사실">사실</h1>
<p>이번 스프린트에서는 큐, 스택, 재귀, 트리, 정렬, 분할정복에 대해서 배웠다. </p>
<h1 id="느낌">느낌</h1>
<p>이번 스프린트는 나름 재밌게 배웠다. 처음 봤을 때는 엄청 어려웠던 개념들이 다시 배우니까 조금 이해가 되는것 같고, 새로 배우는 개념들도 지식이 쌓이는것 같아서 재밌었다. 
백준 푸는것도 도움이 됐다. 내용도 내용인데 백준 레벨 올리고 기록 보는게 은근 뿌듯하고 꾸준히 문제푸는 동기부여가 됐다. 얼른 공부 많이 해서 레벨업하고 싶다.</p>
<h1 id="교훈">교훈</h1>
<p>하면된다!</p>
<h1 id="향후-행동">향후 행동</h1>
<p>열공<del>_</del></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[🐱‍💻 Project4 딥러닝을 활용한 고양이 행동 분류]]></title>
            <link>https://velog.io/@kiki_/Project4-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EA%B3%A0%EC%96%91%EC%9D%B4-%ED%96%89%EB%8F%99-%EB%B6%84%EB%A5%98</link>
            <guid>https://velog.io/@kiki_/Project4-%EB%94%A5%EB%9F%AC%EB%8B%9D%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EA%B3%A0%EC%96%91%EC%9D%B4-%ED%96%89%EB%8F%99-%EB%B6%84%EB%A5%98</guid>
            <pubDate>Thu, 13 Jan 2022 01:44:52 GMT</pubDate>
            <description><![CDATA[<h1 id="사실">사실</h1>
<p>이번 프로젝트도 참 쉽지 않았지만 결과보다 과정에 만족한 프로젝트였다. 또한 지난 프로젝트에서 아쉬웠던 부분인 시간 배분 문제를 개선했다.</p>
<h1 id="느낌">느낌</h1>
<p>프로젝트 초반엔 많이 힘들었다. 내용 이해가 안 되니까 주제 잡기도 힘들었고, 수업 시간에 느꼈던 답답함이 나를 무기력한 상태로 만들었던 것 같다.
그래서 욕심을 버리고 완성을 목표로 내가 할 수 있으면서 관심이 가는 주제로 바꿨다. 그리고 급하게 마음먹기보다는 기초부터 다지자는 생각으로 딥러닝 기초 영상을 찾아봤다. 그렇게 조금씩 하다 보니 수업 시간에 이해 못 한 부분도 이해하게 되었고, 할 수 있겠다는 의지가 생겼다.</p>
<p>또한 진로에 대해서 고민도 많이 했다. 딥러닝 파트가 어렵다 보니 내 길이 아닌 것 같고, 잘 따라가는 다른 사람들을 보면서 나는 재능이 없다고 느껴졌다. 그래서 취직을 위해 데이터 분석 쪽으로 방향을 맞춰야겠다고 생각했다.
하지만 프로젝트 하면서 이해 못 했던 부분도 알게 되고 내가 관심 있는 문제를 딥러닝을 통해 구현할 수 있겠다는 생각을 했다. 그러면서 부트 캠프 들어오기 전에 썼던 글을 다시 보니, 처음에 의지가 넘치던 때의 생각이 나서 포기하고 싶지 않다고 느껴졌다.</p>
<h1 id="교훈">교훈</h1>
<p>그래서 포기하지 않고 계속 딥러닝 파트 쪽을 공부해 보고 싶다. 이번 프로젝트에서 못했던 부분도 보완하고 다른 쪽도 알아가고 싶다.</p>
<h1 id="향후-행동">향후 행동</h1>
<p>새해라 그런가 의지가 넘치네~ </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[😺 1월 첫째주 weekly review]]></title>
            <link>https://velog.io/@kiki_/1%EC%9B%94-%EC%B2%AB%EC%A7%B8%EC%A3%BC-weekly-review</link>
            <guid>https://velog.io/@kiki_/1%EC%9B%94-%EC%B2%AB%EC%A7%B8%EC%A3%BC-weekly-review</guid>
            <pubDate>Thu, 06 Jan 2022 03:50:36 GMT</pubDate>
            <description><![CDATA[<h1 id="더-공부하고-싶은-내용">더 공부하고 싶은 내용</h1>
<p>딥러닝 꾸준히 공부</p>
<h1 id="사실">사실</h1>
<p>이번 한주동안 segmentation,  object detection, autoencoder, GAN에 대해 배웠다. 배웠다기보다는 찍먹..ㅎㅎ</p>
<h1 id="느낌">느낌</h1>
<p>딥러닝 공부가 이제 시작이라는 생각이 들었다. 초반에는 어렵고 이해를 못하는 것에 대해서 답답함이 느껴졌었는데 생각해보면 당연하다는 생각이 들었다. 일단 딥러닝이라는 분야 자체가 어려운게 맞고, 부트캠프 내에서 딥러닝을 배운지 20일 남짓이다. 어렸을적 피아노를 배우더라도 20일 보다는 많이 배웠던것 같다.ㅎㅎ.. 그냥 생각해보면 당연한 것에 마음이 급해져서 이리저리 감정에 휘둘렸던 것 같다.
그렇다고 내 자신이 배우려고 노력을 안했을까 생각해보면 그것도 아니다. 공부하는 방향성이 틀려서 이해를 못한 부분도 있겠지만, 그래도 주어진 시간내에서 최선을 다했던 것 같다.</p>
<h1 id="교훈">교훈</h1>
<p>배우는 것에는 절대적인 시간이 필요하다고 생각한다. 물론 머리가 탁월하게 좋은 사람들은 훨씬 잘 이해하고 습득했겠지만 나는 지극히 평범한 사람인것 같다. 그래서 내가할 수 있는 일은 계속 시간을 들이고 노력하는 것이다.</p>
<h1 id="향후행동">향후행동</h1>
<p>모두를 위한 딥러닝 영상부터 하나씩 봐야겠다. 도와줘요 성킴 선생님<del>~ 허민석 선생님두</del></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[😹12월 4째주 weekly review]]></title>
            <link>https://velog.io/@kiki_/12%EC%9B%94-4%EC%A7%B8%EC%A3%BC-weekly-review</link>
            <guid>https://velog.io/@kiki_/12%EC%9B%94-4%EC%A7%B8%EC%A3%BC-weekly-review</guid>
            <pubDate>Thu, 30 Dec 2021 06:52:46 GMT</pubDate>
            <description><![CDATA[<h1 id="더-공부하고-싶은-내용">더 공부하고 싶은 내용:</h1>
<p>gpt, bert</p>
<h1 id="사실-fact">사실 (Fact):</h1>
<p>이번 한주동안 NLP에 대해 배웠다.</p>
<h1 id="느낌-feeling">느낌 (Feeling):</h1>
<p>내용을 완전히 이해하진 못했지만 그래도 흐름은 따라가고 있는 느낌이다.
지난주에는 이런저런 고민 때문에 집중도 잘 안되고 힘들었는데, 이번 주에는 오늘 배울 내용, 오늘 할 일에만 집중했더니 조금 괜찮아진 것 같다.</p>
<h1 id="교훈-finding">교훈 (Finding):</h1>
<p>하지만 고민이 해결된 건 아니다. 아직도 진로에 대한 방향성을 정확히 못 잡겠다. 그래도 이쪽 분야로 가기로 한 이상 언젠가 배워야 하는 내용이라고 생각한다.</p>
<h1 id="향후-행동-future-action">향후 행동 (Future Action):</h1>
<p>일단 배워두자~!! 으악 화이팅</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[😿12월 3째 주 weekly review]]></title>
            <link>https://velog.io/@kiki_/12%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review</link>
            <guid>https://velog.io/@kiki_/12%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review</guid>
            <pubDate>Thu, 23 Dec 2021 06:17:14 GMT</pubDate>
            <description><![CDATA[<h1 id="1-사실">1. 사실</h1>
<p>이번 한 주 동안 신경망의 개념과 신경망 학습, 하이퍼 파라미터에 대해 배웠다.</p>
<h1 id="2-느낌">2. 느낌</h1>
<p>머리속이 복잡한 느낌이다. 딥러닝쪽 내용이 처음 보는 거라 어렵기도 하고, 사실 다른 쪽으로 신경이 쓰여서 집중을 못하고 있는 느낌이다. 이제 부트캠프에서 배우는 개념도 거의 배워가고, 다음은 프로젝트나 기업에 지원하는 일일텐데 막막하다. 기업에 지원하면 일단 어디쪽으로 지원할지, 내 실력은 아직 부족한것 같은데 더 공부해야할 것 같은 생각도 든다. 대기업 쪽을 갈려면 코딩테스트를 준비해야하니까 이것도 조금씩 공부하고 있는데 잘 되지 않고.. 스타트업 쪽을 지원할려니 지난 프로젝트때 아쉬웠던 것만 생각난다... </p>
<p>딥러닝 부분도 잘 이해가 안가고 답답한 느낌이 든다. 머신러닝은 부트캠프 오기 전에 미리 공부를 했어서 부트캠프에서 다시 배울때는 머리 속에 차곡차곡 쌓이는 느낌이었는데 딥러닝은 머리에서 데굴데굴 굴러다니는 느낌이다. 그래도 개념은 이해했다고 생각했는데 스챌에서 안풀려서 너무 난감했다.. 시간이 조금만 주어진다면 다시보고 이해할 수 있을 것 같은데 당장 3주 뒤에 프로젝트로 결과물도 만들어내야 하고 어쩌지..ㅠ</p>
<p>일단 부트캠프 끝나고 어떻게 할지 잘 모르겠다. 부트캠프에서 지원해주는데로 스타트업가서 일단 구르고 볼지 한시즌 더 준비해서 따로 기업을 지원해야할지...</p>
<h1 id="3-교훈">3. 교훈</h1>
<p>뭔가.. 뭔가가 복잡하다...</p>
<h1 id="4-향후-행동">4. 향후 행동</h1>
<p>일단 오늘할일 끝내자!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[🚗Project 3 교통사고 증감률 예측 서비스 회고]]></title>
            <link>https://velog.io/@kiki_/Project-3-%EA%B5%90%ED%86%B5%EC%82%AC%EA%B3%A0-%EC%A6%9D%EA%B0%90%EB%A5%A0-%EC%98%88%EC%B8%A1-%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@kiki_/Project-3-%EA%B5%90%ED%86%B5%EC%82%AC%EA%B3%A0-%EC%A6%9D%EA%B0%90%EB%A5%A0-%EC%98%88%EC%B8%A1-%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Wed, 15 Dec 2021 14:04:29 GMT</pubDate>
            <description><![CDATA[<h1 id="1-사실-fact">1. 사실 (Fact)</h1>
<p>이번 프로젝트에서는 시간 배분을 잘 못한것 같다. 프로젝트 초반에 주제 고민하고 데이터 EDA 하는것에 며칠을 쏟다가 마지막 배포하고 발표 자료를 만드는것에는 시간에 쫓겨 끝냈다.</p>
<h1 id="2-느낌-feeling">2. 느낌 (Feeling)</h1>
<p>저번 프로젝트 1, 2에서도 아쉬움은 남았지만, 이번엔 조금 다른 느낌의 생각이 들었다. 내 단점에 대한 고민이다.</p>
<h1 id="3-교훈-finding">3. 교훈 (Finding)</h1>
<p>내 성향에서 고치고 싶은 부분이 있다면 지구력이 부족하다는 점이다. 처음에는 누구보다 열심히하다가  마지막가서는 흐지부지 끝났다. 이런 성향 때문에 살면서 중요한 일이나 시험에서 만족스럽지 못한적이 많다... 이런 내 자신을 잘 알기 때문에 평소에 많이 해두려고 해왔었다. 하지만 부트캠프처럼 프로젝트를 주기적으로 마감해야 하는 상황에서는 이런 내 단점이 부각되는것 같다.</p>
<h1 id="4-향후-행동-future-action">4. 향후 행동 (Future Action)</h1>
<p>부트캠프를 계기로 이런 내 안좋은 성향을 고칠것이다. 지금 고쳐야 나중에 더 큰 일이 있을때 잘 헤쳐나갈 수 있다고 생각한다. 구체적인 목표로 다음 프로젝트에서 마감 하루 전에 제출해봐야겠다!</p>
<h1 id="5-동기피드백">5. 동기피드백</h1>
<blockquote>
<p>좋았던 점 : 1. 전달력 : 차분한 목소리톤과 속도가 인상깊었습니다.
2. 발표주제 : 프로젝트를 구성하는데 적절한 주제를 선정하셨고, 이에 대한 설명을 잘해주셨습니다.
3. 발표자료 : 자료와 설명을 적절하게 잘 표현하셨습니다.
4. 데이터 : 교통사고량 자체를 예측하기 보다는 현실적으로 유용한 교통사고 증감률을 타켓으로 설정하신 부분이 인상깊었습니다.
아쉬운 점 : 발표하실 때 다소 매끄럽지 못한 부분이 생겼던 점이 아쉬웠습니다. 웹페이지 구성에도 신경을 많이 쓰신 것 같은데 이부분을 배포하지 못한 점이 안타깝네요. 그래도 직접 국내데이터로 EDA 및 target을 설정하신 부분에서 배울점을 느꼈습니다. 또한 tableau를 활용하여 대쉬보드 작성을 하신점과 지리정보까지 표현하신 부분에 인상깊었습니다! 수고하셨습니다!!!</p>
</blockquote>
<blockquote>
<p>좋았던 점 : 1. 대시보드를 EDA 전에 만들어서 EDA에 대한 인사이트를 얻는데 활용할 수도 있다는 걸 배웠습니다.
2. 웹에서 예측 결과만 보여주는 것이 아니라 대시보드나 데이터 정보 등 다양한 부가기능이 있는 점이 좋았습니다.
아쉬운 점 : 1. 서비스 시연을 웹 화면을 캡처해서 보여주셨는데, 직접 웹에서 서비스를 시연했다면, 이 서비스를 어떻게 사용하는 지가 더 와닿았을 것 같습니다.</p>
</blockquote>
<blockquote>
<p>좋았던 점 : 1. 대시보드를 EDA 전에 만들어서 EDA에 대한 인사이트를 얻는데 활용할 수도 있다는 걸 배웠습니다.
2. 웹에서 예측 결과만 보여주는 것이 아니라 대시보드나 데이터 정보 등 다양한 부가기능이 있는 점이 좋았습니다.
아쉬운 점 : 1. 서비스 시연을 웹 화면을 캡처해서 보여주셨는데, 직접 웹에서 서비스를 시연했다면, 이 서비스를 어떻게 사용하는 지가 더 와닿았을 것 같습니다.</p>
</blockquote>
<blockquote>
<p>좋았던 점 : 발표 자료를 논리적으로 잘 구성하신 것 같습니다. 주제도 실생활과 밀접한 주제여서 좋았습니다. 웹 페이지 상단에 버튼으로 대시보드를 연결하신게 참 신기했습니다.
아쉬운 점 : 녹화를 한번만 더 하셨으면 충분히 7분 이내로 찍혔을텐데 시간이 부족하셨나봅니다ㅠㅠ.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[😼12월 1째 주 weekly review]]></title>
            <link>https://velog.io/@kiki_/12%EC%9B%94-1%EC%A7%B8-%EC%A3%BC-weekly-review</link>
            <guid>https://velog.io/@kiki_/12%EC%9B%94-1%EC%A7%B8-%EC%A3%BC-weekly-review</guid>
            <pubDate>Tue, 07 Dec 2021 02:04:10 GMT</pubDate>
            <description><![CDATA[<h1 id="1-사실">1. 사실</h1>
<p>이번 한주동안 Docker, Flask, 배포와 대시보드, 시간과부호화에 대해 배웠다. </p>
<h1 id="2-느낌">2. 느낌</h1>
<p>&#39;이걸 왜 배우지?&#39;라는 물음을 조금 해결한 느낌이다. 사실 처음에는 데이터 분석 쪽을 더 공부하고 싶고, Flask나 배포를 왜 배워야 하나 의문이 들었다. 이런 생각이 들다보니, 이번 과제에 집중을 잘 못했다. </p>
<p>하지만 조금 더 내용을 이해하다보니, 이런 내용들이 알아야하는 기본적인 소프트웨어 지식이라는 것을 느꼈다. 또한 나중에 현업에 가서도 다른 사람들과 일할 때도 이러한 역량은 매우 중요할 것 같다.</p>
<h1 id="3-교훈">3. 교훈</h1>
<p>아직도 배워야 할게 많다는 교훈을 얻었다. 기본지식 외에도 실제 업무 방식에 대해 더 많이 배워야 겠다는 생각이든다.</p>
<h1 id="4-향후-행동">4. 향후 행동</h1>
<p>공부편식 금지!! 다 열심히 냠냠</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[😽11월 4째 주 weekly review]]></title>
            <link>https://velog.io/@kiki_/11%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review-e30nwz9v</link>
            <guid>https://velog.io/@kiki_/11%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review-e30nwz9v</guid>
            <pubDate>Tue, 30 Nov 2021 02:11:29 GMT</pubDate>
            <description><![CDATA[<h1 id="1-사실">1. 사실</h1>
<p>이번 한 주동안 디버깅, 파이썬 함수, 클래스, 데코레이터, 웹 스크레이핑, API, NoSQL등을 배웠다.</p>
<h1 id="2-느낌">2. 느낌</h1>
<p>지난주보다는 마음이 한결 가벼워진 느낌이다. 지난주에는 이해를 못 해서 수업 시간이나 질문할 때 계속 마음에 돌덩이가 쌓이는 기분이었다. 그래서 항상 토요일에는 휴식 데이를 가졌는데, 이번 주는 토요일에도 못한 공부를 하고 보충하니 몰랐던 부분도 알게 되었다. 돌덩이가 다섯 개 있었는데 세 개 정도 내려간 것 같다.</p>
<h1 id="3-교훈">3. 교훈</h1>
<p>불안감을 없애려면 불안한 원인을 찾아서 없애주어야 한다는 교훈을 얻었다. 물론 모르는 부분을 전부 알게 되지는 않았지만 조금이라도 알게 되니, 이번 주에 좀 더 보충하고 다음 주에 또 보충하면 될 것 같은 기분이 든다.</p>
<p>한편으로 동기들에게 정말 감사했다. 민정님이 이런 얘기할 때마다 좀 낯간지러웠는데..ㅎㅎㅎ 이번 섹션에서는 진심으로 그렇게 느끼고 있다. 혼자서 이번 섹션을 계속했다면 분명 포기했을 텐데, 그래도 이렇게 계속하고 있는 건 동기들이 있어서 인 것 같다. 감사하다!</p>
<h1 id="4-향후행동">4. 향후행동</h1>
<p>나도 얼른 공부 많이 해서 도움이 되자! 화팅</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[😸11월 3째 주 weekly review]]></title>
            <link>https://velog.io/@kiki_/11%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review</link>
            <guid>https://velog.io/@kiki_/11%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review</guid>
            <pubDate>Tue, 23 Nov 2021 04:49:55 GMT</pubDate>
            <description><![CDATA[<h1 id="1-사실">1. 사실</h1>
<p>이번 한 주동안 콘다 가상환경과 github 등 개발 환경과 SQL에 대해 배웠다.</p>
<h1 id="2-느낌">2. 느낌</h1>
<p>이번 스프린트가 나에게 가장 어렵게 느껴졌다. 일단 깃이나 vscode, 디비버가 처음이라 다루기가 어려웠고, 연결하다가 오류가 나서 컴퓨터를 싹 포맷하기도 했다..ㅎ 스프린트 과제를 하면서도 시간이 부족해서 밤 늦게까지 어찌어찌하고 계획 세웠던 다른 일들도 미뤄졌다. 또 스프린트 4에서는 답지의 저주도 겪었다ㅎㅎㅎ... 올려주신 과제를 바로 깃 클론하니, 답이 그대로 쓰여있는 과제를 받았다. 처음에는 &#39;아싸 답보면서 공부해야겠다.&#39; 하는 생각이 들었지만, 정답을 보고나니 내가 직접 코드를 짤 수가 없었다... 아예 백지상태였다면 지저분한 코드라도 뭔가 시도해 봤을 텐데 내 코드는 이상한 것 같고, 또 얼른 끝내야 한다는 조바심에 계속 머뭇대다가 결국에는 과제를 못했다.</p>
<h1 id="3-교훈">3. 교훈</h1>
<p>이런 조바심과 불안함은 다른 사람과 비교하는 것에서 시작되는 것 같다. 비교하지 말자는 것이 당연한 얘기지만 이게 마음속에서 컨트롤이 잘 안되는 것 같다. </p>
<h1 id="4-향후-행동">4. 향후 행동</h1>
<p>마음을 비우고 오늘 배우는 것에 집중하자! 화이팅팅팅!!</p>
<h1 id="5-더-배우고-싶은-내용">5. 더 배우고 싶은 내용</h1>
<p>Git, DB Api</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] 유닉스 커맨드]]></title>
            <link>https://velog.io/@kiki_/TIL-%EC%9C%A0%EB%8B%89%EC%8A%A4-%EC%BB%A4%EB%A7%A8%EB%93%9C</link>
            <guid>https://velog.io/@kiki_/TIL-%EC%9C%A0%EB%8B%89%EC%8A%A4-%EC%BB%A4%EB%A7%A8%EB%93%9C</guid>
            <pubDate>Tue, 16 Nov 2021 11:20:47 GMT</pubDate>
            <description><![CDATA[<h1 id="유닉스unix란">유닉스(Unix)란?</h1>
<p>: 1970년대 초반에 개발된 운영체제</p>
<ul>
<li>소프트웨어를 개발하고 실행할 수 있는 플랫폼</li>
<li>쉽게 수정해서 다른 컴퓨터에 적용할 수 있음</li>
<li>유닉스를 기반으로 하는 다양한 운영체제<ul>
<li>맥os, 리눅스, 우분투 등이 유닉스에서 파생된 유닉스 운영체제</li>
<li>사용하는 커맨드가 비슷함</li>
<li>윈도우 운영 체제에 윈도우 커맨드도 있지만 개발에서는 유닉스 커맨드가 보편적으로 사용됨</li>
<li>웹사이트 배포, 프로그램 개발 시 강력한 서버 컴퓨터를 사용하기 위해 유닉스 커맨드가 사용됨</li>
</ul>
</li>
</ul>
<h1 id="파일과-디렉토리-커맨드">파일과 디렉토리 커맨드</h1>
<h4 id="manmanual">man(manual)</h4>
<p>: 커맨드 옵션, 사용법 등을 출력</p>
<h4 id="pwd-print-working-directory">pwd (print working directory)</h4>
<p>: 현재 디렉토리 (working directory)의 경로를 출력</p>
<h4 id="cd-change-directory">cd (change directory)</h4>
<blockquote>
<p>사용법:
cd [PATH]</p>
</blockquote>
<blockquote>
<p>예:
cd dir1</p>
</blockquote>
<p>: PATH 경로에 해당하는 디렉토리로 이동
아무 아규먼트 없이 cd를 하면 사용자의 홈 디렉토리로 이동
-을 사용하면 이전 경로</p>
<h4 id="ls-list">ls (list)</h4>
<blockquote>
<p>사용법:
ls [-al] [PATH]</p>
</blockquote>
<blockquote>
<p>예:
ls -al dir1</p>
</blockquote>
<p>: PATH에 해당하는 디렉토리 / 파일 정보를 보여줌</p>
<ul>
<li>a 옵션: 숨겨진 파일을 포함한 모든 파일을 보여줌</li>
<li>l 옵션: long format을 사용해서 더 자세한 정보를 보여줌</li>
</ul>
<h4 id="mkdir-make-directory">mkdir (make directory)</h4>
<blockquote>
<p>사용법:
mkdir PATH1 PATH2 ...</p>
</blockquote>
<blockquote>
<p>예:
mkdir dir2</p>
</blockquote>
<p>: 디렉토리를 생성. 여러 경로를 한꺼번에 줘서 여러 디렉토리를 한꺼번에 만들 수도 있음</p>
<h4 id="touch-touch-file">touch (touch file)</h4>
<blockquote>
<p>사용법:
touch PATH1 PATH2 ...</p>
</blockquote>
<blockquote>
<p>예:
touch file1.txt</p>
</blockquote>
<p>: 경로에 해당하는 파일을 생성</p>
<h4 id="vim">vim</h4>
<blockquote>
<p>사용법:
vim [PATH]</p>
</blockquote>
<blockquote>
<p>예:
vim file1.txt</p>
</blockquote>
<p>: vim 텍스트 에디터를 실행</p>
<h4 id="cat-concatenate">cat (concatenate)</h4>
<blockquote>
<p>사용법:
cat PATH1 PATH2 ...</p>
</blockquote>
<blockquote>
<p>예:
cat file1.txt
: 경로에 해당하는 파일들의 내용을 출력</p>
</blockquote>
<h4 id="less">less</h4>
<blockquote>
<p>사용법:
less PATH</p>
</blockquote>
<blockquote>
<p>예:
less file1.txt</p>
</blockquote>
<p>: PATH에 해당하는 파일을 페이지 단위로 나눠서 보여줌</p>
<ul>
<li>단축키:
줄 이동: 위쪽 / 아래쪽 방향키
다음 페이지: space 아니면 f
이전 페이지: b
마지막 페이지: G
처음 페이지: g</li>
</ul>
<h4 id="head">head</h4>
<blockquote>
<p>사용법:
head [-n count] PATH</p>
</blockquote>
<blockquote>
<p>예:
head -n 5 file1.txt</p>
</blockquote>
<p>: PATH에 해당하는 파일의 처음 10줄을 출력</p>
<ul>
<li>n 옵션: 출력되는 줄 개수
(tail은 마지막 10줄)</li>
</ul>
<h4 id="mv-move">mv (move)</h4>
<blockquote>
<p>사용법:
mv [-i] SOURCE_PATH DEST_PATH</p>
</blockquote>
<blockquote>
<p>예:
mv -i file1.txt file2.txt
mv -i file1.txt dir1</p>
</blockquote>
<p>: 디렉토리/파일을 이동하거나 이름을 변경
두 번째 아규먼트(DEST_PATH) 가 이미 존재하는 디렉토리의 경로일 경우 SOURCE_PATH에 해당하는 디렉토리/파일을 그 안으로 이동, 그렇지 않으면 DEST_PATH로 이름 변경</p>
<ul>
<li>i 옵션: 이동/이름 변경을 할 때 똑같은 이름의 디렉토리/파일이 있으면 덮어씌움</li>
</ul>
<h4 id="cp-copy">cp (copy)</h4>
<blockquote>
<p>사용법:
cp [-ri] SOURCE_PATH DEST_PATH</p>
</blockquote>
<blockquote>
<p>예:
cp -i file1.txt file2.txt
cp -ri dir1 dir2</p>
</blockquote>
<p>: 디렉토리/파일을 복사
두 번째 아규먼트(DEST_PATH) 가 이미 존재하는 디렉토리의 경로일 경우 SOURCE_PATH에 해당하는 디렉토리/파일을 그 안으로 복사, 그렇지 않으면 DEST_PATH라는 이름으로 복사</p>
<ul>
<li>r 옵션: 디렉토리를 복사할 때는 꼭 r 옵션을 써야함</li>
</ul>
<h4 id="rm-remove">rm (remove)</h4>
<blockquote>
<p>사용법:
rm [-rif] PATH1 PATH2 ...</p>
</blockquote>
<blockquote>
<p>예:
rm file1.txt file2.txt
rm -rf dir1</p>
</blockquote>
<p>: 경로에 해당하는 파일/디렉토리들을 지움</p>
<ul>
<li>r 옵션: 디렉토리를 삭제할 때는 꼭 r 옵션을 써야함</li>
<li>i 옵션: 복사할 때 각 파일을 정말 지울 것인지 물어봄</li>
<li>f 옵션: 지울 것인지 절대 확인하지 않고 바로 지움</li>
</ul>
<h1 id="vim-사용법">vim 사용법</h1>
<p>텍스트 입력: 입력 모드(i) → 텍스트 입력</p>
<p>텍스트 한 줄 복사: 일반 모드 → 복사하고 싶은 줄에 커서 위치 → yy</p>
<p>텍스트 한 줄 잘라내기: 일반 모드 → 잘라내고 싶은 줄에 커서 위치 → dd</p>
<p>특정 영역 복사: 비주얼 모드(V는 줄 단위, v는 글자 단위) → 복사하고 싶은 영역 커서로 설정 → y</p>
<p>특정 영역 잘라내기: 비주얼 모드(V는 줄 단위, v는 글자 단위) → 잘라내고 싶은 영역 커서로 설정 → d</p>
<p>텍스트 붙여넣기: 일반 모드 → 붙여넣고 싶은 위치에 커서 위치 → p</p>
<p>파일 저장: 명령 모드(:) → w + enter</p>
<p>파일 저장 + vim 종료: 명령 모드(:) → wq + enter</p>
<p>vim 종료 (내용 저장되지 않음): 명령 모드(:) → q! + enter</p>
<p>📎 참고
<a href="https://gomguard.tistory.com/73">리눅스 기본 명령어 10가지</a>
<a href="https://www.44bits.io/ko/post/linux-and-mac-command-line-survival-guide-for-beginner">커맨드라인 사용법</a>
<a href="https://cailisin.tistory.com/127?category=625297">유닉스 (Unix) / 리눅스 (Linux) 주요 기본 명령어</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[📑 Project2 '씬파일러를 위한 신용평가 예측모형' 회고]]></title>
            <link>https://velog.io/@kiki_/Project2-%EC%94%AC%ED%8C%8C%EC%9D%BC%EB%9F%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%8B%A0%EC%9A%A9%ED%8F%89%EA%B0%80-%EC%98%88%EC%B8%A1%EB%AA%A8%ED%98%95-%ED%9A%8C%EA%B3%A0</link>
            <guid>https://velog.io/@kiki_/Project2-%EC%94%AC%ED%8C%8C%EC%9D%BC%EB%9F%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%8B%A0%EC%9A%A9%ED%8F%89%EA%B0%80-%EC%98%88%EC%B8%A1%EB%AA%A8%ED%98%95-%ED%9A%8C%EA%B3%A0</guid>
            <pubDate>Fri, 12 Nov 2021 04:42:53 GMT</pubDate>
            <description><![CDATA[<h1 id="1-전달력">1. 전달력</h1>
<p>이번 프로젝트는 시간에 쫓겨서 해야 할 말을 못하고 부랴부랴 끝낸 것 같아 아쉽다.
그래서 발표 영상을 찍을 때 &#39;왜 이렇게 분석을 진행했는지&#39;, &#39;어떤 방식이 쓰였는지&#39; 이런 내용이 빠진 것 같다. 다음에는 발표할 때 체크리스트를 작성해서 설명을 추가하자.</p>
<h1 id="2-발표-주제">2. 발표 주제</h1>
<p>모델 성능이 좋지 않아서 계속 개선하다가 한계만 언급하고 결국 결론을 제대로 내리지 못했다. 또한 모델링 결과를 제대로 짚고 가지 못한 것 같다.</p>
<h1 id="3-발표-자료">3. 발표 자료</h1>
<p>발표 자료는 코랩으로 했는데 ppt보다 전달력은 떨어지지만 시간을 줄일 수 있어서 좋았다.</p>
<h1 id="4-데이터">4. 데이터</h1>
<p>이번에 분석하면서 느낀 건 데이터가 어떤 게 들어가느냐에 따라서 완전히 과적합 될 수도 있고, 예측이 전혀 되지 않을 수도 있다는 것을 느꼈다. 의미 있는 데이터 선택 방식에 대해 더 공부해야 할 것 같다.</p>
<h1 id="✔-다음-분석시-활용할-체크리스트">✔ 다음 분석시 활용할 체크리스트</h1>
<ul>
<li>처음에 분석 전반적인 목차를 적어주고 설명하자(회귀or 분류인지, 모델 뭐 쓸지</li>
<li>가설 또는 문제 정의</li>
<li>데이터 설명(샘플 몇개, 데이터 출처)</li>
<li>피처 설명(수치형 몇개, 범주형 몇개)</li>
<li>전처리 </li>
<li>EDA (데이터 분포나 전체적으로 나타낼 수 있는 시각자료 포함)</li>
<li>하이퍼 파라미터 튜닝 방식</li>
<li>모델 설명</li>
<li>평가 지표 설명(왜 썼는지, 어떤 방식인지)</li>
<li>결과해석(왜 썼는지, 어떤게 가장 중요했는지, 어떤것이 생각외의 결과인지)</li>
<li>결론(처음에 세운 가설이나 문제와 연결지어 설명)</li>
</ul>
<h1 id="5-동기-피드백">5. 동기 피드백</h1>
<blockquote>
</blockquote>
<ul>
<li>좋았던 점 : 
먼저 주제에 대한 이해를 잘 하셨다고 생각했습니다. 씬파일러에 대한 내용과, 채무불이행을 예측 하겠다는 프로젝트의 목표가 분명하다고 느꼈습니다. 그리고 분류 문제로 잘 풀어내셨다고 생각합니다. 전처리 부분에서 불균형데이터를 파악하시고 이를 잘 밸런싱 했다고 생각합니다. 특히 결론 부분도 이러한 부분을 고려하여 두 부분으로 나눠서 발표하셨던 것이 인상깊었습니다. 결과 해석 부분에서 시각화로 잘 표현하셨고, 한계점까지 잘 정리된 발표였습니다!</li>
<li>아쉬운 점 : 
전반적으로 좋은 발표였고, 말씀해주신대로 더 많은 데이터가 확보된다면 더 좋은 결론을 도출할 것 같습니다. 수고 많으셧습니다.</li>
</ul>
<blockquote>
</blockquote>
<ul>
<li>좋았던 점 : 
도메인 지식이 없지만 앞부분에서 용어에 대해 상세하게 설명해주셔서 이해하기 쉬웠습니다. 특성들을 표로 나타내고, 그룹을 묶어 표현하신 부분도 한 눈에 들어와서 좋았습니다.
부족한 라벨을 Oversampling한 부분이 신기했습니다.
세션에 없었던 다양한 모델을 사용하신 부분이 인상깊었습니다. 항상 열심히 하는 모습에 자극받고 있습니다🔥
대출을 상환한 고객, 상환하지 못한 고객을 나눠 모델을 해석하신 부분도 좋았습니다. 저도 이 부분에서 고민이 있었는데 석희님과 같은 방법으로 해봐야겠다고 생각했습니다.
분석의 한계를 상세하게 알려주신 부분이 좋았습니다.</li>
<li>아쉬운 점 : 아쉬웠던 점은 따로 없었습니다.</li>
</ul>
<blockquote>
</blockquote>
<ul>
<li>좋았던 점 : </li>
</ul>
<ol>
<li>문제를 정의한 다음 데이터를 선정하고 그것을 해결하기 위해 분류 문제로 푼다는 내용이 깔끔하게 잘 정리된것 같아 좋았습니다.
(프로젝트의 목적을 정확히 이해하기 쉽게 잘 설명되었습니다. 저도 다음번에 참고해야겠네요)</li>
</ol>
<ul>
<li>아쉬운 점 : </li>
</ul>
<ol>
<li>데이터 전처리시 왜 그렇게 묶어줬는지에 대한 시각화 자료나 설명이 있었으면 더 좋았을 것 같습니다.</li>
<li>모델링 결과를 표도 좋지만 그래프로 표현해서 &#39;(1)기본&#39;끼리 묶어서 프래프 1개 &#39;(2)클래스 불균형 조정&#39;끼리 묶어서 그래프 1개로 표현했으면 더 보기 좋았을 것 같습니다.</li>
<li>분류된(대출 상황/미상환) 고객별 특성을 분석할때, SHAP를 사용해서 설명을 할 때, row로 한 행만 지정하시고 그것을 통해 분석을 하시는데 해당 행이 그 분류된 그룹을 대표할수 있을까?라는 생각이 들었습니다.
좀 더 범위를 넣게 지정(클러스터링)하여 그래프를 표현해서 보여주시거나, Summuy plot을 사용해서 보여줬으면 더 좋지 않았을까 생각됩니다.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[😺11월 1째 주 weekly review]]></title>
            <link>https://velog.io/@kiki_/11%EC%9B%94-1%EC%A7%B8-%EC%A3%BC-weekly-review</link>
            <guid>https://velog.io/@kiki_/11%EC%9B%94-1%EC%A7%B8-%EC%A3%BC-weekly-review</guid>
            <pubDate>Fri, 05 Nov 2021 04:03:12 GMT</pubDate>
            <description><![CDATA[<h1 id="1-사실">1. 사실</h1>
<p>한 주동안 data leakage, class 불균형, 로그변환, 오버 샘플링, 언더샘플링, wrangling, feature importances, PDP, ICE, SHAP를 배웠다.
초반에는 데이터 분석 프로젝트의 틀을 배웠다면, 후반에는 모델을 해석하는 방법들이었다.</p>
<h1 id="2-느낌">2. 느낌</h1>
<p>모델을 해석하는 다양한 방법들이 흥미로웠다.
이번 section에서 모델을 통해 예측하는 부분들은 신기했지만 작동원리가 잘 와닿지는 않았다. 
하지만 이번 sprint에서 배운 내용들은 모델의 의미를 해석하는 부분들이라 흥미롭게 느껴졌다. 
특히 내가 관심있는 분야는 모델의 해석이 중요한 분야라 더 열심히 공부해야겠다는 생각이 들었다.</p>
<p>하지만 PDP나 SHAP 등의 차이를 명확하게 구분하지 못한 느낌이 들었다. 
어떤 방법이 계산량이 많다던지, 어떤 방법이 피처끼리 연관성을 표현한다던지 하는 특징들이 뒤죽박죽 섞인 느낌이다.
또한 스챌하면서 사용법도 아직 미숙하다고 느꼈다. lecture note에서 나온대로 돌린다고 돌렸는데, 오류가 나고 plot도 좀 이상하게 그려졌다. 
데이터 타입에 따라 방식이 달라지는 것 같은데 아직 파악은 못했다.</p>
<h1 id="3-교훈">3. 교훈</h1>
<p>데이터 사이언스 분야는 꾸준히 배워야 하는 분야임을 배웠다. 
feature importance를 계산하는 방법에도 여러가지가 있었고, 다른 방법도 많았다. 이렇게 많은 방법들을 이해하고, 또 새로 나오는 방법들을 익히려면 계속 공부해야 할 것 같다.</p>
<h1 id="4-향후-행동">4. 향후 행동</h1>
<p>여러가지 해석 방법들의 특징을 표로 정리해봐야겠다... 언제가 될지는 모르지만.... 11월달 안에는 하자 내자신...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] Interpreting ML Model, PDP / ICE / SHAP]]></title>
            <link>https://velog.io/@kiki_/TIL-Interpreting-ML-Model</link>
            <guid>https://velog.io/@kiki_/TIL-Interpreting-ML-Model</guid>
            <pubDate>Wed, 03 Nov 2021 04:33:24 GMT</pubDate>
            <description><![CDATA[<h1 id="1-interpreting-ml-model">1. Interpreting ML Model</h1>
<p>높은 성능을 가지는 모델을 만들기 위해 랜덤포레스트, 부스팅과 같은 복잡도가 높은 모델을 사용하게 된다. 이처럼 복잡한 계산으로 인해 내부 작동원리가 드러나지 않는 모델들을 <strong>Black Box Model</strong>이라 한다. 이러한 블랙박스 모델들을 해석하는 방법에 대해 정리하였다.</p>
<h2 id="11-모델을-왜-해석해야-하는가">1.1 모델을 왜 해석해야 하는가?</h2>
<p>많은 분야에서 모델을 무조건 신뢰할 수 없다. </p>
<ul>
<li>의료 분야, 자율자동차, 금융 분야 등 모델에 따라 위험성이 큰 분야에서는 모델의 결과를 온전히 신뢰할 수 없다. 모델이 왜 이런 결정을 내렸는지 알고, 신뢰성을 개선해야 한다.</li>
</ul>
<p>의사 결정에 직접적 영향을 주는 것은 해석이다.</p>
<ul>
<li>많은 분야에서 모델을 이용하는 이유 중 하나는 의사결정에 도움을 얻기 위해서이다.</li>
<li>따라서 의사결정권자가 납득할만한 이유를 제시해야 한다.</li>
<li>도메인 지식이 필요한 이유도 이와 유사하다.</li>
</ul>
<p>우리가 몰랐던 지식을 얻을 기회, 편견을 깨트릴 기회가 된다.</p>
<ul>
<li>맥주와 기저귀를 가깝게 진열하니 매출이 상승했다는 사례처럼, 우리가 몰랐던 지식을 알수 있다.</li>
<li>또는 예상한 결과와 정반대인 경우 고정관념을 바로잡을 기회가 되기도한다.</li>
</ul>
<p>차원의 저주를 해결할 실마리가 된다.</p>
<ul>
<li>변수 선택(Feature Selection)을 통해 중요도가 적은 변수를 제거하고, 효율적으로 인사이트를 얻을 수 있다.</li>
</ul>
<h2 id="12-모델-해석-방법의-분류">1.2 모델 해석 방법의 분류</h2>
<p>1) Intrinsic vs Post-hoc</p>
<ul>
<li>Intrinsic: Linear Regression, Logistic Regression과 같이 모델링 결과 parameter를 통해, 모델 그 자체로 바로 해석할 수 있는 방법</li>
<li>Post-hoc: 모델링 결과를 바로 해석 할 수 없어서, 해석을 위한 새로운 모델링이나 알고리즘을 적용하는 경우</li>
</ul>
<p>2) Model-specific vs Model-agnostic</p>
<ul>
<li>Model-specific: parameter 또는 그 모델의 구조로 해석하기 때문에 해석 방법이 그 모델에 특화되어 있음</li>
<li>Model-agnostic: 다양한 모델에 적용할 수 있고, 모델을 학습한 후에 적용되는 해석 방법 ex) PDP, ICE, SHAP</li>
</ul>
<p>3) Global vs Local</p>
<ul>
<li>Global: 전체 데이터를 아우르는 해석. 대체로 이 데이터에서 어떤 변수가 중요하고, 어떤 종류의 교호작용이 일어나는지에 대한 설명.</li>
<li>Local: 각 데이터 포인트, 각 인덱스마다 해석. 이터를 더욱 문맥화하여 해석할 수 있기 때문에 전체적으로 한번에 해석하는 것보다 더욱 정확할 가능성이 높음</li>
</ul>
<h2 id="13-해석의-성질">1.3 해석의 성질</h2>
<p>1) fidelity
: 모델의 예측 결과와 이에 대한 해석이 얼마나 근접한지에 대한 성질</p>
<ul>
<li>Intrinsic 해석 방법의 경우 fidelity 매우 높음</li>
<li>Post-hoc 해석 방법의 경우 fidelity가 높은지에 대한 여부는 매우 중요한 정보가 될 것</li>
</ul>
<p>2) consistency
: 같은 데이터셋으로 학습하고, 비슷한 예측을 한 두 모델에 대하여, 각각의 해석이 얼마나 다른지에 대한 성질</p>
<ul>
<li>두 모델의 예측 결과가 높은데 해석도 비슷하다면, 이 해석 방법은 매우 ‘consistent’하다</li>
<li>두 모델이 서로 예측 결과는 비슷해도 서로 다른 feature를 중심으로 학습했다면, 이러한 경우 항상 높은 consistency가 요구되는 것은 아니다.</li>
</ul>
<p>3) stability
: 비슷한 사례 또는 인덱스에 대해, 해석이 얼마나 비슷한지에 대한 성질</p>
<ul>
<li>매우 비슷한 인덱스 간 해석의 차이가 크다면, Stability가 부족. 이 경우 해석의 분산이 매우 커짐</li>
<li>Consistency 성질은 <strong>서로 다른 모델</strong>간 해석이 얼마나 비슷한지에 대한 것이고, Stability는 <strong>한 모델에 대하여</strong> 비슷한 인덱스 간 해석이 얼마나 비슷한지에 대한 것</li>
</ul>
<p>4) comprehensibility
: 해석 방법이 얼마나 인간이 이해할 수 있을 것인지</p>
<ul>
<li>사람들 간 소통이 가능하고, 충분히 이해할 만한 해석은 comprehensibility가 높다</li>
</ul>
<p>📎 <a href="https://soohee410.github.io/interpretability1">모델 해석의 중요성과 분류</a></p>
<h1 id="2-pdp-부분의존도-그림partial-dependence-plots">2. PDP, 부분의존도 그림(Partial Dependence Plots)</h1>
<p>partial:  다른 변수들의 영향을 모두 고정한 상황에서, 해당 변수를 한 단위(1-unit) 증가시킬 때 변화하는 y(target)의 크기</p>
<ul>
<li><p>PDP는 특성들을 선형적으로 변환하여, 선형관계 뿐만아니라 복잡한 관계도 나타낼 수 있다. 
ex) 그래디언트 부스팅 결과를 해석하려면?</p>
<ul>
<li>선형모델은 회귀계수를 이용하면 해석 할 수 있지만, 트리 모델은 해석할 수 없다.</li>
<li>대신 PDP를 사용하여 개별 특성과 타겟간의 관계를 볼 수 있다.</li>
</ul>
</li>
<li><p>PDP를 그릴때는 특성의 변화를 측정할 특성의 값을 grid point로 나타내는데, 이 한 점마다 예측을 진행한다.
<code>num_grid_points=n # 샘플 x grid 포인트 만큼 예측 진행. default=10</code></p>
</li>
<li><p>permutaion importance는 특성의 값을 랜덤하게 변형하고, 그떄 얼마나 에러가 커지는지를 기준으로 특성의 중요도를 산출했다. 하지만 특성이 긍정 또는 부정적으로 영향을 미치는지는 알 수 없었다. PDP로는 알 수 있다.</p>
</li>
<li><p>PDP interaction을 사용하면 2개 특성과 타겟과의 관계를 확인할 수 있다.</p>
</li>
</ul>
<h4 id="구현-아이디어">구현 아이디어</h4>
<p>1) 데이터에 등장하는 X(관심변수)의 모든 값에 하나씩, <strong>해당 변수의 모든 샘플을 그 값으로 대체</strong>한 후 이미 학습 시킨 모델을 통해 각 샘플에 대한 예측값을 구한다. 예를들어, 성별이 관심 변수일 때 해당 변수의 모든 값을 &#39;여성&#39;으로 대체한 후 예측값을 구하고, 그 뒤에는 모든 값을 &#39;남성&#39;으로 대체한 후 예측값을 구한다.
2) 관심 변수의 각 값에 대해 <strong>구한 예측값의 평균</strong>을 낸다. 각 값에 대해 평균 예측값이 어떻게 변화하는지 plot으로 나타낸다. 즉 x축은 성별(여성, 남성)일 것이고, y축에 해당하는 값은 각각 (여성일 때 예측값의 평균, 남성일 때 예측값의 평균)임.</p>
<h4 id="주의할-점">주의할 점</h4>
<p>샘플 수가 굉장히 많거나 관심 변수의 Cardinality가 매우 클 경우</p>
<ul>
<li>데이터가 크거나, 변수의 값이 매우 많은 연속형 변수일수록 연산량이 방대해짐</li>
<li>변수의 Parameter Space를 구성하는 원소들, 즉 해당 변수에 등장하는 값들이 정말 다양할 경우, 반복 횟수가 늘어나기 때문</li>
<li>웬만하면, cardinality가 비교적 작은 변수이거나 중요한 변수 한,두가지만 PDP를 통해 살펴보는 것이 좋을 것</li>
</ul>
<p>변수 각 상관성이 매우 클 경우</p>
<ul>
<li>PDP에서는 각 변수들이 서로 상관관계가 없다고 가정</li>
<li>사실상 실제로 각 변수들 간 서로 영향이 전혀 없는 데이터는 없기 때문에 PDP 적용하기 전 유의해야 한다.</li>
</ul>
<p>샘플 간 성질이 매우 다를 경우</p>
<ul>
<li>예측값들을 평균낸 값들로 영향을 보는 것이기 때문에, 샘플들의 서로 다른 성질들이 반영되지 못한다.</li>
<li>예를 들어, 절반은 예측값이 100이고, 절반은 예측값이 -100일 때, 평균은 0이 될 것이다.</li>
</ul>
<p>📎 <a href="https://soohee410.github.io/iml_pdp">Feature의 평균 영향력 및 관계 파악: PDP plot (Partial Dependence Plot) </a></p>
<h2 id="21-ice-individual-conditional-expectation-curves">2.1 ICE (Individual Conditional Expectation) curves</h2>
<p>: 하나의 ICE 곡선은 하나의 특성에 대해서 타겟값의 변화를 나타낸다.</p>
<ul>
<li>PDP는 ICE(Individual Conditional Expectation) 곡선의 평균 곡선이다.</li>
</ul>
<h4 id="구현-아이디어-1">구현 아이디어</h4>
<p>1) 데이터에 등장하는 X(관심변수)의 모든 값에 하나씩, <strong>해당 변수의 모든 샘플을 그 값으로 대체</strong>한 후 이미 학습 시킨 모델을 통해 각 샘플에 대한 예측값을 구한다.
2) 구한 후 평균을 내지 않고 모든 선을 plot으로 그린다.</p>
<h2 id="22-pdp-vs-ice">2.2 PDP vs ICE</h2>
<p>ex) 
Target: 회사에서 받는 bonus
X: experience(경력), degree(학위) &lt;- 이 둘은 교호작용 존재</p>
<p><img src="https://images.velog.io/images/kiki_/post/91437fb1-6f93-4780-83e4-76f55bdcdd63/image.png" alt="">
노란색 선: PDP
회색 선: ICE plot
회색선들은 똑같이 우상향하는 것이 아니라, 한 그룹은 우상향하고, 한 그룹은 평행한다.</p>
<p><img src="https://images.velog.io/images/kiki_/post/5cd4e358-f27d-49f9-9ccf-0b1e02241c91/image.png" alt="">
1: 학위 있음
0: 학위 없음
학위에 따라 근무경력과 보너스의 관계가 다름
학위 있으면, 근무경력 많아질 수록 보너스 증가
학위 없으면, 근무경력 상관없이 보너스 일정
<strong>-&gt; PDP만 보면 교호작용 파악할 수 없음. ICE를 함께 그려 파악</strong></p>
<p>📎 <a href="https://soohee410.github.io/iml_ice">모델에 영향을 주는 교호작용 파악: ICE plot (Individual Conditional Expectation)</a></p>
<h1 id="3-shapshapley-additive-explanations">3. SHAP(SHapley Additive exPlanations)</h1>
<p>: 게임이론에 나오는 이론으로써, 전체 성과에서 개인이 얼마나 공헌했는지를 수치로 나타내는 표현이다.</p>
<p>Shapley Values는 가능한 모든 조합을 고려한 후 한 플레이어의 <strong>평균 예상 한계 기여도</strong>를 의미한다.</p>
<p>아래 예를 통해 의미를 이해해보자.</p>
<p><img src="https://images.velog.io/images/kiki_/post/6d46870a-5aca-4433-8c84-dbdae8db8da9/Screen%20Shot%202021-11-04%20at%2010.57.23%20PM.png" alt=""></p>
<ul>
<li><p>위 예시는 앨리스와 밥이 혼자 일할 때, 앨리스가 먼저 일하고 밥이 일할때, 밥이 먼저 일하고 앨리스가 일할 때를 나타낸다. </p>
</li>
<li><p>게임이론에서 전략은 게임 참여자가 얻는 결과가 나 뿐 아니라 상대의 선택에 따라 달라질 때 취하는 선택을 말한다. 위 예시에서 보면 먼저 일하는 순서가 전략이라 할 수 있겠다.</p>
</li>
<li><p>각 상황에서 앨리스와 밥이 일한 기여도를 Marginal로 표현하고, 이러한 모든 조합을 고려한 후(Permutation), 평균을 낸것이 Shapley Value라 한다. </p>
</li>
<li><p>이러한 계산과정을 기반으로 하기 때문에 계산량이 굉장히 많고 샘플이 많아질수록 시간이 상당히 오래걸린다. </p>
</li>
<li><p>하지만 특성 간의 영향(교호작용)을 고려한 계산이 가능하고, 음의 관계도 표현할 수 있다. (개념상으로는 permutation importance 보다 정확하다.)</p>
</li>
</ul>
<p>그외 특징)</p>
<ul>
<li>PDP나 특성 중요도와 달리, SHAP은 데이터 샘플 하나에 대해 설명한다.</li>
<li>즉, 관측치 하나마다 특성의 영향도가 다르게 계산될 수 있다.</li>
</ul>
<p><a href="https://www.investopedia.com/terms/s/shapley-value.asp">Shapley Value</a></p>
<h2 id="31-shap-force-plot">3.1 SHAP Force Plot</h2>
<p><img src="https://images.velog.io/images/kiki_/post/9a2a9ac4-7ac7-4f6c-887b-74e015ce242a/image.png" alt=""></p>
<ul>
<li><p>y 축은 타겟의 예측값을 나타낸다. </p>
</li>
<li><p>왼쪽 지표를 &#39;feature X1 effects&#39;으로 바꾸면 위쪽 지표 &#39;feature X2&#39;와의 타겟에 대한 영향력을 나타낸다.(PDP interaction 2개 특성과 타겟과의 관계와 유사한 기능)</p>
</li>
<li><p>ex. 왼쪽: lat effects 위쪽: bathrooms / bathrooms의 shap value로 나열했을 때, lat이 타겟에 미치는 영향력</p>
</li>
<li><p>각 point에서 feature가 양(+) 또는 음(-)의 영향을 얼마나 주는지 나타낸다.</p>
</li>
<li><p>특정 feature가 전체 sample에 대한 Target의 변화에 얼만큼 영향력을 발휘하는지는 알 수 없다. (SHAP Summary plot을 통해 확인)</p>
</li>
</ul>
<p><img src="https://images.velog.io/images/kiki_/post/156a6df2-fbea-4cc6-aaa6-0e5b7ff198c5/image.png" alt=""></p>
<ul>
<li>sample order by similarity: 유사한 샘플(feature) 군집으로 정렬. 예시 이미지처럼 오른쪽 군집의 경우 암위험이 높은 군집으로 파악할 수 있다. </li>
<li>sample order by output value: 모델의 예측값(target)들로 정렬. 예측값들의 순서에 따라 독립특성들이 어떤 영향을 보여주는지 파악할 수 있습니다. </li>
<li>original sample ordering: 원래 샘플 순서(index)대로 정렬. 경향성 보기가 어려움.</li>
</ul>
<p>📎 <a href="https://towardsdatascience.com/explain-any-models-with-the-shap-values-use-the-kernelexplainer-79de9464897a">Explain Any Models with the SHAP Values — Use the KernelExplainer</a></p>
<h2 id="32-shap-summary-plot">3.2 SHAP Summary Plot</h2>
<h4 id="scatter">Scatter</h4>
<p><img src="https://images.velog.io/images/kiki_/post/7340321e-1cb9-4bfe-b7e4-89bbea3e5500/image.png" alt=""></p>
<ul>
<li>feature들이 타겟에 주는 영향력을 요약하였다.</li>
<li>x축 SHAP value는 피처가 target에 주는 영향을 나타낸다.</li>
<li>위 그림은 집값(target)예측 모델로써, lat(위도) 점들이 0이하에 주로 몰려 있어 집값을 낮추는 영향을 주었다.</li>
<li>Feature value는 피처의 자체의 값을 색으로 표현한다. 스케일링 된 값이라 생각하면 편하다.</li>
<li>빨간색 lat은 고위도, 파란색 lat은 저위도를 나타낸다.</li>
</ul>
<h4 id="violin">Violin</h4>
<p><img src="https://images.velog.io/images/kiki_/post/b4d30d0c-f051-48c3-a34f-ecf76503769b/image.png" alt=""></p>
<ul>
<li>같은 결과를 violin plot으로 나타내보자</li>
<li>lat은 분산이 크며, 음과 양으로 영향을 많이 주고 있다.</li>
<li>bedroooms은 크게 영향을 미치지 못하고 있다.</li>
<li>점으로 나타나는 부분은 이상치를 나타낸다.</li>
</ul>
<h4 id="bar">Bar</h4>
<p><img src="https://images.velog.io/images/kiki_/post/95544e5a-9e09-4f0b-9628-2d0777dbabfc/image.png" alt=""></p>
<ul>
<li>SHAP value를 절댓값 씌우고 평균낸 값으로써, feature importance와 비슷한 역할을 한다.</li>
</ul>
<h1 id="정리">정리</h1>
<p>서로 관련이 있는 모든 특성들에 대한 전역적인(Global) 설명</p>
<ul>
<li>Feature Importances</li>
<li>Drop-Column Importances</li>
<li>Permutaton Importances</li>
</ul>
<p>타겟과 관련이 있는 개별 특성들에 대한 전역적인 설명 (전체 관측치에 대해)</p>
<ul>
<li>Partial Dependence plots</li>
</ul>
<p>개별 관측치에 대한 지역적인(local) 설명 (개별 관측치에 대해)</p>
<ul>
<li>Shapley Values</li>
</ul>
<p>이러한 방법을 사용하여 모델의 설명력을 높일 수 있다. 물론, 이러한 설명이 신뢰를 주려면 모델 성능이 좋아야 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] Feature Importances / Boosting]]></title>
            <link>https://velog.io/@kiki_/TIL-Feature-Importances-Boosting</link>
            <guid>https://velog.io/@kiki_/TIL-Feature-Importances-Boosting</guid>
            <pubDate>Tue, 02 Nov 2021 10:08:32 GMT</pubDate>
            <description><![CDATA[<h1 id="1-feature-importances">1 Feature Importances</h1>
<h2 id="11-feature-importancemean-decrease-impurity-mdi">1.1 Feature Importance(Mean decrease impurity, MDI)</h2>
<p>: 각각 특성을 모든 트리에 대해 <strong>평균 불순도 감소(mean decrease impurity)</strong>를 계산한 값</p>
<h4 id="장점">장점</h4>
<ul>
<li>속도가 빠르다.</li>
</ul>
<h4 id="단점">단점</h4>
<ul>
<li>high cardinality 특성의 경우 중요도가 높게 나올 수 있음</li>
</ul>
<h2 id="12-drop-column-importance">1.2 Drop-column Importance</h2>
<p>: 모든 <strong>특성을 한번씩 제거</strong>하고, 제거하기 전/후 성능을 비교함으로써 중요도를 계산해보는 방법</p>
<h4 id="장점-1">장점</h4>
<ul>
<li>정확한  중요도 계산이 가능한다.</li>
</ul>
<h4 id="단점-1">단점</h4>
<ul>
<li>특성이 n개 존재할 때 n + 1 번 학습이 필요</li>
<li>이론적으로는 좋아보이나, 특성이 많아질 수록 매우 느려져서 현실적으로 불가능하다.</li>
</ul>
<h2 id="13-순열중요도permutaion-importance-mean-decrease-accuracy-mda">1.3 순열중요도(Permutaion Importance, Mean Decrease Accuracy, MDA)</h2>
<p>: 검증데이터에서 각 특성을 제거하지 않고 특성값에 <strong>무작위로 노이즈를 주어</strong> 기존 정보를 제거하여 특성이 기존에 하던 역할을 하지 못하게 하고 성능을 측정.</p>
<ul>
<li>특성중요도가 마이너스(-)는 모델에 영향을 주지 못하므로 제거해도 괜찮다.</li>
<li>모델을 재학습해줄 필요가 없기 때문에 drop에 비해 계산 시간이 빠르다.</li>
</ul>
<p>feature의 중요도는 ‘partial importance’가 아님</p>
<ul>
<li>각 feature의 중요도 안에는 다른 feature들과의 교호작용도 포함</li>
<li>특정 feature의 값들을 랜덤으로 섞으면, 다른 feature들과의 연결고리도 끊어지게 되어, 해당 feature와 관련이 있는 모든 교호작용의 영향이 사라짐</li>
<li>두 feature 간 교호작용의 영향은 그 두 개의 feature importance 각각에 중복 포함</li>
</ul>
<h4 id="shuffle">shuffle</h4>
<p>: feature의 값들을 무작위로 섞어서(shuffle, permutation) 그 feature를 노이즈로 만드는 것</p>
<ul>
<li>무작위로 섞게 되면, 목표 변수와 연결고리를 끊게 되는 것이므로, feature를 안쓴다고 할 수 있음</li>
<li>이렇게 섞었을 때 예측값이 실제 값보다 얼마나 차이가 더 생겼는지를 통해 해당 feature의 영향력을 파악</li>
<li>모델이 이 변수에 크게 의존하고 있을 경우에는 예측 정확도가 크게 감소</li>
<li>이렇게 학습한 모델과 데이터만 있으면 변수 중요도를 뽑아주는 방법이기 때문에, 모델의 학습 과정, 내부 구조에 대한 정보가 필요 없어서 어느 모델이든 적용가능</li>
</ul>
<h4 id="주의할-점">주의할 점</h4>
<p>할 때마다 결과가 매우 달라질 수 있음</p>
<ul>
<li>값을 무작위로 섞는 것이 특징이기 때문</li>
</ul>
<p>무작위로 섞다보면 매우 비현실적인 데이터 인스턴스(instance)를 생성할 가능성도 높음</p>
<ul>
<li>특히, 변수들 간 상관관계가 높을 경우 이러한 문제점이 발생하기 쉬움</li>
<li>예를들어 상당한 연관이 있는 변수인 &#39;키&#39;와 &#39;몸무게&#39; 변수가 있을 때, 키의 값들을 랜덤으로 섞다보면 키가 2m인데 몸무게가 30kg인 인스턴스를 만들 수도 있음</li>
</ul>
<h4 id="장점-2">장점</h4>
<ul>
<li>각 특성을 제거하지 않고, 특성을 무력화하여 성능을 비교할 수 있다.</li>
</ul>
<h4 id="단점-2">단점</h4>
<ul>
<li>feature간 상관관계가 있을 때 오류가 생길 수 있다.</li>
</ul>
<p>📎 <a href="https://blog.ceshine.net/post/please-stop-permuting-features/">[Paper] Please Stop Permuting Features</a>
📎 <a href="https://soohee410.github.io/iml_permutation_importance">모델 상관없이 변수 중요도의 파악: Permutation Feature Importance</a></p>
<h1 id="2-boosting">2 Boosting</h1>
<p>: 부스팅은 오분류된 데이터에 초점을 맞추어 더 많은 가중치를 주는 방식</p>
<ul>
<li><p>초기에는 모든 데이터가 동일한 가중치를 가지지만, 각 round가 종료된 후 가중치와 중요도 계산</p>
</li>
<li><p>복원추출 시에 가중치 분포 고려</p>
</li>
<li><p>부스팅의 종류: Adaboost, Gradient Boosting, LPBoost, TotalBoost, MadaBoost, LogitBoost</p>
</li>
</ul>
<h2 id="21-부스팅과-랜덤포레스트의-공통점">2.1 부스팅과 랜덤포레스트의 공통점</h2>
<ul>
<li>부스팅과 배깅 모두 <strong>Tree기반</strong> 앙상블 모델에 속한다.</li>
<li>트리기반 모델은 <strong>비선형적인 관계, 특성상호작용이 존재하는 데이터</strong>에서 사용하기 좋다.</li>
<li>부스팅 모델도 마찬가지이다.</li>
</ul>
<h2 id="22-부스팅과-랜덤포레스트의-차이점">2.2 부스팅과 랜덤포레스트의 차이점</h2>
<ul>
<li>가장 큰 차이! 랜덤포레스트의 경우 각 트리가 독립적으로 만들어지지만, <strong>부스팅은 만들어지는 트리가 이전에 만들어진 트리에 영향을 받음</strong></li>
<li>부스팅은 Weak learner가 sequential하게 가중치를 달리하며 영향력을 행사함</li>
<li>배깅은 <strong>독립(병렬적)</strong>, 부스팅은 <strong>종속(순차적)</strong></li>
</ul>
<h2 id="23-adaboost">2.3 Adaboost</h2>
<p>: 각 트리가 만들어질 때 <strong>잘못 분류되는 관측치에 가중치</strong>를 더 주어 다음 트리가 만들어질 때 더 많이 샘플링 되도록 함으로써 해당 관측치가 잘 분류 될 수 있도록 한다.</p>
<ul>
<li>기본모델: stump(one node two leaves)</li>
<li>adaboost는 트리마다 중요도가 다르다</li>
<li>트리를 만드는 순서도 중요하다.</li>
<li>예측할때 트리들의 가중치가 다르므로 가중합을 통해 구한다.</li>
</ul>
<h2 id="24-gradient-boostingxgboost-lightgbm-catboost">2.4 Gradient boosting(Xgboost, LightGBM, Catboost)</h2>
<p>: <strong>Weak learner의 잔차(residual)를 학습</strong>하여 Strong learner를 만든다.</p>
<ul>
<li><p>잔차라고 해서 회귀문제에만 적용되는 것은 아니다. 회귀 분류 모두 사용가능하다.</p>
</li>
<li><p>그래디언트 부스팅이 랜덤포레스트 알고리즘보다 성능이 항상 좋은 것은 아니다.</p>
</li>
<li><p>불균형 클래스의 경우 일반적으로 그래디언트 부스팅이 랜덤포레스트 보다 성능이 좋다.</p>
</li>
<li><p>하지만, <strong>데이터에 노이즈가 많을 경우 과대적합</strong> 될 가능성이 랜덤포레스트보다 높으며, <strong>하이퍼파라미터 튜닝을 하기에 랜덤포레스트보다 더 민감</strong>하고 순차적으로 트리를 만들어 학습하기 때문에 학습에 <strong>더 오랜 시간</strong>이 걸린다.</p>
</li>
<li><p>시간을 들여서 튜닝을 할 수 있다면 부스팅이 좋다. 랜덤포레스트 먼저 써보고, 그다음 부스팅을 쓰자.</p>
</li>
</ul>
<h3 id="241-xgboost">2.4.1 Xgboost</h3>
<ul>
<li>부스팅은 직렬, Xgboost는 병렬(빠름)</li>
<li>데이터 별 오류를 다음 round 학습에 반영 시킨다.</li>
<li>Level-wise 로 트리를 만듦</li>
<li>그래디언트 부스팅과 달리, Regularization term이 추가되어 모델이 과적합(overfitting) 되는 것을 방지해준다.</li>
<li>시간이 오래걸린다.</li>
</ul>
<h4 id="monotonic-constraints">monotonic constraints</h4>
<p>단조 증가한다고 명확히 알고 있는 특성이 있다면, 옵션을 주어 적용이 가능하다.</p>
<ul>
<li>예를 들어 우상향인 데이터에서 데이터가 부족하여 하강하는 특성이 있다면, 옵션을 주어 우상향하게 할 수 있다.</li>
</ul>
<h4 id="early-stopping">Early Stopping</h4>
<p>Early Stopping 사용하여 과적합을 피한다.</p>
<ul>
<li>왜 n_estimators 최적화를 위해 GridSearchCV나 반복문 대신 early stopping을 사용할까?</li>
<li>Early Stopping은 트리를 만들고, 더이상 점수 개선이 없다면 학습을 멈춘다.</li>
<li>하지만 GridSearch를 사용하면 트리개수만큼 학습해야 한다.</li>
<li>따라서 Early Stopping이 효과적이다.</li>
</ul>
<pre><code class="language-python">encoder = OrdinalEncoder()
X_train_encoded = encoder.fit_transform(X_train) # 학습데이터
X_val_encoded = encoder.transform(X_val) # 검증데이터

model = XGBClassifier(
    n_estimators=1000,  # &lt;= 1000 트리로 설정했지만, early stopping 에 따라 조절됩니다.
    max_depth=7,        # default=3, high cardinality 특성을 위해 기본보다 높여 보았습니다.
    learning_rate=0.2,
#     scale_pos_weight=ratio, # imbalance 데이터 일 경우 비율을 적용합니다.
    n_jobs=-1
)

eval_set = [(X_train_encoded, y_train), 
            (X_val_encoded, y_val)]

model.fit(X_train_encoded, y_train, 
          eval_set=eval_set,
          eval_metric=&#39;error&#39;, # #(wrong cases)/#(all cases)
          early_stopping_rounds=50
         ) # 50 rounds 동안 스코어의 개선이 없으면 멈춤</code></pre>
<h3 id="242-lightgbm">2.4.2 LightGBM</h3>
<ul>
<li>xgb와 달리, Leaf-wise loss를 사용하여 loss를 줄일 수 있다. </li>
<li>속도가 빠르다. (GPU 지원)</li>
<li>과적합에 민감하다.</li>
</ul>
<h3 id="243-catboost">2.4.3 Catboost</h3>
<ul>
<li>잔차 추정의 분산을 최소로 하면서 bias를 피하는 기법</li>
<li>Level-wise</li>
<li>관측치를 포함한 채로 부스팅하는 것이 아닌, 관측치를 뺸채로 학습해서 그 관측치에 대한 unbiased residual을 구함</li>
</ul>
<p>📎 <a href="https://hanishrohit.medium.com/whats-so-special-about-catboost-335d64d754ae">What’s so special about CatBoost?</a>
📎 <a href="https://datascience.stackexchange.com/questions/26699/decision-trees-leaf-wise-best-first-and-level-wise-tree-traverse">Decision trees: leaf-wise (best-first) and level-wise tree traverse</a></p>
<h2 id="25-하이퍼파라미터-튜닝">2.5 하이퍼파라미터 튜닝</h2>
<p>Random Forest</p>
<ul>
<li>max_depth (높은값에서 감소시키며 튜닝, 너무 깊어지면 과적합)</li>
<li>n_estimators (적을경우 과소적합, 높을경우 긴 학습시간)</li>
<li>min_samples_leaf (과적합일경우 높임)</li>
<li>max_features (줄일 수록 다양한 트리생성, 높이면 같은 특성을 사용하는 트리가 많아져 다양성이 감소)</li>
<li>class_weight (imbalanced 클래스인 경우 시도)
XGBoost</li>
<li>learning_rate (높을경우 과적합 위험이 있습니다)</li>
<li>max_depth (낮은값에서 증가시키며 튜닝, 너무 깊어지면 과적합위험, -1 설정시 제한 없이 분기, 특성이 많을 수록 깊게 설정)</li>
<li>n_estimators (너무 크게 주면 긴 학습시간, early_stopping_rounds와 같이 사용)</li>
<li>scale_pos_weight (imbalanced 문제인 경우 적용시도)</li>
</ul>
<h1 id="질문">질문</h1>
<ol>
<li>부스팅은 어떤 인코딩을 하면 좋나요? </li>
</ol>
<ul>
<li>부스팅도 트리와 유사, 부스팅도 원핫인코딩보다 다른 인코딩을 사용하는 것이 좋다</li>
</ul>
<ol start="2">
<li>monotonic constraints에서 왜 단조 증가하는 특성을 조정해주어야 하나요?</li>
</ol>
<ul>
<li>원래 단조증가하는 특성인데 오류에 의해서 비단조로 특성으로 나왔을 때 조정</li>
</ul>
<ol start="3">
<li>불균형 class 조정</li>
</ol>
<ul>
<li>대부분 오버, 언더 샘플링이나 class weight으로 조정 가능</li>
</ul>
<ol start="4">
<li>순열 중요도 계산 마지막 부분에서 순열 중요도의 평균 감소값과 그 표준편차의 차를 계산하여 양수인 특징을 왜 골라내는지 이해가 잘 안됩니다.</li>
</ol>
<ul>
<li>전체 표준편차보다 중요하게 쏠려있는 특징을 고려한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] Choose Your ML Problems]]></title>
            <link>https://velog.io/@kiki_/TIL-Choose-Your-ML-Problems</link>
            <guid>https://velog.io/@kiki_/TIL-Choose-Your-ML-Problems</guid>
            <pubDate>Mon, 01 Nov 2021 00:53:54 GMT</pubDate>
            <description><![CDATA[<h1 id="오늘-배운-것들">오늘 배운 것들</h1>
<h2 id="1-예측-문제-정의">1. 예측 문제 정의</h2>
<h3 id="11-데이터-과학자-실무-프로세스">1.1 데이터 과학자 실무 프로세스</h3>
<p>1) 비즈니스 문제</p>
<ul>
<li>실무자들과 대화를 통해 문제를 발견
2) 데이터 문제</li>
<li>문제와 관련된 데이터를 발견
3) 데이터 문제 해결</li>
<li>데이터 처리, 시각화</li>
<li>머신러닝/ 통계
4) 비즈니스 문제 해결</li>
<li>데이터 문제 해결을 통해 실무자들과 함께 해결</li>
</ul>
<p>타겟을 명확하게 정의해야 함 </p>
<ul>
<li>지도학습에서는 예측할 타겟을 먼저 정한다.</li>
<li>실수형 타겟 타입을 변형시켜 이진 분류 문제로 변경할 수도 있다.</li>
<li>분류로 풀때 활용도 쉽다.</li>
</ul>
<h2 id="2-정보의-누수leakage">2. 정보의 누수(leakage)</h2>
<p>데이터에 대해 완전히 이해하고 있지 못했을 떄, 예측을 100% 가깝게 잘 하는 경우가 종종 있다.</p>
<p>1) 타겟변수 외에 예측 시점에 사용할 수 없는 데이터가 포함되어 학습이 이루어질 경우
2) 훈련데이터와 검증데이터를 완전히 분리하지 못했을 경우</p>
<ul>
<li><strong>정보의 누수</strong>가 일어나 과적합을 일으키고 실제 테스트 데이터에서 성능이 급격하게 떨어짐</li>
<li>정보의 누수는 실제 회사 업무에서 너무나도 중요하다.</li>
<li>100% 정답률이 나왔다면 정보누수일 가능성이 매우높다.</li>
<li>사람이 풀기 어려운 문제라면 모델도 풀기 어렵다.</li>
</ul>
<p>문제에 적합한 평가지표 선택</p>
<ul>
<li>분류와 회귀 평가지표 다름</li>
<li>왜 accuracy만 사용하면 모델 성능에 대해 잘못된 판단을 내리는가?<ul>
<li>불균형 한 데이터의 경우 하나의 class로 만 예측해도 accuracy가 높게 나올 수 있다.</li>
<li>따라서 훈련 정확도가 1이 나온 경우 <strong>데이터 누수(Data Leakage)</strong>와 <strong>과대적합(Overfitting)</strong>을 의심해봐야 한다.</li>
<li>F1-score등을 함께 확인하여 클래스 별로 학습이 잘 이루어지고 있는지 확인해야 한다.</li>
<li>재현율(recall)을 높이고자 한다면, 임계값을 낮춰야 한다. </li>
</ul>
</li>
</ul>
<h2 id="3-타겟-분포-변환">3. 타겟 분포 변환</h2>
<ul>
<li>타겟 분포가 <strong>정규분포일 때 좋은 성능</strong>을 보임</li>
</ul>
<h2 id="31-회귀-데이터-변환">3.1 회귀 데이터 변환</h2>
<p><img src="https://images.velog.io/images/kiki_/post/90dba572-b3d4-4e72-a1d5-276ef46fb95d/image.png" alt="">
: 분포의 대칭화. 산포를 비슷하게 하기 위해 변순 사이의 관계를 단순하게 표현</p>
<ul>
<li>선형 변환(linear transform): 말 그대로 선형식으로 변환하는 것이다. 선형변환에서는 분포의 형태(shape)가 바뀌지 않는다.</li>
<li>비선형변환(nonlinear transform): 로그변환, 지수변환, 제곱변환 등의 비선형변환에서는 분포의 형태(shape)가 바뀐다.<ul>
<li>제곱 변환: 오른쪽 꼬리를 길게 만든다.</li>
<li>제곱근 변환: 왼쪽 꼬리를 길게 만든다.</li>
<li>로그 변환: 왼쪽꼬리를 길게 만든다.</li>
<li>지수 변환: 오른쪽 꼬리를 길게 만든다.</li>
</ul>
</li>
</ul>
<h4 id="로그변환log-transform">로그변환(Log-Transform)</h4>
<p><img src="https://images.velog.io/images/kiki_/post/ed7775c5-6016-4756-b787-f35ab76fd471/image.png" alt=""></p>
<ul>
<li>타겟 left, right skewed 둘다 사용</li>
<li>정규성을 높이고 분석에서 정확한 값을 얻기 위함</li>
</ul>
<p><img src="https://images.velog.io/images/kiki_/post/dcc648f4-f895-4044-b5c8-e75e6c6cb708/image.png" alt=""></p>
<ul>
<li>log의 역할은 큰 수를 같은 비율의 작은 수로 바꿔 주는 것이다.</li>
<li>log는 큰 수를 작게 만들고 복잡한 계산을 간편하게 하기위해 사용한다. 로그를 취하는 순간 그 수는 지수가 되어버리니, 값이 작아 진다.</li>
<li>예를 들어, 100=10이다. $100^2$에 상용로그를 취한다면 100을 10을 밑으로 하는 지수가 있는 값의 그 지수로 나타낸다. 그래서 100에 상용로그를 취하면 2가 된다. -&gt; $\log_{2}{10}$</li>
</ul>
<p>📎 <a href="https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;blogId=mghsh1004&amp;logNo=220586341345">[야Hong&#39;s R을 활용한 탐색적 자료분석]5장 - 자료의 재표현</a></p>
<p>📎 <a href="https://leebaro.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EC%8B%9C-%EC%8B%9D%EC%97%90-%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%B7%A8%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0">데이터 분석 시 식에 로그를 취하는 이유</a></p>
<h2 id="32-분류-클래스-불균형">3.2 분류 클래스 불균형</h2>
<p><strong>분류</strong>에서 타겟 <strong>클래스비율이 70% 이상 차이</strong>날 경우 정확도만 사용하면 판단을 정확히 할 수 없음</p>
<ul>
<li>클래스 불균형 해결 방법으로 <strong>클래스 가중치 조절, 오버샘플링, 언더샘플링 방법</strong>을 사용할 수 있음</li>
</ul>
<h4 id="문제에-적합한-평가지표-선택">문제에 적합한 평가지표 선택</h4>
<p>평가지표로 accuracy만 사용한다면?</p>
<ul>
<li>클래스 불균형 문제에서 오류를 범할 수 있다.</li>
<li>(이를 실제로 분석가가 이용할 수 있다. 정확도만 표기)</li>
<li>중요한 문제는 대부분 불균형 문제이다.</li>
<li>학습할 때 class 웨이트를 줌, 샘플링 (다양한 방법 써볼 것) </li>
</ul>
<h4 id="robust하다의-의미">robust하다의 의미</h4>
<p>트리모델이 회귀 모델에 비해 robust하다.</p>
<ul>
<li>robust, 견고하다. 강건하다.</li>
<li>어떤 특징에 robust하다.</li>
<li>트리기반 모델일때 데이터가 특성에 영향을 덜 받는다.</li>
<li>트리기반 모형일때 scailing 중요하지 않는 것과 연관</li>
</ul>
<h1 id="4-data-wrangling">4. Data Wrangling</h1>
<ul>
<li>데이터 엔지니어 뿐만 아니라 벡엔드개발자 db를 만지는 사람들도 많이 쓴다.</li>
<li>sql로 주로 하지만, 파이썬으로도 가능 </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[😺10월 3째 주 weekly review]]></title>
            <link>https://velog.io/@kiki_/10%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review-76nskcah</link>
            <guid>https://velog.io/@kiki_/10%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review-76nskcah</guid>
            <pubDate>Fri, 29 Oct 2021 09:01:48 GMT</pubDate>
            <description><![CDATA[<h1 id="더-공부하고-싶은-내용">더 공부하고 싶은 내용</h1>
<p>하이퍼 파라미터 튜닝, 특성공학</p>
<h1 id="1-사실">1. 사실</h1>
<p>이번 한 주동안 캐글대회를 기반으로 decision trees, random forests, evaluation metrics for classification, model selecion등을 배웠다.</p>
<h1 id="2-느낌">2. 느낌</h1>
<p>모델의 성능개선이 재밌으면서도 어렵게 느껴졌다. 
처음 배운대로 모델을 만든 후에, 나만의 방법으로 개선해서 점수가 올라갔을 때 쾌감을 느꼈다.
하지만 기쁨도 잠시, 아무리 하이퍼 파라미터를 조절하고 여러 방법을 사용해도 점수가 안올라가서 답답했다.
점수가 이제는 안오를것 같았고, 다른 사람들은 어떻게 저렇게 점수가 높은지 궁금했다.
그래도 다시 내 모델을 고쳐보고, 새로운 방법도 시도하는 수밖에 없다고 생각이 들었다.</p>
<h1 id="3-교훈">3. 교훈</h1>
<p>모델 실험을 체계적으로 정리할 필요가 있다는 교훈을 느꼈다.
여러가지 시도를 하다보니, 내가 어떤 방식을 썼는지 점수가 몇점이었는지가 뒤죽박죽 섞여있다. 
하이퍼파라미터 튜닝 할때도 수치랑 결과를 메모장에 그냥 적어놓고 있다..
이렇게 정리가 안되어있으니 시간도 낭비되고, 어떤 부분이 중요한 요인인지 파악하기가 힘들었다.</p>
<h1 id="4-향후-행동">4. 향후 행동</h1>
<ol>
<li>모델링 결과들 체계적으로 정리</li>
<li>새로운 관점으로 접근해보기(특성 중요도, 특성 스케일링 중심!)</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] confusion matrix / model selection]]></title>
            <link>https://velog.io/@kiki_/TIL-confusion-matrix-model-selection</link>
            <guid>https://velog.io/@kiki_/TIL-confusion-matrix-model-selection</guid>
            <pubDate>Fri, 29 Oct 2021 08:56:57 GMT</pubDate>
            <description><![CDATA[<h1 id="confusion-matrix">confusion matrix</h1>
<ol>
<li>모델을 만들때 설명하기 아주 유용함</li>
<li>f1 score는 precision과 recall을 둘다 보기 위해 많이 쓰임</li>
<li>베타를 키웠을 때 recall이 영향이 더 커진다.</li>
<li>시나리오에 따라 precision과 recall의 차이를 정확히 알아야 함</li>
</ol>
<ul>
<li>암진단 recall 중요, 스팸메일 precision 중요</li>
<li>비즈니스 시나리오에 따라 달라진다.</li>
</ul>
<ol start="4">
<li>비즈니스 시나리오에 따라 임계 값을 조절해주어야 함</li>
</ol>
<ul>
<li>임계값을 조절함으로써 competition에서도 중요</li>
</ul>
<ol start="5">
<li>roc, auc </li>
</ol>
<ul>
<li>accuracy 외에도 여러가지 평가지표가 쓰일 수 있음</li>
</ul>
<h1 id="model-selection">model selection</h1>
<ol>
<li>교차검증</li>
</ol>
<ul>
<li>중요함</li>
</ul>
<ol start="2">
<li>그리드 서치 - 랜덤 서치</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] 결정트리, 랜덤포레스트]]></title>
            <link>https://velog.io/@kiki_/TIL-%EA%B2%B0%EC%A0%95%ED%8A%B8%EB%A6%AC-%EB%9E%9C%EB%8D%A4%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8</link>
            <guid>https://velog.io/@kiki_/TIL-%EA%B2%B0%EC%A0%95%ED%8A%B8%EB%A6%AC-%EB%9E%9C%EB%8D%A4%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8</guid>
            <pubDate>Tue, 26 Oct 2021 04:10:19 GMT</pubDate>
            <description><![CDATA[<h1 id="1-결정트리decision-trees">1 결정트리(Decision Trees)</h1>
<p>: 특성들의 수치를 가지고 질문을 통해 정답 클래스를 찾아가는 과정</p>
<ul>
<li><strong>노드(node)</strong>: 질문 또는 말단의 정답</li>
<li><strong>엣지(edge)</strong>: 노드를 연결하는 선</li>
</ul>
<h2 id="11-결정트리-학습-알고리즘">1.1 결정트리 학습 알고리즘</h2>
<p><strong>결정트리는 노드를 어떻게 분할하는가</strong>에 대한 문제.
비용함수를 정의하고 그것을 최소화하는 알고리즘을 갖는다.</p>
<p>트리 학습에 자주 쓰이는 비용함수는 <strong>지니불순도(Gini Impurity or Gini Index)</strong>와 <strong>엔트로피(Entropy)</strong>가 잇다. 노드를 분할하는 시점에서 이러한 <strong>비용함수를 가장 많이 줄이는(불순도의 감소가 최대가 되는, 정보획득이 가장 큰)</strong> 특성을 찾아내는 것이 핵심이다.</p>
<ul>
<li><strong>불순도(impurity)</strong>: 여러 범주가 섞여 있는 정도</li>
<li>불순도 감소량이 크다. 
= 정보 획득량이 많다. 
= 특성의 중요도가 크다.</li>
<li><strong>정보획득(Information Gain)</strong>:특정한 특성을 사용해 분할했을 때 엔트로피의 감소량</li>
<li>${\displaystyle IG(T,a)=\mathrm {H} {(T)}-\mathrm {H} {(T|a)}}$ = 분할전 노드 불순도 - 분할 후 자식노드 들의 불순도</li>
</ul>
<p>뿌리노드에는 불순도 감소량(정보획득량)이 가장 큰 기준이 들어간다.(중요한 특성이다)</p>
<p>결정트리는 분기를 할때만 최적화되어있다. 만든 트리는 최적 트리는 아니다.</p>
<ul>
<li>이러한 알고리즘을 greedy 알고리즘이라 한다.</li>
<li>결정트리가 노드를 분기하는 그 &#39;순간&#39;의 최적 결정을 내릴 뿐이지, 전체의 큰 그림을 보고 내리는 결정이 아니기 때문</li>
<li>예를 들어서 3번 분기한다고 하면, 매분기마다 비용함수(불순도)가 작은방향으로 분기가 만들어지지만, 전체 결과로 나온것이 전체트리에서는 최적이 아닐수도 있음. 단순히 각각의 분기로만 계산해본 결과이므로.</li>
</ul>
<p>결정트리는 상대적인 feature importance만 볼 수 있다. 절대적으로 믿을 수는 없다.</p>
<ul>
<li>feature importance가 어떻게 계산되는지 공식을 보자</li>
<li>importance 공식은 해당 트리에서 각각의 feature가 불순도를 낮추는 데 기여한 비중인 것으로 기억하는데, DT와 importance 공식의 특성상 feature가 뿌리노드와 가까운 분기에서 쓰였을수록 매우 큰 importance를 차지한다. </li>
<li>feature importance가 낮다고해서 낮은중요도가 아니라 상위중요도에 많이 포함되서, 중요도가 낮게 나올수도 있다.</li>
</ul>
<h2 id="12-트리모델의-장점">1.2 트리모델의 장점</h2>
<ul>
<li>해석하기가 쉽다.</li>
<li>스케일링을 안해줘도 된다.</li>
<li>이상치에 영향을 덜 받는다.</li>
<li>트리모델은 다중공선성의 영향을 덜 받는다.<ul>
<li>특성중요도가 높은 기준으로 먼저 분류하기 때문. </li>
</ul>
</li>
<li>특성상호작용을 피할 수 있다.<ul>
<li>선형모델과 달리 비선형, 비단조(non-monotonic), 특성상호작용(feature interactions) 특징을 가지고 있는 데이터 분석에 용의</li>
</ul>
</li>
<li>트리모델은 분류회귀 둘다 사용가능하다.(회귀에서는 말단 leaf 노드의 값 사이 평균을 통해 예측)</li>
</ul>
<h2 id="13-트리모델의-단점">1.3 트리모델의 단점</h2>
<ul>
<li>과적합 되기 쉽다.<ul>
<li>따라서 과적합을 해결하는 부분을 관심을 가져야 함(하이퍼 파라미터 튜닝, 복잡도 제한)</li>
</ul>
</li>
<li>데이터가 적을 때 사용하기 어렵다.</li>
<li>샘플에 민감. 트리구조가 잘 바뀜(해석도 바뀜)</li>
</ul>
<h3 id="131-결정트리의-과적합-문제">1.3.1 결정트리의 과적합 문제</h3>
<p>하이퍼파라미터 튜닝을 통해 과적합을 줄일 수 있다.</p>
<ul>
<li>max_depth: 트리의 최대 깊이</li>
<li>min_samples_split: 중간 노드를 나누는데 필요한 최소 샘플 수</li>
<li>min_samples_leaf: 말단 노드를 나누는데 필요한 최소 샘플 수 </li>
</ul>
<p>📎<a href="https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html">sklearn.ensemble.RandomForestClassifier</a></p>
<h1 id="2-랜덤-포레스트">2 랜덤 포레스트</h1>
<p>: 앙상블 방법으로써, 한 종류의 데이터로 여러 머신러닝 기본모델을 만들어 그 모델들의 예측결과를 다수결이나 평균 내어 예측하는 방법</p>
<ul>
<li>랜덤포레스트는 결정트리를 기본모델로 사용한다.</li>
<li>기본모델(weak base learner): 앙상블에서 각 단위 모델에 쓰이는 모델의 종류. </li>
<li>기준모델:  모델성능 평가의 비교 기준이 되는 모델. 타겟의 대략적인 모양. </li>
</ul>
<h2 id="22-앙상블의-장점">2.2 앙상블의 장점</h2>
<ul>
<li>실전에서도 많이 쓰이는 모델</li>
<li>과적합 방지, 일반화 잘됨</li>
</ul>
<p>랜덤 포레스트가 결정트리보다 성능이 떨어지는 이유?</p>
<ul>
<li>랜덤포레스트는 어떤 튜닝 없이 (디폴트) 데이터를 다 사용하지 않기 때문에 결정트리보다 성능이 떨어질 수 있다.</li>
<li>하지만 결정트리보다 과적합 문제를 줄여줄 수 있다. </li>
<li>그렇다고 무조건 랜덤포레스트가 과적합을 조절해주는 것은 아니다. 파라미터를 조절 해주어야 한다.</li>
</ul>
<h3 id="221-과적합방지">2.2.1 과적합방지</h3>
<ul>
<li>여러 트리들이 있을 때, 트리마다 사용하는 특성이 다름</li>
<li>독립성이 있음</li>
<li>특성 자체를 랜덤하게 선택</li>
</ul>
<p>랜덤포레스트의 작은 트리는 과적합이 되도 될까?</p>
<ul>
<li>상관없음</li>
<li>각각의 특성들을 통해 전체를 판단하는 것이라 괜찮음</li>
<li>작은 트리를 독립적으로 만들기 때문에</li>
</ul>
<h3 id="222-하이퍼파라미터-튜닝">2.2.2 하이퍼파라미터 튜닝</h3>
<p>max_features와 n_estimators 가 많을 수록 성능이 좋아질까? </p>
<ul>
<li>훈련 성능은 높아진다.</li>
<li>과적합을 볼때는 검증 스코어를 조절해야 한다. </li>
</ul>
<p>훈련 데이터 점수가 높은 상태에서, 하이퍼파라미터 조절시 훈련 점수가 낮아지고, 
검증 점수가 높아진다면?</p>
<ul>
<li>과적합이 해소된 것이기에 조절 후 채택하는 것이 좋다. </li>
</ul>
<h2 id="23-배깅bagging-bootstrap-aggregating">2.3 배깅(Bagging, Bootstrap Aggregating)</h2>
<ul>
<li>복원추출 후 (부트스트랩)</li>
<li>집계(Aggregating)</li>
</ul>
<h3 id="231-부트스트랩-샘플링">2.3.1 부트스트랩 샘플링</h3>
<p>: 샘플링 과정에서 복원추출을 함. 즉, 샘플을 뽑아 값을 기록하고 제자리에 돌려놓음</p>
<ul>
<li>샘플링을 특정한 수만큼 반복하면 부트스트랩 세트가 완성됨</li>
<li>복원추출이기 때문에 중복을 허용함</li>
<li>부트스트랩세트는 표본의 63.2%에 해당하는 샘플을 가짐(데이터가 충분히 크다고 가정)</li>
<li>여기서 추출되지 않는 36.8%의 샘플을 OOB 샘플이라 함</li>
</ul>
<h3 id="232-oobout-of-bag-샘플">2.3.2 OOB(Out-Of-Bag) 샘플</h3>
<p>: 기본모델을 검증하는데 사용됨</p>
<p>기본모델에서 validation score 대신 oob를 사용하는 이유</p>
<ul>
<li>데이터가 부족하여, 검증 세트를 만들기 어려울 때 사용</li>
<li>oob는 랜덤포레스트에 내장 되어있음 -&gt; 짐작하는 용도</li>
<li>실제로는 validation score를 통해 확인한다. </li>
</ul>
<p>oob_score=True로 사용해주는 이유</p>
<ul>
<li>단순히 oob_score를 계산하기 위해서</li>
<li>default 값은 False이다.(사용할지 않할지를 정할 수 있음)</li>
</ul>
<h2 id="24-순서형ordinal-인코딩">2.4 순서형(ordinal) 인코딩</h2>
<p>: 순서형 인코딩은 범주형 자료를 숫자로 맵핑한다.</p>
<p>랜덤포레스트에서는 원핫 인코딩 대신, ordinal encoding을 사용한다.</p>
<ul>
<li>지니 감소도(특성 중요도)에 따라 상위노드로 결정되는데, 하이 카디널리티는 원핫인코딩 실행 시 데이터의 구멍이 많아져서(data sparsity) 상위노드로 채택되기 어렵다.</li>
<li>원핫인코딩에 비해 차원이 늘어나지 않아 해당 변수의 중요도가 떨어지지 않음</li>
<li>feature inportance의 경우에도 원핫인코딩시에 범주가 많을 때 높게 나오는 경향이 있음</li>
</ul>
<h1 id="그-외">그 외</h1>
<p>지니불순도와 엔트로피는 면접에서도 자주 물어봄. 의미 잘 숙지하자!
잘하는 데이터 분석가는 무엇인가? </p>
<ul>
<li>남다른 인사이트를 주는 사람</li>
<li>어려운 용어를 사용하기 보다는 현업에 유용한 정보를 줄 나만의 시각이 있는 사람이 중요하다.
데이터 리터러시의 중요성</li>
<li>📎<a href="https://youtu.be/AJ7j3Pyg3J0">다음 10년간 생존하기 위한 2가지 공부 (송길영 2부 바이브컴퍼니 부사장)</a></li>
<li>단순히 정답을 맞추는 것이 중요한 것이 아니라, 스스로 문제를 정의하고 풀어내는 과정의 중요성(교육의 변화 방향성) 등을 느낄 수 있는 영상</li>
<li>어려운 문제가 있을 때 그 상황을 빠르게 이해하고 학습하고 무엇이 핵심인지 분석하는 능력, 무엇이 문제인지 문제를 정의하는 능력, 그리고 해결책(인사이트)을 제안할 수 있는 능력 등이 단순히 데이터를 스크리닝 하는 것이 아니라, 마이닝(mining)하는 것과 연관된 능력이다.</li>
<li>또한, 데이터 기술을 익히더라도 내가 관심있는 분야를 도메인으로 잘 설정해야 한다. </li>
<li>관심사와 데이터 기술을 잘 접목하여 큰 시너지를 내자.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[TIL] 오차 / 잔차, 손실함수/비용함수]]></title>
            <link>https://velog.io/@kiki_/TIL-%EC%98%A4%EC%B0%A8-%EC%9E%94%EC%B0%A8-%EC%86%90%EC%8B%A4%ED%95%A8%EC%88%98%EB%B9%84%EC%9A%A9%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@kiki_/TIL-%EC%98%A4%EC%B0%A8-%EC%9E%94%EC%B0%A8-%EC%86%90%EC%8B%A4%ED%95%A8%EC%88%98%EB%B9%84%EC%9A%A9%ED%95%A8%EC%88%98</guid>
            <pubDate>Fri, 22 Oct 2021 13:46:27 GMT</pubDate>
            <description><![CDATA[<h1 id="오차error"><strong>오차(error)</strong></h1>
<p>: <strong>모집단(population)</strong>으로부터 추정한 회귀식으로부터 얻은 예측값과 실제 관측값의 차이</p>
<ul>
<li>ε로 표기</li>
<li><strong>고정요소(fixed component)</strong>와 <strong>확률적 요소(random component)</strong>로 분류<ul>
<li>고정요소란, 가정하는 회귀식이 변수들 사이의 참의 관계식을 반영하지 못할때 발생하는 <strong>고정 오차(fixed error)</strong></li>
<li>확률적 요소는 일반적으로 세가지 형태로 구분</li>
<li>첫째로 <strong>측정오차란(measurement error)</strong> 측정하고자 하는 관찰값과, 측정도구를 적용하여 얻은 측정값의 차이</li>
<li>이 외에도 확률적 요소로는, 모형에서 포함되어야할 <strong>설명변수의 부재로부터 일어나는 오차</strong>와, 자연 발생적으로 생겨나 <strong>통제불능한 오차(순수오차, Pure error)</strong>가 있음</li>
</ul>
</li>
</ul>
<p>&lt;오차에 대한 가정&gt;</p>
<ol>
<li>E( εi ) = 0 고정오차가 없다는 가정</li>
<li>Var( εi ) = σ² * Ι 모든 오차는 동일한 분산을 가진다(등분산성)</li>
<li>Cov( εi, εj) = 0 오차들이 서로에게 영향을 주지 않는다(독립성)</li>
</ol>
<h1 id="잔차residual"><strong>잔차(residual)</strong></h1>
<p>: <strong>표본(sample)</strong>으로부터 추정한 회귀식과 실제 관측값의 차이</p>
<ul>
<li>사실상 현상을 분석할때, 모집단의 모든 데이터를 축적하기 보다, 일부의 데이터(표본집단)에서 회귀식을 얻기 때문에, 잔차를 기준으로 회귀식의 최적의 회귀계수를 추정</li>
<li>잔차를 기준으로 최적의 회귀모형을 찾는 방법중 가장 대표적인 방법으로 &#39;<strong>최소제곱법(method of least square)</strong>&#39;을 말할 수 있음</li>
</ul>
<h1 id="손실함수loss-function">손실함수(Loss function)</h1>
<p>: 데이터 포인트에 정의되는 함수. 예측과 라벨링에 쓰이고 페널티 측정가능.</p>
<ul>
<li>data point(single data set)을 다룸</li>
<li>데이터 하나만 봤을 때 에러</li>
</ul>
<h1 id="비용함수cost-function">비용함수(Cost function)</h1>
<p>: 손실함수의 합. training set에 모델 복잡성 패널티를 더해줌.</p>
<ul>
<li>entire data를 다룸</li>
<li>데이터 전체를 봤을 때 에러</li>
</ul>
<h2 id="추가-목적함수objective-fuction">추가) 목적함수(Objective fuction)</h2>
<p>: 학습하며 최적화(optimize)해야 하는 함수</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[😺10월 3째 주 weekly review]]></title>
            <link>https://velog.io/@kiki_/10%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review</link>
            <guid>https://velog.io/@kiki_/10%EC%9B%94-3%EC%A7%B8-%EC%A3%BC-weekly-review</guid>
            <pubDate>Fri, 22 Oct 2021 05:11:16 GMT</pubDate>
            <description><![CDATA[<h1 id="1-사실">1. 사실</h1>
<p>이번 한 주간 simple, multiple, ridge, logistic regression등 회귀분석 전반을 배웠다.</p>
<h1 id="2-느낌">2. 느낌</h1>
<p>나는 회귀에 대한 내용보다 feature engineering이 특히나 어렵게 느껴졌다. 
분석의 결과는 모델에 데이터만 넣어주면 점수는 나왔다. 
그러나 이 점수를 높이기 위해서 피처를 선택하고, 다루는 작업이 어렵게 느껴졌다. 
또한 점수에 대한 기준이 없으니 내 결과가 좋은건지 나쁜건지 판단이 어려웠다.</p>
<h1 id="3-교훈">3. 교훈</h1>
<p>많은 데이터 분석이 나의 고민을 해결해줄 것이라는 교훈을 얻었다.
사실 이러한 문제는 많은 데이터를 분석해보고 어떤 방식을 했을 때 결과가 좋았는지 직접 느껴봐야 알 것같다. 
이번 섹션 처음만 하더라도, 피처들을 조정하는 것에만 중점을 두었었는데, 
그냥 모델 방식을 바꾸면 훨씬 좋을 것이라는 결론을 내렸다.
따라서 공부를 더 꾸준히 한다면, 이러한 결론들이 쌓여서 실력이 될것이라 믿는다. </p>
<h1 id="4-향후-행동">4. 향후 행동</h1>
<p>keep going~~</p>
]]></description>
        </item>
    </channel>
</rss>