Qiita初投稿。
機械学習の学習の過程で、よく使うモデルとパラメーターの設定を毎回忘れてしまうので
(たいしてモデルを網羅できていませんが。。。)ここで備忘録として残しておくことにします。
内容に誤りがある場合はご指摘いただけると助かります。
1.線形回帰
モデル名 | 線形回帰 |
---|---|
目的 | 回帰 |
.predictが出力する値 | yの予測値(連続値) |
調整すべき主なパラメーター | なし |
データ標準化が必要か? | スケールが異なる入力の場合は必要 |
ハズレ値に対しては | 弱い |
コマンド | sklearn.linear_model.LinearRegression |
特徴(損失関数など) | 予測する誤差を最小化する係数を 見つける。過学習しやすい。 |
利点 | ・高次元データにも適用可能 ・パラメータ調整不要 |
欠点 | ・過学習しやすい ・リアルなデータでは正直あまり使う機会はない |
精度評価の手法 | ・model.score(y_pred,y) ・MSE(平均2乗誤差) ・RMSE(√平均2乗誤差) ・r2_score(決定係数)など |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html |
その他 | - |
2.リッジ回帰
線形回帰属 | |
---|---|
モデル名 | リッジ回帰 |
目的 | 回帰 |
.predictが出力する値 | yの予測値(連続値) |
調整すべき主なパラメーター | <alpha> 0なら正則化なし=線形回帰 値が小さいほど正則化が弱く(0なら線形回帰と同じ)、過学習しやすい。 大きいほど強く正則化を行う(係数の値を小さくする)ので、モデルの複雑さを制限する ※default=1.0 |
データ標準化が必要か? | はい |
ハズレ値に対しては | 弱い |
コマンド | sklearn.linear_model.Ridge |
特徴(損失関数など) | OverFitを防ぐための回帰モデル。誤差の最小化に加え、係数のl2ノルムも合わせて最小化する。重要でない特徴量の係数は0に近づき、汎化性能が高い滑らかなFitが可能になる。 (完全に0にはならない)。 Overfitが疑われるときにはまずこちらを試す |
利点 | ・高次元データにも適用可能 ・線形回帰では過学習となるような ケースで汎化性能を確保できる |
欠点 | ・最適なalphaを見つける必要あり |
精度評価の手法 | ・model.score(y_pred,y) ・MSE(平均2乗誤差) ・RMSE(√平均2乗誤差) ・r2_score(決定係数)など |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html |
その他 | - |
3.ラッソ回帰
線形回帰属 | |
---|---|
モデル名 | ラッソ回帰 |
目的 | 回帰 |
.predictが出力する値 | yの予測値(連続値) |
調整すべき主なパラメーター | <alpha> 0なら正則化なし=線形回帰 値が小さいほど正則化が弱く(0なら線形回帰と同じ)、過学習しやすい。 大きいほど強く正則化を行う(係数の値を小さくする)ので、モデルの複雑さを制限する ※default=1.0 |
データ標準化が必要か? | はい |
ハズレ値に対しては | 弱い |
コマンド | sklearn.linear_model.Lasso |
特徴(損失関数など) | OverFitを防ぐための 回帰モデル。誤差の最小化に加え、係数のl1ノルムも合わせて最小化する。重要でない特徴量の係数は0になるため、モデルから取り除かれるため、特徴量選択を行う事が可能。 重要でない特徴量があることがわかっている場合はこちらを試す。 |
利点 | ・モデル構築に不要な特徴量を除去できて モデルがスッキリする |
欠点 | ・最適なalphaを見つける必要あり |
精度評価の手法 | ・model.score(y_pred,y) ・MSE(平均2乗誤差) ・RMSE(√平均2乗誤差) ・r2_score(決定係数)など |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html |
その他 | - |
4.ロジスティック回帰
線形回帰属 | |
---|---|
モデル名 | ロジスティック回帰 |
目的 | 分類 |
.predictが出力する値 | yが特定のラベルに分類される確率 |
調整すべき主なパラメーター | <penalty> penalty{‘l1’, ‘l2’, ‘elasticnet’, ‘none’} ※default=’l2’ <C> 1/λ、つまりλの逆数を表すのがC。 値が小さいほど正則化が弱く(0なら線形回帰と同じ)、過学習しやすい。 大きいほど強く正則化を行う(係数の値を小さくする)ので、モデルの複雑さを制限する ※default=1.0 |
データ標準化が必要か? | はい(sklearnではデフォルトでl2正則化がされるので) |
ハズレ値に対しては | 弱い |
コマンド | sklearn.linear_model.LogisticRegression |
特徴(損失関数など) | yのクラス分類を行うモデル。 係数wと、特徴量Xの線形重み和をシグモイド関数に入れることで、0-1の範囲でyの予測値(yがあるラベルに属する確率)を 出力する。 2値分類だけでなく、3値以上の分類も可能。 デフォルトではL2で正則化がされている。 |
利点 | ・高次元データにも適用可能 |
欠点 | ・線形回帰なので、特徴量が線形分離不可能の場合は精度が劣る |
精度評価の手法 | ・model.score(y_pred,y) ・混同行列(confusion matrix) ・正解率(accuracy):sklearn.metrics.accuracy_score ・適合率(precision):sklearn.metrics.precision_score ・再現率(recall) ・F1スコア(f1)・・・recallとPrecision双方を加味したスコア など。 ※accuracyだけでなくprecisionやrecallも 見ないと、「正しくPositive(Negative)をPositive(Negative)として予測しているか」の精度が見れないので注意。 |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html |
その他 | model.predict_probaで、各ラベルに分類される確率を予測できる |
5.SVC
サポートベクター属 | |
---|---|
モデル名 | SVC |
目的 | 分類 |
.predictが出力する値 | yがどのラベルに分類されるか |
調整すべき主なパラメーター | <kernel> カーネル関数 linear:線形 poly:多項式 rbf:Radial basis function(放射基底関数)※デフォルト sigmoid:シグモイドカーネル <gamma> 訓練データの位置を中心とした、同じクラスタの領域の 凝集度を決める。小さいほど単純な分類境界となり、大きいほど複雑な決定境界になる <C> コストパラメータ。値が小さいほど誤りを許容し、大きくなるほど誤りの際のペナルティが大きくなる(すなわち誤りに厳しくなる)ので、過学習をおこしやすくなる C→∞とすると,誤分類を許容しないハードマージンになる |
データ標準化が必要か? | はい |
ハズレ値に対しては | クラスの分離境界に最も近い点だけが分離境界を決定するので、一般に強い |
コマンド | sklearn.svm.SVC |
特徴(損失関数など) | yのクラス分類を行うモデル。 利用にあたっては、データの標準化が必須。 n次元空間上の特徴量の点をマージン(決定境界との距離)が最大化されるように、 超平面で特徴量を分離する。 2値分類だけでなく、3値以上の分類も可能。密なデータにも疎なデータにも使える。 カーネルトリックを用いることで、線形ではないデータの分布に対しても、 非線形(曲線)の決定境界も引くことができる。 |
利点 | ・分類モデルとしては精度が高い ・非線形(曲線)の決定境界も引くことができる。 |
欠点 | ・数万データ数以上になると、計算コストが大きすぎて実用的でない。 ・パラメーターの調整にとても敏感 |
精度評価の手法 | ・model.score(y_pred,y) ・混同行列(confusion matrix) ・正解率(accuracy):sklearn.metrics.accuracy_score ・適合率(precision):sklearn.metrics.precision_score ・再現率(recall) ・F1スコア(f1)・・・recallとPrecision双方を加味したスコア など。 ※accuracyだけでなくprecisionやrecallも 見ないと、「正しくPositive(Negative)をPositive(Negative)として予測しているか」の精度が見れないので注意。 |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html?highlight=svc#sklearn.svm.SVC |
その他 | model.predict_probaで、各ラベルに分類される確率を予測できる |
6.LinearSVC
サポートベクター属 | |
---|---|
モデル名 | LinearSVC |
目的 | 分類 |
.predictが出力する値 | yがどのラベルに分類されるか |
調整すべき主なパラメーター | <penalty> penalty{‘l1’, ‘l2’, ‘elasticnet’, ‘none’} ※default=’l2’ <C> コストパラメータ。値が小さいほど誤りを許容し、大きくなるほど誤りの際のペナルティが大きくなる(すなわち誤りに厳しくなる)ので、過学習をおこしやすくなる |
データ標準化が必要か? | はい |
ハズレ値に対しては | クラスの分離境界に最も近い点だけが分離境界を決定するので、一般に強い |
コマンド | sklearn.svm.LinearSVC |
特徴(損失関数など) | カーネル関数を使用しないSVMに基づくクラス分類手法。 カーネルトリックを用いないので、分離境界は直線になる。 ほかは大体SVCと同じ。 |
利点 | ・分類モデルとしては精度が高い |
欠点 | ・数万データ数以上になると、計算コストが大きすぎて 実用的でない。 ・パラメーターの調整にとても敏感 ・非線形な分離境界は引くことができない |
精度評価の手法 | ・model.score(y_pred,y) ・混同行列(confusion matrix) ・正解率(accuracy):sklearn.metrics.accuracy_score ・適合率(precision):sklearn.metrics.precision_score ・再現率(recall) ・F1スコア(f1)・・・recallとPrecision双方を加味したスコア など。 ※accuracyだけでなくprecisionやrecallも 見ないと、「正しくPositive(Negative)をPositive(Negative)として予測しているか」の精度が見れないので注意。 |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html?highlight=linearsvc#sklearn.svm.LinearSVC |
その他 | model.predict_probaで、各ラベルに分類される確率を予測できる |
7.SVR
サポートベクター属 | |
---|---|
モデル名 | SVR |
目的 | 回帰 |
.predictが出力する値 | yの予測値(連続値) |
調整すべき主なパラメーター | <kernel> カーネル関数 linear:線形 poly:多項式 rbf:Radial basis function(放射基底関数)※デフォルト sigmoid:シグモイドカーネル <C> コストパラメータ。値が小さいほど誤りを許容し、大きくなるほど誤りの際のペナルティが大きくなる(すなわち誤りに厳しくなる)ので、過学習をおこしやすくなる。 <epsilon> 決定境界と、データポイント間の誤差の不感帯。誤差がある一定値εを超えるまでは0と扱うので、 −ε<誤差<εの範囲のデータ点は誤差評価の対象となる。小さければ小さいほど、ハードマージンに近づくので、誤差を厳しく評価するが、小さすぎると過学習の可能性あり。※default=0.1 |
データ標準化が必要か? | はい |
ハズレ値に対しては | 線形回帰よりは外れ値に強い |
コマンド | sklearn.svm.SVR |
特徴(損失関数など) | SVMのアイデアを回帰に適用したもの。 ただしSVMとことなるのが、SVMは「分離超平面に最も近い点の、分離平面との距離」を最小化する命題だったのに対し、SVR では 「すべて(※外れ値については別)のデータポイントの分布領域と、決定境界との距離」を マージンとして定義する。 決定境界と、各データポイントの±ε以下の誤差は0として扱うことで、ハズレ値の影響を受けにくい(つまり外れ値に強くなる) そして、そのマージンの中で、SVMのコンセプトに基づいて分離境界を引くことができれば、その超平面は、「いい感じに点の真ん中を通る直線」となり、つまり線形回帰と同じく、回帰式を求めることができる、というわけ。 |
利点 | ・高次元の特徴回帰問題を解くことができる ・特徴量がサンプルの数より多い場合に有効 ・ハズレ値に強い |
欠点 | ・数万データ数以上になると、計算コストが大きすぎて実用的でない。 ・パラメーターの調整にとても敏感 |
精度評価の手法 | ・model.score(y_pred,y) ・MSE(平均2乗誤差) ・RMSE(√平均2乗誤差) ・r2_score(決定係数)など |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html |
その他 | coef_ で、係数を取り出せる(kernel='linear'のときのみ) 理論的な解説はここが詳しい https://yuyumoyuyu.com/2021/01/10/supportvectorregression/ |
8.DecisionTreeClassifier
決定木属 | |
---|---|
モデル名 | DecisionTreeClassifier |
目的 | 分類 |
.predictが出力する値 | yがどのラベルに分類されるか |
調整すべき主なパラメーター | <random_state> アルゴリズムは各分割時に max_features をランダムに選択し、 それらの中から最適な分割を見つけるが、最適な分割は実行ごとに異なる。 つまり実行ごとに、分割に利用される特徴量が異なってしまうため、乱数を固定して 再現性を担保しておく必要がある 学習時にモデルが学習する木の深さの最大値を表すパラメーター。 max_depthの値が設定されていない時、木は訓練データの分類がほぼ終了するまで際限なくデータを分割し、過学習となるため、max_depthを指定して木が深くなりすぎないようにする必要がある。 < min_samples_split> Node分割時の最小サンプルサイズ。小さいほど分割しやすいので,Overfitしやすい < max_features> Node分割時に用いて良い変数の数 。各Node分割時にランダムに変数を選び, その中で分割対象 を決定。大きいほどより制限がないのでOverfitしやすい < min_samples_leaf> 葉の最小サンプルサイズ。小さいほど細かくノードを分割するのでOverfitしやすい |
データ標準化が必要か? | いいえ |
ハズレ値に対しては | 強い |
コマンド | sklearn.tree.DecisionTreeClassifier |
特徴(損失関数など) | ある特徴量Xに着目し、その特徴量Xが~以上か?未満か?みたいな 質問(ノード)を、繰り返し条件分岐させることで、特定の特徴量Xをもつ データサンプルをクラスタリングさせる。 なぜそのクラスタリング結果になったか?が ツリー構造となっており、わかりやすい。 各ノードで、異なる特徴量Xを判別に用いる。また、クラスタリング結果を可視化したときに、分離境界は、特徴量の軸に平行な境界線となる。 |
利点 | ・高速に処理できる ・可視化も容易 ・データのスケーリングは不要 ・非線形のデータや説明変数の多い(次元の高い)データ、様々な尺度(質 的変数か量的変数かなど)が混在しているデータでも扱える |
欠点 | ・単体だと精度が低い |
精度評価の手法 | ・model.score(y_pred,y) ・混同行列(confusion matrix) ・正解率(accuracy):sklearn.metrics.accuracy_score ・適合率(precision):sklearn.metrics.precision_score ・再現率(recall) ・F1スコア(f1)・・・recallとPrecision双方を加味したスコア など。 ※accuracyだけでなくprecisionやrecallも 見ないと、「正しくPositive(Negative)をPositive(Negative)として予測しているか」の精度が見れないので注意。 |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html |
その他 | from sklearn.tree import plot_tree plot_tree(model,feature_names=X.columns)で 決定木自体を可視化できる |
9.RandomForestClassifier
決定木属 | |
---|---|
モデル名 | RandomForestClassifier |
目的 | 分類 |
.predictが出力する値 | yがどのラベルに分類されるか |
調整すべき主なパラメーター | <random_state> 各分類木を作成する時、各分類木でランダムなデータポイントと特徴量を選択するので、再現性担保のために乱数を固定する必要がある 学習時にモデルが学習する木の深さの最大値を表すパラメーター。 max_depthの値が設定されていない時、木は訓練データの分類がほぼ終了するまで際限なくデータを分割し、 過学習となるため、max_depthを指定して木が深くなりすぎないようにする必要がある。 <n_estimators> default:100 決定木を何個用いるか。基本的に(計算コストは掛かるが)大きければ大きいほど汎化性能を確保できる。 < min_samples_split> Node分割時の最小サンプルサイズ。小さいほど分割しやすいので,Overfitしやすい < max_features> Node分割時に用いて良い変数の数 。各Node分割時にランダムに変数を選び, その中で分割対象を決定。大きいほどより制限がないのでOverfitしやすい < min_samples_leaf> 葉の最小サンプルサイズ。小さいほど細かくノードを分割するのでOverfitしやすい |
データ標準化が必要か? | いいえ |
ハズレ値に対しては | 強い |
コマンド | sklearn.ensemble.RandomForestClassifier |
特徴(損失関数など) | 決定木(分類木)を複数組み合わせ、 それぞれの決定木に、ランダムに分割したデータ と、ランダムに選択した特徴量のセットを与える。 最後に各決定木の出力結果を多数決をとることで、 単体の決定木よりも優れた精度を出す。 広く使われる優秀な分類アルゴリズム。 |
利点 | ・決定木よりも頑健で、精度も高い。 ・データのスケーリングは不要 ・非線形のデータや説明変数の多い(次元の高い)データ、 様々な尺度(質的変数か量的変数かなど)が混在している データでも扱える |
欠点 | 訓練セットのレンジ外にテストデータがある場合、予測精度が低い (外挿ができない) パラメーターの設定に敏感で、複雑にすると容易に過学習に陥ることがある |
精度評価の手法 | ・model.score(y_pred,y) ・混同行列(confusion matrix) ・正解率(accuracy):sklearn.metrics.accuracy_score ・適合率(precision):sklearn.metrics.precision_score ・再現率(recall) ・F1スコア(f1)・・・recallとPrecision双方を加味したスコア など。 ※accuracyだけでなくprecisionやrecallも 見ないと、「正しくPositive(Negative)をPositive(Negative)として予測しているか」の精度が見れないので注意。 |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html |
その他 | plot_feature_importances_(model)で、特徴量ごとの重要度を可視化できる |
10.RandomForestRegressor
決定木属 | |
---|---|
モデル名 | RandomForestRegressor |
目的 | 回帰 |
.predictが出力する値 | yの予測値(連続値) |
調整すべき主なパラメーター | RandomForestClassifierと同じ |
データ標準化が必要か? | いいえ |
ハズレ値に対しては | 強い |
コマンド | sklearn.ensemble.RandomForestRegressor |
特徴(損失関数など) | RandomForestClassifierの回帰木バージョン。 |
利点 | RandomForestClassifierと同じ |
欠点 | 訓練セットのレンジ外にテストデータがある場合、予測精度が低い(外挿ができない) パラメーターの設定に敏感で、複雑にすると容易に過学習に陥ることがある |
精度評価の手法 | ・model.score(y_pred,y) ・MSE(平均2乗誤差) ・RMSE(√平均2乗誤差) ・r2_score(決定係数)など |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html |
その他 | plot_feature_importances_(model)で、 特徴量ごとの重要度を可視化できる |
11.GradientBoostingClassifier
勾配Boosting属 | |
---|---|
モデル名 | GradientBoostingClassifier |
目的 | 分類 |
.predictが出力する値 | yがどのラベルに分類されるか |
調整すべき主なパラメーター | <random_state> 再現性担保のためには、ブースティングの各反復において,各ツリーに与える 乱数シードを制御する必要がある。 <learning_rate>float, default=0.1 個々の決定木が予測した分類結果に対して、その結果の誤りをどれくらい強く 補正するかの割合。(学習率) n_estimatorsとはトレードオフの関係性(学習率を大きくすればlearning_rateは小さく、小さくすればlearning_rateは大きく)がある。大きくしすぎると、誤りを強く補正しすぎるため、OverFitになる。 <n_estimators> 決定木を何個用いるか。RandomForestでは大きければ大きいほど良かったが、n_estimatorsを大きくしすぎると、誤りを強く補正しすぎるため、OverFitになる。n_estimatorsを先に決めておき、最適なlearning_rateを探索する方法がよく使われる。 <max_depth> 学習時にモデルが学習する木の深さの最大値を表すパラメーター。 max_depthを指定して木が深くなりすぎないようにする必要がある。 基本的に個々の木の深さは小さく設定され、最大でも5程度が適している(ような気がする)。 |
データ標準化が必要か? | いいえ |
ハズレ値に対しては | 弱い |
コマンド | sklearn.ensemble.GradientBoostingClassifier |
特徴(損失関数など) | 勾配Boosting分類木モデル。教師あり学習の中でもとても強力で、 広く使われている。 決定木を複数組み合わせることで精度を向上させるコンセプトはRandomForestと同じだが、個々の決定木の出力結果の誤りを、次の決定木が修正するように (誤ったデータに重み付けする)シーケンシャルに学習していく。(バギング) 最終的に、各決定木の出力結果の加重平均を取ることで、アウトプットを生成する。 仕組み上、外れ値に対しては弱いのと、計算時間がかかる。 ※This is because boosting builds each tree on previous trees' residuals/errors. Outliers will have much larger residuals than non-outliers, so boosting will focus a disproportionate amount of its attention on those points https://www.quora.com/Is-XGBoost-robust-to-outliers |
利点 | ・Kaggleなどでもよく使われるほど、精度が高い ・データのスケーリングは不要 ・非線形のデータや説明変数の多い(次元の高い)データ、 様々な尺度(質的変数か量的変数かなど)が混在している データでも扱える |
欠点 | ・計算コストが非常に高く付く ・可視化は難しい ・パラメーターの設定に敏感 |
精度評価の手法 | ・model.score(y_pred,y) ・混同行列(confusion matrix) ・正解率(accuracy):sklearn.metrics.accuracy_score ・適合率(precision):sklearn.metrics.precision_score ・再現率(recall) ・F1スコア(f1)・・・recallとPrecision双方を加味したスコア など。 ※accuracyだけでなくprecisionやrecallも 見ないと、「正しくPositive(Negative)をPositive(Negative)として予測しているか」の精度が見れないので注意。 |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html |
その他 | plot_feature_importances_(model)で、 特徴量ごとの重要度を可視化できる |
12.GradientBoostingRegressor
勾配Boosting属 | |
---|---|
モデル名 | GradientBoostingRegressor |
目的 | 回帰 |
.predictが出力する値 | yの予測値(連続値) |
調整すべき主なパラメーター |
random_state: 再現性担保のためには、ブースティングの各反復において,各ツリーに与える乱数シードを制御する必要がある。 max_depth:木を成長させたい最大の深さ n_estimators:作成するツリーの量 Learning_rate:個々の決定木が予測した分類結果に対して、その結果の誤りをどれくらい強く補正するかの割合。(学習率) loss:残差の計算に使用する損失関数 (デフォルトは「ls」または最小二乗) max_leaf_nodes:各ツリーに必要なリーフノードの最大数。この数がトレーニングインスタンスの数よりも少なく、2つ以上のインスタンスが同じリーフ内にある場合、リーフの値はそのリーフ内のすべてのトレーニングインスタンス値の平均になる。 |
データ標準化が必要か? | いいえ |
ハズレ値に対しては | 弱い |
コマンド | sklearn.ensemble.GradientBoostingRegressor |
特徴(損失関数など) | 勾配ブースティング回帰木モデル。 教師あり学習の中でもとても強力で、広く使われている。 |
利点 | ・Kaggleでもよく使われるほど、精度が高い ・データのスケーリングは不要 ・非線形のデータや説明変数の多い(次元の高い)データ、 様々な尺度(質的変数か量的変数かなど)が混在している データでも扱える |
欠点 | ・計算コストが非常に高く付く ・可視化は難しい ・パラメーターの設定に敏感 |
精度評価の手法 | ・model.score(y_pred,y) ・MSE(平均2乗誤差) ・RMSE(√平均2乗誤差) ・r2_score(決定係数)など |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html?highlight=gradientboostingre#sklearn.ensemble.GradientBoostingRegressor |
その他 | plot_feature_importances_(model)で、 特徴量ごとの重要度を可視化できる |
13.NLPClassifier
ニューラルネットワーク属 | |
---|---|
モデル名 | MLPClassifier |
目的 | 分類 |
.predictが出力する値 | yがどのラベルに分類されるか |
調整すべき主なパラメーター |
こちらにまとまっている https://spjai.com/neural-network-parameter/ |
データ標準化が必要か? | はい |
ハズレ値に対しては | ? |
コマンド | sklearn.neural_network import MLPClassifier |
特徴(損失関数など) | 多層パーセプトロンからなる分類モデル。 |
利点 | ・sklearn上で試せるNNモデル ・パラメーターチューンすれば高い精度を期待できる |
欠点 | ・(隠れ層の)パラメーターチューニング、層の設計が大変 |
精度評価の手法 | ・model.score(y_pred,y) ・混同行列(confusion matrix) ・正解率(accuracy):sklearn.metrics.accuracy_score ・適合率(precision):sklearn.metrics.precision_score ・再現率(recall) ・F1スコア(f1)・・・recallとPrecision双方を加味したスコア など。 ※accuracyだけでなくprecisionやrecallも 見ないと、「正しくPositive(Negative)をPositive(Negative)として予測しているか」の精度が見れないので注意。 |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html |
その他 | - |
14.NLPRegressor
ニューラルネットワーク属 | |
---|---|
モデル名 | NLPRegoressor |
目的 | 回帰 |
.predictが出力する値 | yの予測値(連続値) |
調整すべき主なパラメーター | こちらにまとまっている https://spjai.com/neural-network-parameter/ |
データ標準化が必要か? | はい |
ハズレ値に対しては | ? |
コマンド | sklearn.neural_network.MLPRegressor |
特徴(損失関数など) | 多層パーセプトロンからなる回帰モデル。 |
利点 | ・sklearn上で試せるNNモデル ・パラメーターチューンすれば高い精度を期待できる |
欠点 | ・(隠れ層の)パラメーターチューニング、層の設計が大変 |
精度評価の手法 | ・model.score(y_pred,y) ・MSE(平均2乗誤差) ・RMSE(√平均2乗誤差) ・r2_score(決定係数)など |
sklearnのドキュメント | https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPRegressor.html |
その他 | coefs_[i]で、i番目のレイヤの回帰係数を取り出せる intercepts_[i]で、切片(バイアス)項を取り出せる |