武藤さん
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[技術資料(堀)]]
----
目次
#contents
----
*Day0:事前知識 [#j82bebaa]
参考サイト
(1)ランダムフォレストに関して
「https://dse-souken.com/2021/03/26/ai-15/」
「https://ebi-works.com/random-forest/」
「https://www.habe-lab.org/habe/RFtutorial/CVIM_RFtutoria...
(2)多クラス分類に関して
「https://gotutiyan.hatenablog.com/entry/2020/09/22/17514...
「https://tech-blog.optim.co.jp/entry/2021/05/31/100000」
「https://zenn.dev/hellorusk/articles/46734584386c49057e1...
(3)交差検証に関して
「https://www.codexa.net/cross_validation/」
「https://free.kikagaku.ai/tutorial/basic_of_machine_lear...
※層化k分割交差検証
「https://zenn.dev/monda/articles/kaggle-cv-template」
(4)特徴選択(ラッパー法)に関して
「https://qiita.com/shimopino/items/5fee7504c7acf044a521#...
(5)オーバーサンプリング(SMOTE)に関して
「https://qiita.com/ps010/items/38880fad0b8e71464a54」
**ランダムフォレスト [#g48145a8]
ランダムフォレストは、アンサンブル学習による機械学習アル...
#ref(1.1.JPG,,)
**多クラス分類での評価 [#y37389bd]
通常の二値分類では、~
#ref(2.1.JPG,,)
再現率…5 / (5 + 2) = 約 71.4 %、適合率…5 / (5 + 1) = 約 8...
F値…2 * 0.714 * 0.833 / (0.714 + 0.833) = 約 76.9 %~
多クラスの場合では、
#ref(3.1.JPG,,)
再現率… 4 / (4 + 2) = 66.7 %、適合率は…4 / (4 + 9) = 30.8...
**クロスバリデーション(交差検証) [#ace820f3]
クロスバリデーション(交差検証)とは、学習用のデータを複数...
#ref(4.1.JPG,,)
**特徴量選択(ラッパー法) [#v4008258]
特徴量選択のメリット~
1.変数を少なくすることで解釈性を上げる~
2.計算コストを下げて、学習時間を短縮する~
3.過適合を避けて汎用性を向上させる~
4.高次元データによって、パフォーマンスが下がることを防ぐ。~
**ラッパー法 [#i6cd2fa6]
機械学習モデルを使用して特徴量の組み合わせを評価する~
1.特徴量の組み合わせを選択する~
2.[1]で選択した特徴量を使用してモデルを学習させる~
3.性能を評価する~
を繰り返し実行する。~
**SMOTE [#tec371cd]
検出した少数派の近接データを線でつなぎ、その線分上の任意...
#ref(5.1.JPG,,)
*Day1:データの加工を行う [#j0be664c]
**プログラム [#f0f285d1]
#ref(ECprediction_dataset.ipynb)
データの加工を行う~
1.化学反応式を正規表現に分解する~
#ref(1.JPG,,)
2.特性値が計算できない化合物を削除する~
反応式は、オリジナル81204→削除後69779になる~
3.210次元の特徴ベクトルを作成する~
反応式の左辺の特徴ベクトル作成
left_vec = [[list(Descriptors.CalcMolDescriptors(l...
右辺
right_vec = [[list(Descriptors.CalcMolDescriptors(righ...
4.データ加工結果~
#ref(2.JPG,,)
ec番号に対応した特徴ベクトルの値が生成されている
*Day2: モデル生成と学習[#z7cdc7c3]
**プログラム [#ffe2e7a3]
#ref(ECprediction_model.ipynb)
1. 学習データとテストデータに分割する
Xtrain, Xtest, Ytrain, Ytest = train_test_split(ECXXXX, ...
ECXXXX.in...
test_size...
random_st...
stratify=...
2.EC番号のラベルを1桁のみに~
3.テストデータ作成~
4.記述子選択~
5.F1-scoreが最も高い記述子組合せを出力する~
6.一桁目の学習、検証~
#ref(3.JPG,,)
7. EC 1.X.X (EC 1の2,3桁目)クラス分類
### 記述子選択
(1)記述子を1種追加したn種の記述子組合せを選択
(2)学習データを層化抽出し,検証用学習データと検証用テス...
(3)検証用学習データにSMOTEを適用し,n種の記述子からRF分...
(4)検証用テストデータを用い,Macro F1-Scoreで分類精度を...
(5)(4)をk分割の回数だけ行い,平均値を出力
(6)(2)~(5)を 200-n 通りの記述子組合せで行い,平均値が最...
(7) n = n+1 として,k_featuresの数まで(1)~(6)を繰り返す
# 記述子選択インスタンス
sfs1XX = SFS(pipe_mis_smote_rfc, # 分類器 or パイプラ...
k_features=30, # 選択する記述子の上限
forward=True, # forward法
floating=False,
verbose=2,
scoring='f1_macro', # F1-Scoreで評価
cv=StratifiedKFold(n_splits=5, shuffle=True,...
)
8.RFのパラメータ調整(グリッドサーチ)
### グリッドサーチ
#(1)パラメータ組合せのうち1パターンを選択
# (2)学習データを層化抽出し,検証用学習データと検証用テス...
# (3)検証用学習データにSMOTEを適用し,n種の記述子からRF分...
# (4)検証用テストデータを用い,Macro F1-Scoreで分類精度を...
# (5)(2)~(4)をk分割の回数だけ行い,平均値を出力
# (6)(1)~(5)を全パラメータ組合せで行い,平均値が最も高い...
param_dic = {
' rfc__n_estimators': [10, 20, 30, 50, 80, 100, 150,...
'rfc__max_depth': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1...
}
ここで、パラメータ調整を行う。
rfc__n_estimators・・・ランダムフォレストの決定木数~
'rfc__max_depth'・・・ランダムフォレストの最大深さ~
をグリッドサーチにより求める。
9.(7),(8)の方法を用いてEC 2. X. X~EC 6. X .Xまでの記述子...
*Day3:検証 [#v22903c1]
#ref(4.JPG,,)
f1-score のaccuracyを見ると約87.9%になっており、高い精度...
終了行:
[[技術資料(堀)]]
----
目次
#contents
----
*Day0:事前知識 [#j82bebaa]
参考サイト
(1)ランダムフォレストに関して
「https://dse-souken.com/2021/03/26/ai-15/」
「https://ebi-works.com/random-forest/」
「https://www.habe-lab.org/habe/RFtutorial/CVIM_RFtutoria...
(2)多クラス分類に関して
「https://gotutiyan.hatenablog.com/entry/2020/09/22/17514...
「https://tech-blog.optim.co.jp/entry/2021/05/31/100000」
「https://zenn.dev/hellorusk/articles/46734584386c49057e1...
(3)交差検証に関して
「https://www.codexa.net/cross_validation/」
「https://free.kikagaku.ai/tutorial/basic_of_machine_lear...
※層化k分割交差検証
「https://zenn.dev/monda/articles/kaggle-cv-template」
(4)特徴選択(ラッパー法)に関して
「https://qiita.com/shimopino/items/5fee7504c7acf044a521#...
(5)オーバーサンプリング(SMOTE)に関して
「https://qiita.com/ps010/items/38880fad0b8e71464a54」
**ランダムフォレスト [#g48145a8]
ランダムフォレストは、アンサンブル学習による機械学習アル...
#ref(1.1.JPG,,)
**多クラス分類での評価 [#y37389bd]
通常の二値分類では、~
#ref(2.1.JPG,,)
再現率…5 / (5 + 2) = 約 71.4 %、適合率…5 / (5 + 1) = 約 8...
F値…2 * 0.714 * 0.833 / (0.714 + 0.833) = 約 76.9 %~
多クラスの場合では、
#ref(3.1.JPG,,)
再現率… 4 / (4 + 2) = 66.7 %、適合率は…4 / (4 + 9) = 30.8...
**クロスバリデーション(交差検証) [#ace820f3]
クロスバリデーション(交差検証)とは、学習用のデータを複数...
#ref(4.1.JPG,,)
**特徴量選択(ラッパー法) [#v4008258]
特徴量選択のメリット~
1.変数を少なくすることで解釈性を上げる~
2.計算コストを下げて、学習時間を短縮する~
3.過適合を避けて汎用性を向上させる~
4.高次元データによって、パフォーマンスが下がることを防ぐ。~
**ラッパー法 [#i6cd2fa6]
機械学習モデルを使用して特徴量の組み合わせを評価する~
1.特徴量の組み合わせを選択する~
2.[1]で選択した特徴量を使用してモデルを学習させる~
3.性能を評価する~
を繰り返し実行する。~
**SMOTE [#tec371cd]
検出した少数派の近接データを線でつなぎ、その線分上の任意...
#ref(5.1.JPG,,)
*Day1:データの加工を行う [#j0be664c]
**プログラム [#f0f285d1]
#ref(ECprediction_dataset.ipynb)
データの加工を行う~
1.化学反応式を正規表現に分解する~
#ref(1.JPG,,)
2.特性値が計算できない化合物を削除する~
反応式は、オリジナル81204→削除後69779になる~
3.210次元の特徴ベクトルを作成する~
反応式の左辺の特徴ベクトル作成
left_vec = [[list(Descriptors.CalcMolDescriptors(l...
右辺
right_vec = [[list(Descriptors.CalcMolDescriptors(righ...
4.データ加工結果~
#ref(2.JPG,,)
ec番号に対応した特徴ベクトルの値が生成されている
*Day2: モデル生成と学習[#z7cdc7c3]
**プログラム [#ffe2e7a3]
#ref(ECprediction_model.ipynb)
1. 学習データとテストデータに分割する
Xtrain, Xtest, Ytrain, Ytest = train_test_split(ECXXXX, ...
ECXXXX.in...
test_size...
random_st...
stratify=...
2.EC番号のラベルを1桁のみに~
3.テストデータ作成~
4.記述子選択~
5.F1-scoreが最も高い記述子組合せを出力する~
6.一桁目の学習、検証~
#ref(3.JPG,,)
7. EC 1.X.X (EC 1の2,3桁目)クラス分類
### 記述子選択
(1)記述子を1種追加したn種の記述子組合せを選択
(2)学習データを層化抽出し,検証用学習データと検証用テス...
(3)検証用学習データにSMOTEを適用し,n種の記述子からRF分...
(4)検証用テストデータを用い,Macro F1-Scoreで分類精度を...
(5)(4)をk分割の回数だけ行い,平均値を出力
(6)(2)~(5)を 200-n 通りの記述子組合せで行い,平均値が最...
(7) n = n+1 として,k_featuresの数まで(1)~(6)を繰り返す
# 記述子選択インスタンス
sfs1XX = SFS(pipe_mis_smote_rfc, # 分類器 or パイプラ...
k_features=30, # 選択する記述子の上限
forward=True, # forward法
floating=False,
verbose=2,
scoring='f1_macro', # F1-Scoreで評価
cv=StratifiedKFold(n_splits=5, shuffle=True,...
)
8.RFのパラメータ調整(グリッドサーチ)
### グリッドサーチ
#(1)パラメータ組合せのうち1パターンを選択
# (2)学習データを層化抽出し,検証用学習データと検証用テス...
# (3)検証用学習データにSMOTEを適用し,n種の記述子からRF分...
# (4)検証用テストデータを用い,Macro F1-Scoreで分類精度を...
# (5)(2)~(4)をk分割の回数だけ行い,平均値を出力
# (6)(1)~(5)を全パラメータ組合せで行い,平均値が最も高い...
param_dic = {
' rfc__n_estimators': [10, 20, 30, 50, 80, 100, 150,...
'rfc__max_depth': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1...
}
ここで、パラメータ調整を行う。
rfc__n_estimators・・・ランダムフォレストの決定木数~
'rfc__max_depth'・・・ランダムフォレストの最大深さ~
をグリッドサーチにより求める。
9.(7),(8)の方法を用いてEC 2. X. X~EC 6. X .Xまでの記述子...
*Day3:検証 [#v22903c1]
#ref(4.JPG,,)
f1-score のaccuracyを見ると約87.9%になっており、高い精度...
ページ名: