2015-01-30 5 views
2

nnet 패키지의 multinom을 사용하여 로지스틱 회귀 모델을 3 개의 클래스로 구성하지만 클래스의 유행이 균형을 이루지는 않습니다. 나는 특정 클래스에 대한 잘못된 분류를 피하도록 모델에 알려주기 위해 체중/벌칙을 할당하고자합니다. 여기 내 코드와 내 데이터의 조각입니다 :Rnet multiniom (다항 로지스틱 회귀 모델) - 오 분류를 피하기 위해 페널티를 할당하십시오.

mnm <- multinom(formula = cut.rank ~ ., data = training.logist, trace = FALSE, maxit = 1000, weights=c(10,5,1)) 

> str(head(training.logist)) 
'data.frame': 6 obs. of 15 variables: 
$ is_top_rated_listing      : Factor w/ 2 levels "0","1": 1 1 1 2 2 2 
$ seller_is_top_rated_seller     : int 1 1 1 1 1 1 
$ is_auto_pay        : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 
$ is_returns_accepted      : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 
$ seller_feedback_rating_star    : Factor w/ 11 levels "Blue","Green",..: 7 7 7 9 9 9 
$ keywords_title_assoc      : num 1 1 1 1 1 1 
$ normalized.price_shipping     : num 0 0 0.00871 0.01853 0.01853 ... 
$ normalized.seller_feedback_score   : num 0.7117 0.8791 0.0966 0.095 0.095 ... 
$ normalized.seller_positive_feedback_percent: num 0.7117 0.8791 0.0966 0.095 0.095 ... 
$ item_condition        : Factor w/ 2 levels "New","New other (see details)": 1 1 1 1 1 1 
$ listing_type        : Factor w/ 2 levels "FixedPrice","StoreInventory": 2 2 2 1 1 1 
$ best_offer_enabled       : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 
$ shipping_handling_time      : int 10 10 10 1 1 1 
$ shipping_locations       : Factor w/ 7 levels "AU,Americas,Europe,Asia",..: 5 5 5 5 5 5 
$ cut.rank         : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 
> 

사람이 어떻게 오 분류 처벌을 할당하는 아이디어를 가지고는? 특히 10 : 5 : 1 (1,2,3 클래스에 해당)의 패널티 비율을 할당하고 싶습니다. 클래스 1에서 정확한 것을 의미합니다. 내 대상 변수 cut.rank의 분포는 ~ 0.04,0.08입니다. , 0.88. 클래스 1의 유병율이 낮기 때문에 해당 클래스의 모델 민감도가 낮습니다.

답변

-1
If your classes are unbalanced, use Sampling Technique so that your model can easily distinguish class labels. 

SMOTE를 사용하여 훈련 데이터를 샘플링 한 후 결과를보십시오.