본문 바로가기

R프로그래밍45

반응형
[R] LASSO, Ridge 적합하기 LASSO와 Ridge는 회귀 계수 축소법으로서, 일반적으로는 다중 선형 회귀 보다는 좋은 성능을 보인다. 간략하게 Ridge와 LASSO의 cost function을 보고 R코드를 첨부하도록 하겠다. 다중 선형 회귀 풀고자하는 문제는 다음과 같다. 여기서, 회귀 계수 축소법은 Penalty항을 추가한다. Ridge의 cost function은 다음과 같다. lambda는 hyper-paramter이고 SSE를 최소화 하면서 회귀계수의 제곱의 합을 함께 최소화 시킨다. Ridge는 analytic한 solution을 가지고 있어, 다음과 같이 해를 구할 수 있다. 더불어 Ridge를 통해 추출된 회귀계수들은 labmda가 커짐에 따라 0에 수렴하지만 완전히 0이 되지는 않는다라는 특징이 있다. 반면 LA.. 2022. 12. 11.
[R 프로그래밍] SMOTE/BLSMOTE/DBSMOTE 적용하기 SMOTE관련 패키지는 smotefamily입니다. 패키지를 설치해주고 library를 호출해줍니다. install.packages("smotefamily") library(smotefamily) 사용방법은 매우 간단합니다. 독립변수들로 구성된 data와 target variable를 각각 넣어주시고, hyper-parameter인 (K와 dup_size) 를 설정해주시면됩니다. 아래 코드에서, added_data에는 생성된 데이터가 들어가며, new_data에는 생성된 데이터와 기존 데이터가 함께 합쳐져서 들어갑니다. new_y는 기존 y값과 새로운 y값이 합쳐져서 들어가집니다. ## 2차원 가상 데이터 생성 data_example = sample_generator(5000,ratio = 0.80) s.. 2022. 12. 9.
R프로그래밍 - 분류문제에서의 성능지표 (accuracy/precision/recall/F-measure) 머신러닝에서 y값이 특정 클래스 값을 가질때 우리는 분류 모델(classification model)을 적합시킵니다. 분류 모델에서 사용하는 여러가지 성능지표에 대해 알아 보겠습니다. 가장 기본적으로 사용하는게 정확도(accuracy)입니다. 정확도는 사실 구체적으로 설명할 필요도 없이 직관적이고 간단한 지표이죠. R에서는 아래 코드처럼 간단하게 구할수 있습니다. 실제값과 예측값이 같은 수를 전체 관측치 수로 나누어주면 되겠죠. observed 2022. 5. 23.
R프로그래밍 - 회귀분석에서의 성능 지표 MSE, MAE, MAPE 머신러닝에서 y값이 실수 인 경우, 우리는 회귀 모형(linear regression)을 적합시킵니다. 이 때, 우리가 만든 회귀 모형의 성능 지표를 측정할 필요가 있습니다. 그래야, 어떠한 모델이 성능이 더 좋은지 판단하고 의사결정을 내릴 수 있기 때문입니다. 대표적인 회귀 모델의 성능지표로는 mean squared error(MSE)가 있습니다. 수식은 아래와 같습니다. 즉, 실제값에서 예측값을 뺀 오차에 제곱을 해서 평균을 낸 지표입니다. 이 값이 낮으면 낮을 수록 좋은 모델이라는 뜻이겠죠. 그러나 MSE의 경우에는 상대적인 비교만 가능해서 이 값이 얼마나 낮고 높은지 알 수가 없습니다. 예를 들어, A문제를 풀고자 할때 a의 모델이 MSE가 20,000이 나왔다라고 했을때, 이 값이 높은 것인지 .. 2022. 5. 22.
R프로그래밍 - 문자열 대체 함수 gsub [], () <> 없애기 stringr 패키지 안에 문자열을 찾아서 대체해주는 str_replace함수가 있습니다. 하지만 저 같은 경우, gsub함수가 훨씬 더 쉽게 쓸수 있다고 생각해서 gsub함수를 자주 사용합니다. gsub함수는 특정 문자열이나 패턴을 찾아서 내가 원하는 문자열로 대체 또는 제거 할 수 있도록 도와주는 함수입니다. 사용법은 아래와 같습니다. gsub("바꾸고자하는 대상의 text 또는 패턴","대체할 text",text객체) 첫번째 예제는 " " 공백을 "" 제거하는 예제이고 두번째 예제는 " " 공백을 | 로 대체하는 예제이고 세번째 예제는 '언어'라는 단어를 'programming 언어'로 대체하는 예제 입니다. text 이런 tag나 \t와 같은 html tag들이 자주 볼 수 있습니다. 이러한 ta.. 2020. 7. 3.
R프로그래밍 - NA, Inf, -Inf 데이터 찾는법 데이터를 가공하다 보면 NA값이나 Inf 값등이 나올 때가 있습니다. 이 값들을 그대로 가져가는 경우도 있지만, 무조건 제거 또는 다른값으로 대체 해주어야 하는 경우가 있습니다. 우선 0을 1로 나누면 0 값이 출력이 됩니다. 그런데 0을 0으로 나누면 NA값이 나옵니다. NA값인지 판단하기 위해선 is.na 함수를 이용하여야 합니다. 0/1 0/0 is.na(0/0) x2 2020. 7. 2.
R프로그래밍 - AND, OR, NOT 연산자 컴퓨터에서 가장 많이 사용하는 AND, OR, NOT 연산자에 대해 다루어 보도록 하겠습니다. 이 연산자들은 매우 자주 사용하므로 꼭 알고 계셔야합니다. R뿐만이 아니라, 다른 프로그래밍 언어에서도 공통적으로 사용합니다. AND연산자는 '그리고' 의 의미를 지닙니다. 두 개의 값이 모두 TRUE여야지만 TRUE를 반환합니다. T & T ## AND T & F F & F OR연산자는 '또는'의 의미를 지닙니다. 두 개의 값중 하나 이상 TURE값이 있으면 TRUE를 반환합니다. T | T ##OR T | F F | F NOT연산자는 '반대'를 의미합니다. TRUE값이 들어오면 FALSE, FALSE값이 들어오면 TRUE값을 반환합니다. !T ## NOT !F 이제 조금 더 직관적인 이해를 돕기 위해 예를 .. 2020. 7. 2.
R프로그래밍 - 현재 날짜 또는 시간 가져오는 함수 Sys.time / Sys.Date 현재 날짜나 시간을 가져오는 함수는 Sys.Date 와 Sys.time입니다. Sys.time() Sys.Date() 위와 같이 코드를 실행 하면 아래 화면처럼 현재 시간과 날짜가 출력 되는 것을 보실 수 있습니다. 알아 두셔야할 점은 시간과 날짜에 대해서 -나 + 부호로 연산이 가능하다는 점입니다. Sys.time에서는 초단위 연산이 가능하고 Sys.Date 함수에서는 일단위 연산이 가능합니다. 아래 Sys.Date결과와 Sys.Data-10결과를 보시면 10일 차이가 나는 것을 알 수 있습니다. Sys.time() Sys.Date() Sys.time()-10 Sys.Date()-10 2020. 7. 2.