[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI 99

단층 퍼셉트론 - 이진판단 이론

이진판단 문제의 신경망 처리 '예/아니요', '0/1', '사과인가 아닌가?','성공인가 실패인가?'와 같이 두개의 대답으로 분류가 가능한 문제를 말한다. 퍼셉트론의 선형연산은 이진판단 문제를 풀기엔 적합하지 않았다. 특정 임계치에 따라 출력치를 나눈다고해도 그런 식의 연산은 미분이 불가능하여 해당 값에 대한 학습을 어떻게 진행해야 할지, 손실함수를 어떻게 정의해야할지 어려웠다. 이에 따라 선형 연산에서는 일단 범위 제한이 없는 실숫값을 생산하고 이를 확률값의 성질에 맞게 변환해주는 비선형 함수를 찾아 이용했다. 값이 1에 가까우면 참으로 0에 가까우면 거짓을 선택하도록 한 것이다. 학습에 필요한 손실함수는 값이 0이상이고 추정이 정확해질수록 작아져야한다. 이는 교차 엔트로피를 사용한다. 이는 두 집단의..

[scikit-learn 라이브러리] Rasso 예제

Rasso 모델 Lasso(alpha, fit_intercept, normalize, precompute, copy_X, max_iter, tol, warm_start, positive, solver, random_state, selection) alpha : 값이 클수록 강력한 정규화(규제) 설정하여 분산을 줄임, 양수로 설정 fit_intercept : 모형에 상수항 (절편)이 있는가 없는가를 결정하는 인수 (default : True) normalize : 매개변수 무시 여부 precompute : 계산속도를 높이기 위해 미리 계산된 그램 매트릭스를 사용할 것인지 여부 copy_X : X의 복사 여부 max_iter : 계산에 사용할 작업 수 tol : 정밀도 warm_start : 이전 모델을 초..

[scikit-learn 라이브러리] Ridge 예제

Ridge 모델 Ridge(alpha, fit_intercept, normalize, copy_X, max_iter, tol, solver, random_state) alpha : 값이 클수록 강력한 정규화(규제) 설정하여 분산을 줄임, 양수로 설정 fit_intercept : 모형에 상수항 (절편)이 있는가 없는가를 결정하는 인수 (default : True) normalize : 매개변수 무시 여부 copy_X : X의 복사 여부 max_iter : 계산에 사용할 작업 수 tol : 정밀도 solver : 계산에 사용할 알고리즘 (auto, svd, cholesky, lsqr, sparse_cg, sag, saga) random_state : 난수 seed 설정 Ridge 예제 import numpy..

규제 선형모델 Ridge와 Lasso 개념 이해

규제(Regularization) 선형모델 선형모델의 과적합을 방지하기 위해 고안된 방법이다. 과적합된 모델은 특성들이 너무 복잡하게 적용되어 있어 일어난다. 따라서 현재 특성을 줄이거나 특성들의 영향력을 최소화하는 방법이 필요하다. 그렇게 고안된 것이 규제 선형모델이다. 과적합된 모델은 보통 특성이 증가하면서 분산(Variance) 정도가 높고, 편향(Bias)은 낮다. (과소적합된 모델은 분산은 낮지만 편향이 높다.) 따라서 분산정도를 줄여주기 위해 특성치들을 규제하여 사용한다. 규제는 정규화라고도 불린다. 규제 선형모델에는 대표적으로 Ridge와 Lasso가 있다. L1 Norm과 L2 Norm norm : 벡터의 크기 또는 길이를 측정하는 방법. L1,L2,L무한대 등 다양한 방법이 존재한다. L..

[scikit-learn 라이브러리] LinearRegression (선형회귀)

Linear Regression from sklearn.linear_model import LinearRegression LinearRegression(fit_intercept, normalize, copy_X, n_jobs) fit_intercept : 모형에 상수항 (절편)이 있는가 없는가를 결정하는 인수 (default : True) normalize : 매개변수 무시 여부 copy_X : X의 복사 여부 n_jobs : 계산에 사용할 작업 수 사용예시1 from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split def make_wave(n_samples=100): rnd =..

단층 퍼셉트론 - 코드 복습

https://inuplace.tistory.com/460?category=912534 단층 퍼셉트론 - 회귀분석 구현 데이터를 기반으로 전복의 고리수를 예측하는 단층 퍼셉트론을 구현해보자. 주어진 데이터는 'Sex', 'Length', 'Diameter', 'Height', 'Whole weight', 'Shucked weight', 'Viscera weight', 'Shell weight', 그리.. inuplace.tistory.com 위 구현의 확실한 이해를 위한 개인복습문서입니다. 다른 사람들의 가독성은 신경쓰지 않았습니다. 먼저 모듈은 당연히 불러와야한다. numpy 배열은 각 데이터 정보를 표현하는데 사용할 것이므로 필요하고, csv는 csv파일로부터 데이터를 불러올 것이므로 필요하다. ti..

IMDB Dataset을 활용한 나이브베이즈 예제

https://www.kaggle.com/lakshmi25npathi/imdb-dataset-of-50k-movie-reviews IMDB Dataset of 50K Movie Reviews Large Movie Review Dataset www.kaggle.com 텍스트 데이터 전처리(설명) 주어진 데이터를 처리하기 쉽도록 처리한다. 초기형태 : [오늘 나는 밥을 먹었다. 어제 나는 햄버거를 먹었다.] 특수문자(stopword) 제거 : [오늘 나는 밥을 먹었다 어제 나는 햄버거를 먹었다] Tokenize : [오늘, 나는, 밥을, 먹었다, 어제, 나는, 햄버거를, 먹었다] 이를 Dictionary에 빈도수 정보까지 포함해서 저장 -> Bag of Words(BOW) 생성 {"오늘": 1, "나는": ..

자주 사용되는 numpy.random 함수들

나올때마다 헷갈려서 정리함 np.random.seed(숫자) # 랜덤 시드 숫자를 정해준다 np.random.rand(행,열) # 주어진 형태의 0.0~1.0 사이의 난수 numpy 배열 생성 # 아무것도 입력하지 않으면 하나의 float 생성 np.random.randn(행,열) # 기댓값이 0이고 표준편차가 1인 표준 정규 분포를 따르는 난수 numpy 배열 생성 # 아무것도 입력하지 않으면 하나의 float 생성 np.random.randint(최소,최대,size=()) # 주어진 [최소,최대) 범위 안에서 임의의 정수 numpy 배열 생성 # size를 안주면 하나의 int 생성

[scikit-learn 라이브러리] KNN 분류기 옵션

KNeighborsClassifier(n_neighbors, weights, algorithm, leaf_size, p, metric, metric_params, n_jobs) n_neighbors : 이웃의 수 (default : 5) weights : 예측에 사용된 가중 함수 (uniform, distance) (default : uniform / uniform : 가중치를 동등하게 설정, distance : 가중치를 거리에 반비례하도록 설정) algorithm : 가까운 이웃을 계산하는데 사용되는 알고리즘 (auto, ball_tree, kd_tree, brute) leaf_size : BallTree 또는 KDTree에 전달 된 리프 크기 p : (1 : minkowski_distance, 2: ..

TF, DF, IDF

TF 특정 단어가 문서에 등장한 횟수 DF 전체 문서 중 특정 단어가 등장한 문서의 수 IDF DF의 역수 로그를 취해 수가 많이 커지는 것을 방지하고, 분모에 1을 더해 분모가 0이되는 것을 방지했다. n은 전체 문서수 활용 예제 import pandas as pd from math import log from konlpy.tag import Okt from collections import Counter doc_list = [ '안녕하세요 감사해요 잘있어요 다시 만나요', '안녕하세요 오늘도 좋은 하루 보내세요', '안녕하세요 안녕하세요 안녕하세요 오늘도 날씨가 좋네요', ] token_list = Okt().morphs(' '.join(doc_list)) token_list = list(set(to..