質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

0回答

833閲覧

RでSHAP値を算出したいです

NatsukiA

総合スコア16

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2022/05/11 13:57

編集2022/05/12 12:50

前提

プログラミングと分析は独学なので,間違っている箇所やわかりにくい箇所があるかもしれません。ご容赦ください。
SHAP値を算出,図示(=結果を図で出力)したいと思っています。ご助力のほどどうぞよろしくお願いいたします。

R

1#XGBoostパラメータ(デフォルト値) 2params <- list( 3 eta=0.3, 4 gamma=0, 5 max_depth=6, 6 min_child_weight=1, 7 max_delta_step=0, 8 subsample=1, 9 colsample_bytree=1, 10 colsample_bylevel=1, 11 lambda=1, 12 alpha=0 13) 14#XGBoost 15~~xgb.result <-xgb.train(params=params, data=model.data.dm, 16label=df.train.dt$yyy, num_class=3, objective="multi:softmax", 17booster="gbtree", nrounds=100, verbose=1) #目的変数yyyは2値(0, 1)です~~ 18 19xgb.result <- xgb.train(params=params, data=model.data.dm, label=df.train.dt$Species, 20 num_class=3, objective="multi:softprob", booster="gbtree", nrounds=100, verbose=1)#irisデータのSpeciesを目的変数にする 21 22#評価 23pred <- predict(object=xgb.result,newdata=pre.data.dm) 24table(pred,df.test.dt$Species) 25 26#結果の出力 27shap_values <- shap.values(xgb_model = xgb.result, X_train = pre.data.dm)

実現したいこと

-SHAP値を算出,結果を図で出力したいです(「Feature Importance」「dependence plot」「summary plot」)

発生している問題・エラーメッセージ

Error in table(pred, df.test.dt$Species) : 全ての引数は同じ長さでなければなりません

該当のソースコード

R

1table(pred,df.test.dt$Species)

試したこと

インターネット上の情報を調べて複数のコードを書いてみましたがうまくいきせんでした。
例えば以下のサイトを参考にしました。

-https://www.r-bloggers.com/2019/03/a-gentle-introduction-to-shap-values-in-r/
-https://www.r-bloggers.com/2021/06/shap-analysis-in-9-lines/
-https://tjo.hatenablog.com/entry/2020/09/07/173000

補足情報(FW/ツールのバージョンなど)

Windows11
R version 4.1.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cuttlefish44

2022/05/12 09:55

二値分類なのに num_class=3, objective="multi:softmax" なのはおかしい気がします。 モデルがきちんと作れていないのではないでしょうか。
NatsukiA

2022/05/12 10:23

ありがとうございます。「2値分類なのだから,num_class=2, objective="multi:softprob"」にしたほうがよいという意味合いだと受け取りました。ご指摘いただいた内容についてirisデータで試しましたがやはりエラーがでてしまいました。コードはirisで試したものに変更しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問