Logistic Regression은 Supervised Learning의 Classification 의 모델입니다.
Classification은 예측 결과가 숫자가 아니고 주어진 데이터를 정해진 category에 따라 분류하는 모델입니다.
Classification의 대표적인 알고리즘이 Logistic Regression입니다.
선형 회귀 방식을 분류에 적용한 알고리즘으로 데이터가 어떤 범주에 속할 확률을 0~1 사이의 값으로 예측한 다음 더 높은 범주에 속하는 쪽으로 분류하는 방법입니다.
범주는 True/False , 합격/불합격 등이 있습니다. 활용 예제로는 스팸메일 분류, 고객의 제품 구매 의사 여부 등이 있습니다.
■ 시그모이드(Sigmoid) 함수
https://ko.wikipedia.org/wiki/%EC%8B%9C%EA%B7%B8%EB%AA%A8%EC%9D%B4%EB%93%9C_%ED%95%A8%EC%88%98
시그모이드 함수는 S자 형타로 0과 1사이의 값으로 이루어져 있습니다.
X가 0보다 크면 Y값은 1이고, X가 0보다 작으면 Y값은 음수(사건 발생x)를 나타냅니다.
위의 수식은 시그모이드 함수의 수학적 표현입니다.
라는 수식에 Sigmoid Function을 적용시킬 수 있습니다. (시그모이드 함수 y에 y = mx + b를 적용시킵니다.)
그렇게 되면 아래와 같은 수식이 나옵니다.
◆ SAS Code
공부시간에 따른 시험 합격 여부에 관하여 Logisic model 을 사용해서 데이터를 예측하려고 합니다.
데이터는 총 100개로 구성되어 있습니다.
proc logistic data=ExamData;
model Pass = StudyHours;
run;
- Proc Logistic : 로지스틱 회귀 모델 적용
- model Pass = StudyHours; : 합격 여부를 종속변수로 설정하고 공부 시간을 독립변수로 설정합니다.
... View more
Hi all,
suppose to have the following dataset:
data DB;
input ID :$20. City :$20. School :$20. Parents :$20.;
cards;
0001 0 0 0
0001 1 1 1
0004 1 0 0
0004 0 0 1
0004 0 0 0
0005 0 1 1
0006 1 0 0
0006 1 1 1
0006 1 1 0
....
;
I'm trying to merge all the variables to get the following:
data DB1;
input ID :$20. Index :$20.;
cards;
0001 0
0001 1
0004 1
0004 1
0004 0
0005 1
0006 1
0006 1
0006 1
....
;
The rule is: if there is at least one "1" in "City", "School", "Parents" then Index = 1 otherwise 0. I tried to use coalesce but it takes a lot of time because the variables to be collapsed are 10 but the rows are 30.000. Is there an alternative to do the job?
Thank you in advance.
... View more
경사하강법이란, 함수의 최솟값을 찾는 방법입니다.
단순회귀분석에서 경사하강법을 사용하는 방법을 설명하겠습니다.
여기서 B0는 y의 절편이며, B1은 기울기, E는 오차항을 의미합니다.
경사하강법은 파라미터인 B0과 B1을 최적화하기 위해서 사용됩니다.
주로, 인공지능이 최적화할 때 사용되는 알고리즘입니다. 인공지능이 더 좋은 값으로 개선하는 방향으로 학습해 최적의 값을 찾아나갈 때 경사하강법을 사용합니다.
경사하강법은 손실함수(loss function)을 최소화하는 방법으로 파라미터를 반복적으로 업데이트 합니다.
■ 손실함수(Loss Function)
Loss란 실제값과 예측값과의 차이를 의미합니다. Loss를 함수로 표현한 것을 Loss Function이라고 합니다.
다양한 Loss Function 이 존재하며 MAE, MSE, RMSE 등이 있습니다. 회귀에서 가장 많이 사용되는 Loss Function은 MSE(Mean Square Error)입니다.
N은 데이터 갯수, hat_y(i) 는 예측값, y(i)는 실제값입니다. 오차값이 음수일 수 있어 제곱을 취해 오차의 절대적인 값을 구합니다.
위의 그래프는 2차함수로 Loss가 최소인 값을 찾는 것 입니다.
2차 함수는 미분값이 0 이 되는 지점을 찾으면 됩니다.
고차원 함수일 경우에는 한번에 최솟값을 찾기 힘들 수 있습니다.
그래서 최소값을 찾기 위해 최초 지점에서 조금씩 움직이며 최적의 값을 찾아나가는 것이 Gradient Descent 입니다.
Gradient Descent 를 통해 파라미터를 업데이트 하는 과정은 다음과 같습니다.
1) Gradient 를 구해 이동할 방향을 정한다.
2) 한번 이동시, 얼마나 이동할 것인지 step size를 정해 learning rate를 곱해서 그 만큼 이동
3) 최적의 해를 찾을 때까지 1)번과 2)번을 반복한다.
https://builtin.com/data-science/gradient-descent
Learning Rate란 보폭을 의미합니다.
'한번에 얼만큼 이동할 것인가?'를 설정한 것으로 값이 크면 적절한 값을 찾지 못할 수 있으며
값이 작으면 최적화되기까지 시간이 너무 오래걸린다라는 단점이 있습니다.
... View more
data test; input id fname $4. lname $5. age; cards; 123 abc1 def1 24 124 abc2 def2 25 125 abc3 def3 26 ; run;
data test2; input id state $7. county $9. ; cards; 123 state1 county1 124 state2 county2 125 state3 county3 ; run;
options orientation=landscape; ods pdf file="location\name.pdf"; Title1 "Test"; ods proclabel='';
proc report data=test contents='' headline nowindows ;by id ; columns id fname lname age; run;
proc report data=test2 contents='' headline nowindows ;by id ; columns id state county; run;
ods pdf close;
Iam looking only one table of contnets for both tables on left side ? is there any i can do and get the ouput ?
... View more
https://communities.sas.com/t5/SAS-Programming/Overlapping-drugs/m-p/930264#M365992
My query is in continuation of the above question which I posted few weeks back, I was unable to continue the same topic as it was closed. How can I know the difference between 'SGA_START' and 'start'? I am trying to merge the dataset 'want' with 'SGA2', how ever I cannot identifying the difference/no. of days between SGA_START and start dates. Can someone please help me with the code.
Thank you
... View more