nnet パッケージの multinom を使用して、ロジスティック回帰モデルを 3 つのクラスで構成されるデータに適合させていますが、クラスの普及率はバランスが取れていません。特定のクラスの誤分類を避けるようにモデルに指示するために、重み/ペナルティを割り当てたいと思います。ここに私のコードと私のデータのスライスがあります:
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 は有病率が低いため、そのクラスのモデル感度は低くなります。