목록코딩독학 (9)
영국 척척석사 유학생 일기장👩🏻🎓

선형 회귀를 사용해서 내용 기반 추천을 해 봅시다. 가장 먼저 선형 회귀에서는 데이터를 수학적으로 어떻게 표현하는지 봅시다. 먼저 아래 데이터를 실제로 사용할 떄는 영화 이름이나 속성 이름을 쓰지 않았는데, 구별을 하기 위해 몇 번째 데이터와 속성인지를 자연수로 표시해보겠습니다. 가장 기본적으로 입력 변수들, 위의 경우 영화 속성들은 x라는 문자로 나타내고, 목표 변수, 즉 유저 평점은 y라는 문자로 나타냅니다. 1. 입력 변수 각 영화에서 속성은 액션, 로맨스, 코미디, 감동 총 4개 입니다. 첫 번째 입력 변수인 액션 정도를 나타내기 위해 x_1, 로맨스 정도를 나타내기 위해 x_2, 나머지도 마찬가지로 x_3, x_4로 나타냅니다. 입력 변수의 개수는 n이라는 문자로 표현하는데 지금은 총 4개의 입..

1. 스텀프 랜덤 포레스트를 만들 때와 똑같이 에다 부스트에서도 수많은 결정 트리들을 만듭니다. 랜덤 포레스트에서 만드는 트리들은 깊이가 조금 있었는데 에다부스트에서는 깊은 결정 트리들이 아니라 root 노드 하나와 분류 노드 두 개를 갖는 얕은 결정 트리를 만듭니다. 예를 들면 교통사고 데이터를 분류하고 싶다고 합시다. 뿌리 노드의 질문이 속도가 80km를 넘었는지 안 넘었는지, 그리고 넘었으면 사망, 넘지 않았으면 생존 이렇게 예측하는 단순한 트리인 입니다. 이런식으로 하나의 ㅈ리문과 그 질문에 대한 답으로 바로 예측을 하는 결정 트리를 나무의 그루터기를 의미하는 스텀프라고 합니다. 이런 식으로 스텀프를 만들게 되면 성능은 주로 50%보다 조금 나은 성능을 갖게 됩니다. Boosting 기법은 성능이..

랜덤 포레스트는 수많은 트리들을 임의로 만들고, 이 모델들의 결과를 다수결 투표로 종합해서 예측하는 모델입니다. 트리를 많이, 임의로 만들기 때문에 랜덤 포레스트라는 이름을 갖습니다. 랜덤 포레스트에서 임의성을 더하는 요소는 두가지가 있습니다. 그 중 Bootstrapping에 대해 알아보겠습니다. 1. Bootstrapping bootstrapping은 갖고 있는 데이터 셋을 이용해서 조금 다른 데이터 셋을 만들어내는 방법입니다. 예를 들어 독감 환자 데이터를 사용한다고 해봅시다. 총 다섯 개의 열이 있는데 고열, 기침, 몸살, 콧물, 그리고 환자가 독감인지 아닌지에 대한 데이터가 있습니다. 이 데이터 셋을 이용해서 좀 다른 데이터 셋을 만들어야 합니다. 방법은 간단합니다. 그냥 원래 있던 데이터 셋에..

결정 트리는 수많은 머신 러닝 알고리즘들 중 가장 직관적인 것들 중 하나입니다. 결정 트리의 장점은 쉽게 해석할 수 있다는 것입니다. 머신 러닝 모델을 해석한다는 건, 예측을 하는 데 있어서 어떤 속성들이 좀 더 중요하게 사용됐고, 어떤 것들이 좀 덜 중요하게 사용됐는지 알아낸다는 것입니다. 예를 들어서 독감 데이터에서 열, 기침, 몸살 이 속성들 중 어떤 것이 독감을 예측하는 데 가장 영향력이 크고, 어떤 것이 덜 중요하게 사용됐는지 알수 있다는 것입니다. 만들어 놓은 트리를 이용해서 각 속성들의 중요도, feature importance를 계산하는 방법에 대해서 알아보겠습니다. 1. 노드 중요도 (Node Importance) 속성들의 중요도를 계산하기 위해서는 먼저 각 노드 하나하나의 중요도, no..

1. 하이퍼 파라미터 (Hyperparameter) 많은 머신 러닝 알고리즘은 학습을 하기 전에 미리 정해 주어야 하는 변수 또는 파라미터들이 있습니다. Losso회귀에 대해 생각해봅시다. Lasso는 L1 정규화를 해주는 회귀 모델 입니다. scikit-learn에서 Lasso 모델을 만들 때 alpha와 max_iter 라는 옵셔널 파라미터를 지정해 줬습니다. model = Lasso(alpha=0.001, max_iter=1000) alpha는 손실 함수의 정규화 항에 곱해지는 상수를 뜻하는데 보통은 그리스 문자 람다를 씁니다. 그리고 max_iter 는 경사 하강을 최대한 몇 번 할지를 정하는 값입니다. 이 두값은 모델이 직접 학습해서 배우는게 아니라 모델을 만드는 사람이 정해줘야 합니다. 이처럼..

1. 제목 태그 ~ 문서의 제목을 나타내는 태그입니다. 한국 영화 한국 영화의 역사 1950년대: 침체기 1960년대: 황금기 1970년대: 쇠퇴기 1980년대: 암흑기 1990년대: 전환점 2000년대: 르네상스 2010년대: 최전성기 2020년대: 대격변 유명한 한국 감독 박찬욱 봉준호 임권택 김기덕 김기영 최동훈 위 HTML 코드에 담겨 있는 정보의 구조를 그려보면 아래와 같습니다. 이런 식으로 문서에서 제목을 나누는 태그 입니다. - 한국 영화 - 한국 영화의 역사 - 1950년대: 침체기 - 1960년대: 황금기 - 1970년대: 쇠퇴기 - 1980년대: 암흑기 - 1990년대: 전환점 - 2000년대: 르네상스 - 2010년대: 최전성기 - 2020년대: 대격변 - 유명한 한국 감독 - 박찬욱..

링크는 보통 해당 주소의 페이지로 연결해 줍니다. '페이지 연결' 외에 다른 동작들도 가능합니다. https://나 http://대신에 다른 내용을 넣으면 되는데, 이런 약속들을 URI 스킴(URI Scheme)이라고 부릅니다. 1. 이메일 보내기 mailto: 라는 걸 사용하면 이메일을 보낼 수 있습니다. 이 링크를 클릭하면 이메일 프로그램이나 이메일 앱을 열 수 있고, 받는 사람 주소에 링크에 적힌 이메일 주소를 자동으로 입력해 줍니다. 메일 보내기 2. 전화 걸기 tel:를 사용하면 전화를 걸 수 있습니다. 데스크톱 컴퓨터에서는 전화 기능이 없을 수 있지만, 스마트폰에서 이 링크를 클릭하면 전화 앱으로 연결됩니다. 전화 걸기

가설 함수는 세상에 일어나는 상황을 수학적으로 표현한다는 의미에서 '모델'이라고 부릅니다. 1. 모델의 평가 선형 회귀 모델을 학습시켜서, 나름 최적선이라고 생각하는 아래와 같은 가설 함수가 나왔다고 가정해봅시다. 그런데 모델을 학습시키고 나서는 이 모델이 얼마나 좋은지 평가를 해야 합니다. 이 모델이 결과를 얼마나 정확히 예측하는지를 평가해야한다는 것입니다. 2. RMSE 이때 많이 쓰는 게 '평균 제곱근 오차' 영어로는 'root mean square error' 줄여서 'RMSE'라고 합니다. 평균 제곱 오차에 루트를 한 것입니다. 루트를 하는 이유는 만약 우리가 집 가격을 예측한다고 하면, 목표 변수의 단위는 '원'입니다. 그런데 오차 제곱을 하면 단위가 '원 제곱'이 됩니다. 따라서 마지막에 루..

경사 하강법을 하기 위해서는 두 변수 theta_0, theta_1을 아래와 같이 계속 업데이트 하면 된다고 이전 글에서 설명하였습니다. 이때 학습률 알파a는 경사를 내려갈때마다 얼마나 많이 그 방향으로 갈 건지를 결정하는 변수입니다. 이번 글에서 학습률 알파를 잘 못 고를 때 생기는 문제점에 대해서 알아보겠습니다. 이해를 쉽게 하기 위해 손실함수 J가 하나의 변수, thata로만 이루어졌다고 가정해보겠습니다. 1. 학습률 a가 너무 큰 경우 알파가 크면 클수록 경사 하강을 한 번을 할 때마다 thata의 값이 많이 바뀝니다. 그럼 아래와 같이 왼쪽과 오른쪽으로 성큼성큼 왔다갔다 하면서 진행이 됩니다. 심지어 a가 너무 크면 경사 하강법을 진행할수록 손실 함수 J의 최소점에서 멀어질 수도 있습니다. 2...