예측 결과가 실제 결과에 근접하지 않지만 영업 성과 예측을위한 모델을 만들었습니다. 모든 예측 자들은 범주 적이기 때문에 그것이 문제인지 궁금해합니다. 아래 내 코드를 사용하고 있습니다.범주 형 예측자를 사용한 R의 로지스틱 회귀
setwd("c:/Users/xxxxx/Desktop/SalesPredict/")
trainData <- read.csv("train3.csv", header = TRUE)
testData <- read.csv("test3.csv", header = TRUE)
train.column.types <- c('character', # Prospect
'factor', # Sls_Office
'factor', # Month
'factor', # Sls_Rep
'factor', # Fin_Type
'factor', # Competitor
'integer', # Prospect_Size
'factor' , # Prospect_Segment
'factor' # Sold
)
test.column.types <- train.column.types[-9]
train.glm <- glm(Sold ~ Competitor + Prospect_Segment + Sls_Office + Month + Fin_Type , family = binomial(link=logit), data = trainData)
summary(train.glm)
p.hats <- predict.glm(train.glm, newdata = testData, type = "response")
Sold <- vector()
for(i in 1:length(p.hats)) {
if(p.hats[i] > .5) {
Sold[i] <- 1
} else {
Sold[i] <- 0
}
}
Enrolled_Segment = testData[8]
Month = testData[3]
Enrolled_EE = testData[7]
predict.sub <- cbind(Prospect_Segment, Sold, Month,Prospect_Size)
colnames(predict.sub) <- c("Segment","Predicted Disposition","Month","Size")
write.csv(predict.sub, file = "SalesPredictions.csv", row.names = FALSE)
범주 형 변수를 다른 것으로 변환해야합니까? 열차 데이터 세트에는 약 1650 개의 행이 있습니다. 실제 실제 결과이고 테스트 (예상 결과는 약 540 행)입니다. 이 540은 진짜이기도하므로 대략 예상되는 결과가 무엇인지 알아야합니다. 열차 데이터에서 판매 된 시간은 약 1 %입니다. 테스트 데이터에서 예측 결과는 sold = "1"로 0 번 나타납니다. 이 문제를 개선하는 방법에 대한 도움이나 방향이 있으면 감사하겠습니다.
'test.column.types' 및'train.column.types' 변수는 무엇을 사용하고 있습니까? –
이것은 로지스틱 회귀 모델의 예상 확률이 모든 관측치에서 50 % 미만임을 의미합니다. 이는 긍정적 인 관측치보다 훨씬 많은 부정적인 데이터 세트가있는 로지스틱 회귀의 전형입니다. 'hist (p.hats)'를 사용하여 예측 된 확률 분포를 볼 수 있습니다. – josliber
감사합니다. @josilber. 히스토그램을보고 결과가 떨어진 곳을 확인하는 것이 도움이되었습니다. –