データ解析に関するいろいろな手法を解説した記事や、データ解析をするときの考え方の記事をまとめました。興味のある内容がございましたら、ぜひリンクへ飛んでいただけたらと思います。
pdfファイルやパワーポイント(pptx)ファイルは、自由にご利用ください。
数学(行列計算・線形代数・統計・確率)が不安な方へ
高校数学の知識から、人工知能・機械学習・データ解析へつなげる、必要最低限の教科書
人の学習と人工知能の学習~人工知能を学習させるとかモデルを構築するということ~
Datachemical LAB
- 化学・化学工学分野におけるデータ解析・機械学習クラウドサービス「Datachemical LAB」
- Datachemical LAB をデータ解析・機械学習・人工知能の初学者が用いて問題ないのか?
- Datachemical LAB は他のソフトウェアと何が違うのか?~9つの大きなポイント~
- Datachemical LABによって研究者やエンジニアが実験や製造に集中できるようになった
- Datachemical LAB にどんな価値があるか
- Datachemical LAB の出現によるデータ解析・機械学習の変化
- Datachemical LABで解ける実践的な課題
- Datachemical LAB にソフトセンサーと異常検知の機能が追加されました![オンライン予測も可能]
- Datachemical LABで複雑な実験系・プロセスにも対応した仮想サンプルの生成ができるようになりました
- Datachemical LABで欠損値補完ができるようになりました
- Datachemical LABで直接的逆解析ができるようになりました
- Datachemical LABを用いることでセミナーの受講者の方々の満足度が上がりました
- Datachemical LABでクラス分類のモデル最適化と予測ができるようになりました
- Datachemical LABで混合物の特徴量化ができるようになりました
- Datachemical LAB のメニューが新しくなり、さらに使いやすくなりました!
- 実践的な練習課題を Datachemical LAB で解き実践力をつける
- Datachemical LABでデータに嘘をつかないデータ解析・機械学習を
- Datachemical LABでスペクトルの変換ができるようになりました
DCEKit
- DCEKit (Data Chemical Engineering toolKit) を PyPI にリリース!
- DCEKit (Data Chemical Engineering toolKit) のクラスや関数の解説 (取扱説明書)
- DCEKit にバギングによるアンサンブル学習の機能を追加!scikit-learn の BaggingRegressor や BaggingClassifier との違いとは?
- DCEKit に新機能追加 [v2.5.2]!Variational Bayesian Gaussian Mixture Regression(VBGMR)とクロスバリデーションによるGMR最適化
- DCEKit に新機能追加 [v2.6.1]!トレーニングデータなしでスペクトルから濃度を推定する方法
- 回帰分析手法やクラス分類手法のハイパーパラメータをベイズ最適化で高速に最適化する
- GTM や GTM Regression (GTMR) のハイパーパラメータの高速最適化 [v2.7.1] (DCEKit)
- GridSearchCVでハイパーパラメータの最適化に失敗した時の原因と対処法 [v2.8.1] (DCEKit)
- サンプルをグループごとにトレーニングデータとテストデータに分割する機能をDCEKitに搭載しました![v2.9.1]
- 任意の回帰分析手法で変数重要度(特徴量重要度)を計算する機能をDCEKitに搭載しました![v2.10.1]~Cross-validated Permutation Feature Importance(CVPFI)~
- 深層学習に基づくニューラルネットワークのハイパーパラメータをベイズ最適化で高速に最適化する[v2.11.1] (DCEKit)
- 非線形回帰モデルを解釈する[v2.12.1] (DCEKit)
- 任意のクラス分類手法で変数重要度(特徴量重要度)を計算する機能をDCEKitに搭載しました![v.2.13.1]~Cross-Validated Permutation Feature Importance (CVPFI) for classification~
- CVPFI(任意の回帰分析手法・クラス分類手法における特徴量重要度)が複数の目的変数に対応しました!
- クラス分類における深層学習に基づくニューラルネットワークのハイパーパラメータをベイズ最適化で高速に最適化する[v2.14.1] (DCEKit)
新人研修
- データ解析・機械学習の結果は図や表にしましょう!
- その”点”は何を意味するのか?
- 違和感を大切にしよう!
- サンプルの素性を知ろう!
- 自分のコードを1行1行説明できるようになろう!
- わかりやすく汎用的なコードにしよう!
解析するときの考え方
- サンプル・特徴量・データ・データセットなどの用語を整理します!
- 迷っている方、とりあえずデータ解析・機械学習してモデル構築と予測をしてみましょう!
- 機械学習(回帰分析・クラス分類)をする全ての人が、最初に頭に入れるべきこと
- データ解析の基本的な流れを整理します
- まずは機械学習モデルを設計、評価、解釈のどれに用いるか決めましょう!
- 機械学習モデルを、評価 or 挑戦のどちらに使うか明確にしましょう!
- 機械学習モデルを使うべきか、使わないべきか?
- 人の知見・経験・感性などをどのようにデータ解析・機械学習に取り入れるか?
- モデルの予測精度を上げればゴール?~真の目的をふまえて解析しよう!~
- サンプルが少なくてもまずはデータ解析・機械学習してみよう!
- 合成条件から材料の物性・活性や製品品質まで複数のモデルで繋ぐ
- どんなときにデータ解析・データ分析で成果がでやすいか?
- 取材を受けて話し合ったところ、ケモ- マテリアルズ- プロセスインフォマティックスの根幹を再認識しました!
- 困ったら基礎やアルゴリズムに立ち戻ることも大事です
- 良くない実験結果も、データ解析・機械学習するときは大事なデータです
- データ解析や機械学習をするときは、常に目的を意識しましょう
- 多重共線性の実践的で実質的な解決方法
- データは嘘をつかないので、データを集めたりデータから得られる結果を解釈したりするときにデータに嘘をつかないようにする
- 「やりたいこと」と「できること」をつなぐデータ解析・機械学習(AI・人工知能)
- 予測誤差は全部ノイズ!~ノイズを0にする方向で考えよう!~
- データセットを解析したり新たな手法を開発したりする時にチェックしていること
- ノイズとの付き合い方、普段の生活でも同じこと!?
- モデルの過学習(オーバーフィッティング)とうまく付き合うために状況を整理しましょう
- 今あるデータセットに対して、どの手法を使えばよいのか?
- データ解析・機械学習におけるベストプラクティスとは
- ロバストなモデル・手法・方法ってどういうこと?推定性能が高い、とは違います!
- 目的変数が複数あるときに、異なる説明変数で数理モデルを構築しても問題ありません!
- 記述子の計算結果を保存する(データベース化する)ときの3つの注意点
- 個性的な人工知能をつくる
- 人工知能は本質的に何をしているのか
- 人を成長させる人工知能
- 手法や手段を目的化しないように気をつけましょう!~データ解析・機械学習が目的ではありません~
- 目的変数ごとにサンプル・特徴量を変えてもOK!(ベイズ最適化や能動学習等も同じ)
- 外挿領域を予測するときの心構え
- 外挿を予測するならローカルモデルではなくグローバルモデルでしょう!
- 尺度水準~変数(記述子・特徴量)のレベルを把握しておきましょう~
- 機械学習モデルの議論において、まずモデルが何を表すか明確にすると良いと思います!
- 構築したモデル(学習済みモデル)を保存しておく?
- 詳細な合成条件・プロセス条件のデータがないときの対応
- 設計変数・制御可能な変数と成り行きで変わる変数を区別して検討する
データの前処理
- 基本的なデータの前処理方法 オートスケーリング(標準化)・変数選択など
- 特徴量の標準化(オートスケーリング)をするときのちょっとした工夫
- データ解析や構築したモデルの目的によって特徴量や手法は異なる
- データセットの空欄を埋める方法
- データ解析前における、説明変数(特徴量・記述子)の決め方・選び方の方針
- 特徴量に関する基本的な考え方~複数の物質が混合されてできた物質~
- 材料合成における原料の物性値の活用方法
- モデリングを工夫することで、すべてのデータを活用しよう!
- 機械学習、特に教師あり学習をする際の特徴量データの準備の方針
- サンプルは必ず元のデータセットから選択しよう!
- スパースな(疎な)実験データセットを解析するときの一工夫
- yが0や1(100)の値をもつデータセットの扱い方
- yが0(もしくは1)の削除したサンプルをどう使うか?
- 特徴量を抽象化して、モデルの逆解析により得られるサンプルの多様性を高める
- 測定条件・分析条件・評価条件の異なる物性や活性のデータの扱い
- 同じ実験条件で何回か実験した結果があるときのデータ解析・機械学習
- 主成分分析(Principal Component Analysis, PCA)の前に変数の標準化(オートスケーリング)をしたほうがよいのか?
- 本当に標準偏差(分散)が0の説明変数(記述子・特徴量)を削除してよいのか?
- [Pythonコード付き] 相関係数で変数選択したり変数のクラスタリングをしたりしてみましょう
- スペクトル・時系列データの前処理の方法~平滑化 (スムージング) と微分~
- トレーニングデータ・バリデーションデータ・テストデータの定義
- 回帰分析・クラス分類をするときの、モデル構築用データ (トレーニングデータ) とモデル検証用データ (テストデータ) の分け方 [Kennard-Stoneアルゴリズムのコードあり]
- 外れサンプルは1つずつ検討しよう!
- 外れ値検出 (Outlier Detection) もしくは 外れサンプル検出 (Outlier Sample Detection) ~他の値・サンプルと大きく異なる値・サンプルを見つけよう!~
- 回帰分析のときにアンサンブル学習で自動的かつロバストに外れサンプルを見つける Python プログラムを公開します
- One-Class Support Vector Machine (OCSVM) で外れ値・外れサンプルを検出したりデータ密度を推定したりしよう!
- 何かの異常で外れサンプルなのか、外挿領域のため外れサンプルなのか、見分けるための一つのアイデア
- 回帰分析からクラス分類に変換したり、クラス分類から回帰分析に変換したりするメリット・デメリット
- クラス分類から回帰分析へ!0, 1 だけでなく、その間を定量的に予測しよう!
- どんなクラス分類のデータも回帰分析に変換する方法 (説明変数にも使えます)
- X と Y が一貫した関係をもつようなデータセットの作り方
- 回帰分析のときに外れサンプルを検出する手法を開発しました [金子研論文]
変数変換・特徴量変換
- 少しでも目的変数と関係しそうな特徴量は入れていきましょう!(間違っているかもなんて気にしない!)
- どのようなときに目的変数Yではなくlog(Y)にしたほうがよいのか?~対数変換するメリットとデメリット~
- 0を含む変数を対数変換するときはどうすればよいのか?
- 目的変数の値が0から1の間のとき、予測値も0から1の間にしたい!→ロジット変換はどうでしょう?
- バッチプロセスにおける特徴量の作り方
- モデルの逆解析をふまえた特徴量設計
- 特徴量として実測値ではなく推定値を用いたほうがモデルの予測精度が高くなるときってありますよね
- モデル構築するときに特徴量xの重みを考慮できるか
- 目的変数yも特徴量エンジニアリング!
- 理論が先か、データ解析・機械学習が先か、特徴量エンジニアリングの方針と注意点
- 外挿を予測するための混合物の特徴量の計算手順
- 実験結果が人依存のデータ解析・機械学習の考え方
- 特徴量・記述子を検討・設計するときの心構え
補完
- [Pythonコードあり] iterative Gaussian Mixture Regression(iGMR)で欠損値を補完しましょう!(目的変数があってもなくても構いません)
- 欠損値のないサンプルがデータセットにないときの iGMR の使い方
データセットの可視化・見える化
- データの可視化をする理由
- データの可視化・見える化のための手法を選ぶときの2つのポイント
- 見える化・可視化した結果を評価する指標を開発しました、ハイパーパラメータの設定もこれでOK (Python・MATLABプログラムあり)
- データセットを可視化・見える化する手法の選び方
- 可視化手法・低次元化手法の分類
- 主成分分析(Principal Component Analysis, PCA)
- 独立成分分析 (Independent Component Analysis, ICA)
- 自己組織化マップ(Self-Organizing Map, SOM)
- Generative Topographic Mapping (GTM)
- まずは、特徴量をなるべくたくさん準備する、というスタンスが良さそうです!
- ガウス過程による潜在変数モデル(Gaussian Process Latent Variable Model, GPLVM)で非線形性を考慮した潜在変数を計算しよう!
- Sparse Generative Topographic Mapping(SGTM): データの可視化とクラスタリングを一緒に実行する方法 [金子研論文]
- t-distributed Stochastic Neighbor Embedding (t-SNE) ~データの可視化に特化した手法~
- データセットに合わせて主成分分析PCAを有効に活用する
- 教師あり学習と組み合わせて、教師なし学習の手法の選択やそのハイパーパラメータの選択をする
クラスタリング
- クラスタリングは何のためにやるのか?
- 階層的クラスタリング(クラスター分析)、近いクラスターを結合していく
- k平均法 (k-means clustering) 非階層的クラスタリング
- 混合ガウスモデル (Gaussian Mixture Model, GMM)~クラスタリングするだけでなく、データセットの確率密度分布を得るにも重宝します~
- 任意のクラスタリング手法においてクラスター数を自動的に決める方法
- 教師あり学習と組み合わせて、教師なし学習の手法の選択やそのハイパーパラメータの選択をする
変数選択・特徴量選択
- [Pythonコード付き] 相関係数で変数選択したり変数のクラスタリングをしたりしてみましょう
- Stepwise (ステップワイズ) 法による説明変数 (入力変数・記述子・特徴量) の選択~手軽な変数選択手法~
- GAPLS, GASVR でモデルの推定性能がよくなるように説明変数の選択をしよう![Pythonコードあり]
- [Pythonコードあり] スペクトル解析における波長領域や時系列データ解析におけるプロセス変数とその時間遅れを選択する方法
- GAWLS や GAVDS における領域数の決め方
- [解析結果付き] Boruta、ランダムフォレストの変数重要度に基づく変数選択手法
- GAPLSやGASVRだけでなくGA+回帰分析手法で変数選択・特徴量選択
- 変数重要度(特徴量重要度)を計算するときの一工夫(回帰分析・クラス分類)
- 変数選択・特徴量選択のときに注意すること
- 変数選択・特徴量選択のときの意識は、モデルの予測精度を上げることより、不要な変数・特徴量を削除することです
- 遺伝的アルゴリズムによる特徴量選択・変数選択は制約により偶然の相関や過学習を回避せよ!
- 特徴量選択・変数選択をするときのハイパーパラメータの決め方や考え方
- 特徴量選択するときのモデルのハイパーパラメータの決め方
- 特徴量選択の結果をこのように整理してはいかがでしょうか?[Pythonコードあり]
- データセットに不要な特徴量があることよりも、重要な特徴量がないことの方が問題です
- モデル構築のときに特徴量の重要度を考慮した方がよいか
回帰分析
- 回帰分析における0のデータの注意点と対処法
- k最近傍法(k-Nearest Neighbor, k-NN)でクラス分類・回帰分析・モデルの適用範囲(適用領域)の設定をしよう!
- 最小二乗法による線形重回帰分析
- 部分的最小二乗回帰(Partial Least Squares Regression, PLS)
- Locally-Weighted Partial Least Squares (LWPLS, 局所PLS) ~あのPLSが非線形性に対応!~ [Python・MATLABコードあり]
- リッジ回帰(Ridge Regression, RR), Least Absolute Shrinkage and Selection Operator (LASSO), Elastic Net (EN)
- サポートベクター回帰(Support Vector Regression, SVR)
- 決定木(Decision Tree, TD)
- ランダムフォレスト(Random Forest, RF)
- 決定木やランダムフォレストを回帰分析でどのように活用するか?
- [デモのプログラムあり] 勾配ブースティングGradient Boosting、特に Gradient Boosting Decision Tree (GBDT), XGBoost, LightGBM
- 誤差逆伝播法によるニューラルネットワーク(BackPropagation Neural Network, BPNN)~深層学習(ディープラーニング)の基礎~
- ガウス過程による回帰(Gaussian Process Regression, GPR)
- [Pythonコードあり] 教師あり混合ガウスモデル(Supervised Gaussian Mixture Models)で回帰分析も逆解析も自由自在に♪~Gaussian Mixture Regression(GMR)~
- Generative Topographic Mapping(GTM)でデータの可視化・回帰分析・モデルの適用範囲・モデルの逆解析を一緒に実行する方法 [金子研論文]
- Variational Bayesian Gaussian Mixture Regression(VBGMR)とクロスバリデーションによるGMR最適化
- [Python・MATLABコードあり] クロスバリデーションしないで非線形回帰モデルのハイパーパラメータを最適化する方法~サンプルの中点の活用~
- 目的変数 Y における測定誤差などのばらつきを考慮したモデリング
- 目的変数の実測値vs.予測値プロットが横になってしまう(寝てしまう)ときは非線形手法を検討しよう
- 線形手法を使うべきか、非線形手法を使うべきか
- サンプルごとに目的変数の値が複数あったり分布をもったりするときの解析方法
- モデルの予測精度を上げるための考え方・方針
- LASSO も SVR もスパースモデリング!
- 目的変数に上限や下限があるときの回帰分析の潜在的問題と、その解決方法
- 回帰分析の外れサンプルはその原因を説明できれば問題ない!
クラス分類
- クラス分類とクラスタリング、名前は似ていますが全く異なります
- k最近傍法(k-Nearest Neighbor, k-NN)でクラス分類・回帰分析・モデルの適用範囲(適用領域)の設定をしよう!
- 線形判別分析(Linear Discriminant Analysis, LDA)
- サポートベクターマシン(Support Vector Machine, SVM)
- ロジスティック回帰(Logistic Regression)
- 決定木(Decision Tree, TD)
- ランダムフォレスト(Random Forest, RF)
- [デモのプログラムあり] 勾配ブースティングGradient Boosting、特に Gradient Boosting Decision Tree (GBDT), XGBoost, LightGBM
- 誤差逆伝播法によるニューラルネットワーク(BackPropagation Neural Network, BPNN)~深層学習(ディープラーニング)の基礎~
- 単純ベイズ分類器 (ナイーブベイズ, Naïve Bayes Classifier) でクラス分類
- モデルの予測精度を上げるための考え方・方針
- (回帰モデルと比べて)クラス分類モデルで注意すること
サンプル数が小さいときに (スモールデータ)
- データ解析・機械学習を始める際のサンプル数の目安(あくまで目安!)
- スモールデータを用いたデータ解析・機械学習のアプローチのまとめ
- サンプルが少ないときはどうするか?・・・うーん、仕方がないので幅で考えましょう! (一変数・単変量で正規分布に従う場合)
- サンプルが少ないときはどうするか?・・・うーん、仕方がないのでデータ分布を仮定してたくさんサンプリングしましょう! (多変量の場合)
- サンプルが少ないときは解析結果が変わりやすい
アンサンブル学習
- アンサンブル学習 ~三人寄れば文殊の知恵~ たくさんモデルを作って推定性能を上げよう!
- ランダムフォレスト(Random Forest, RF)
- アンサンブル学習の有効な活用方法
- アンサンブル学習でも、各サブモデルの適用範囲・適用領域をちゃんと考えよう!~Ensemble learning method Considering Applicability Domain of each Submodel (ECADS)~
- Adaboost (Adaptive Boosting) によるアンサンブル学習のやり方を解説します
- [デモのプログラムあり] 勾配ブースティングGradient Boosting、特に Gradient Boosting Decision Tree (GBDT), XGBoost, LightGBM
- 過学習(オーバーフィッティング)が怖いときはアンサンブル学習と組み合わせよう!
- 一つのサンプルに対して実験結果が複数あるときのアンサンブル学習
- アンサンブル学習ではモデル間の独立性が重要
半教師あり学習 (半教師付き学習)・転移学習
- 半教師あり学習 (半教師付き学習) の4つのメリット (回帰分析・クラス分類)
- 回帰分析における半教師あり学習 (半教師付き学習) のメリットを確認しました!
- [Pythonコード付き] 主成分分析(PCA)に基づく半教師あり学習
- [Pythonコードあり] 半教師あり学習するときはサンプル選択しましょう!
- [解析結果とPythonコードあり] 転移学習 (Transfer Learning) を用いたデータ解析
- 転移学習における標準化(オートスケーリング)
- 転移学習の方法の選び方
- ディープニューラルネットワークはサンプルが多くないとダメ?→半教師あり学習や転移学習をしてみては?
モデルの検証
- 回帰分析手法・クラス分類手法の選び方
- 回帰モデル・クラス分類モデルを評価・比較するためのモデルの検証 (Model validation)
- トレーニグデータを増やしてテストデータを予測したらどうなった?
- クロスバリデーションにおける注意点のまとめ
- モデルの検証やその後における外れ値・外れサンプルの扱い
- 決定係数r2、MAE、正解率などの統計量の扱いには注意しましょう
- r2 , RMSE, MAE は手法やモデルを比較するための指標です
- r2 や正解率を上げることを目的にしない
- モデルの予測精度の向上は手段であって目的ではありません
- (ダブル)クロスバリデーションの予測結果が悪い時はどうするか?
- テストデータやダブルクロスバリデーションで何を評価しているのか
- ダブルクロスバリデーションの中でハイパーパラメータがコロコロ変わっても問題ありません!
- 回帰分析手法やクラス分類手法のハイパーパラメータをベイズ最適化で高速に最適化する
- ハイパーパラメータの選択に失敗してしまったときの対処法
- GridSearchCVでハイパーパラメータの最適化に失敗した時の原因と対処法
- 回帰分析における目的変数の実測値 vs. 推定値プロットを、解像度を上げて見る
- 人工知能・機械学習のときには過学習 (オーバーフィッティング) に気をつけよう!~過学習とその対処法~
- ぜんぶオーバーフィッティングのせいだ。
- オーバーフィッティング(過学習)の本質を理解して実用的な議論をする
- 過学習(オーバーフィッティング)にとらわれない!
- フィッティングの結果は何に使うのか?
- ダブルクロスバリデーション(モデルクロスバリデーション)でテストデータいらず~サンプルが少ないときのモデル検証~
- クロスバリデーションとダブルクロスバリデーションの整理
- モデルの推定性能を評価しても、その結果で最適化したら評価にならないので注意ですよ!
- モデルの予測精度を上げるのではなく、本来の予測精度を目指すという考え方
- バリデーション結果は、少数の比較には使ってよいが最適化に使ってはいけない!~外部バリデーションや(ダブル)クロスバリデーションでは何を評価しているのか?評価するときのジレンマとは?~
- 無意味な候補は選択肢から外しましょう!
- y-randomizationで過学習(オーバーフィッティング), Chance Correlation(偶然の相関)の危険度を評価!
- y-randomization(y-scrambling)の結果が悪いとき、どうすればいいのか?
- 小さなデータセットが抱える大きな問題
- サンプルを増やしてモデルの予測精度が向上する、とは?
- 予測精度の高いモデルができればそれでよいのか?
- 今のハイパーパラメータの決め方が本当に正しいのか不安になったときの対処法
- 乱数を上手く使うとモデルがオーバーフィッティングしているかどうか確認できます
- 回帰モデル・クラス分類モデルの検証 (バリデーション) について考えていること
- 回帰分析やクラス分類における数理モデルの評価方法や評価指標の整理
- 回帰モデルを運用するまでの、モデルの評価方法の整理
- クロスバリデーション(交差検定)のとき、変数の標準化(オートスケーリング)はどうするか?
- モデルの予測精度は、目的変数Yの誤差だけでなくモデルの適用範囲を含めて議論しましょう
- r2やRMSE・MAEはもう古い!?回帰分析においてモデルを評価するための新しい指標を開発しました
- [Pythonコード付き] テストデータのMAEをトレーニングデータから推定する方法を開発したので紹介します [金子研論文]
- テストデータ・バリデーションデータ(モデル検証用データ)におけるモデルの精度が低いときのポジティブな側面
- モデルを運用することを想定して、モデルの設計をしましょう!
- 単体・化合物と実験条件・製造条件の両方が変わるデータセットの解析の仕方
- サンプルをグループごとにトレーニングデータとテストデータに分割する機能をDCEKitに搭載しました![v2.9.1]
- カーネル関数の選び方
- 異常検出(異常検知)モデルの性能はどのように評価するのか?
- 未来予測をするモデルを検証するときの注意点
モデルの適用範囲
- モデルを作るのにサンプル数はいくつ必要か?に対する回答~モデルの適用範囲・モデルの適用領域~
- モデルの適用範囲・モデルの適用領域 (Applicability Domain, AD) ~回帰モデル・クラス分類モデルを使うとき必須となる概念~
- モデルの適用範囲の広さを評価する方法
- 内挿・外挿は、モデルの適用範囲内・適用範囲外と違いますので注意が必要です
- 線形モデルだからといって非線形モデルより外挿性が高いわけではまったくありません
- Leverage、トレーニングデータにおける各サンプルのyに対する影響力を考える
- 守りの AD 攻めの BO (AD: モデルの適用範囲、BO: ベイズ最適化)
- モデルの適用範囲を広げるにはどうすればよいのか?
- モデルがどれくらい外挿できるか (モデルの適用範囲の外をどのくらい予測できる) の検証方法
- 本当に標準偏差(分散)が0の説明変数(記述子・特徴量)を削除してよいのか?
- k最近傍法(k-Nearest Neighbor, k-NN)でクラス分類・回帰分析・モデルの適用範囲(適用領域)の設定をしよう!
- One-Class Support Vector Machine (OCSVM) で外れ値・外れサンプルを検出したりデータ密度を推定したりしよう!
- ガウシアンカーネルを用いた SVR ではモデルの適用範囲を考慮しなくてよいの?!
- モデルの適用範囲はモデルを構築した特徴量 x で設定しよう!
- モデルの予測精度は、目的変数Yの誤差だけでなくモデルの適用範囲を含めて議論しましょう
- [デモのプログラムあり] Local Outlier Factor (LOF) によるデータ密度の推定・外れサンプル(外れ値)の検出・異常検出
- Xの変数を適切に非線形変換して線形の回帰モデルを作るとモデルの適用範囲・適用領域が広がるかも![検証結果とPythonプログラムあり]
- [Pythonコード付き] テストデータのMAEをトレーニングデータから推定する方法を開発したので紹介します [金子研論文]
- AD を設定すれば万事OK?
- モデルの適用範囲(Applicability Domain, AD)の検討の仕方
- モデルの適用範囲の手法やハイパーパラメータの選び方
- 転移学習におけるモデルの適用範囲
- 不均衡なデータセットを扱うときの注意点
モデルの解釈
- モデルの解釈に関する考え方・スタンス
- データ解析や機械学習でできる解釈は、あくまで「モデル」の解釈
- 回帰係数=寄与度とすることは危険、どうしても寄与度を求めたいときはPCRやPLSの1成分モデルで、ただ基本的には寄与度ではなく重要度で議論
- 機械学習モデルを大域的・局所的に解釈する方法
- モデルの解釈は教師なし学習、データの可視化やクラスタリングと同じ位置づけとして実施しましょう!
- 非線形モデルにおける特徴量の寄与の指標を有効に活用する方法
- 非線形モデルの解釈をしよう!~非線形モデルを各変数で偏微分~
- 全体的な変数重要度(特徴量重要度)と局所的な変数(特徴量)の寄与度の考え方の違いと使い分け
- 特徴量が多いときに特徴量重要度・変数重要度でモデルを解釈する方針
- 特徴量(変数)の重要度や目的変数の寄与はどのように検証するか
- 特徴量の重要度はモデルの予測精度が低い場合でも信用してよいのか?
- 重要度は高いと計算された特徴量が、ドメイン知識的には重要そうでないとき何が起きているのか?
- モデルの解釈の結果とドメイン知識(化学的背景・物理的背景等)とが合わないときはどうするか
モデルの逆解析
- 回帰モデル・クラス分類モデルの逆解析~目標のY(物性・活性など)を達成するためのX(説明変数・記述子・特徴量・パラメータ・入力変数)とは?~
- 機械学習モデルの逆解析の整理〜線形・非線形モデル、xの制約あり・なし、線形計画法、直接的逆解析、化学構造など
- モデルの逆解析は、モデルを用いたシミュレーションと考えよう
- モデルの逆解析をするときのチェックリスト
- モデルの精度が低いときも、モデルの逆解析ってやるべき?
- 予測値+モデルの適用範囲か、ベイズ最適化か、直接的逆解析か
- 目的変数の予測値だけでなく、説明変数の感度も設計のときに考慮する
- ランダムフォレスト(Random Forest, RF)や決定木(Decision Tree, DT)で構築したモデルを逆解析するときは気をつけよう!
- [Pythonコードあり] 教師あり混合ガウスモデル(Supervised Gaussian Mixture Models)で回帰分析も逆解析も自由自在に♪~Gaussian Mixture Regression(GMR)~
- 逆解析の結果で目的変数の予測値が大きく(小さく)ならないときに確認すること
- 部分的最小二乗回帰 (Partial Least Squares Regression, PLS) モデルの逆解析するときのちょっとしたメリット
- 材料設計の限界(モデルの逆解析の限界)は分かるのか?
- 材料開発の限界を検討するための機械学習からの情報
- モデルの使い方~モデルの逆解析と目的変数の評価~
- フィッティングの結果は何に使うのか?
- 目的変数が複数個あるときのモデルの逆解析、結局どのサンプルを選んだらよいの??
- 説明変数の上限・下限はデータ解析・機械学習では決まりません!決めるときは実験系・シミュレーション系で!
- [ダウンロード可能] 網羅的な組成データのcsvファイルを共有します!
- [Pythonコードあり] 既存のサンプルの分布に従うように、モデルの逆解析用のサンプルをたくさん生成する方法
- [Pythonコードあり] 特徴量ごとや特徴量間に制限があるときの、モデルの逆解析用のサンプル生成
- モデルを運用することを想定して、モデルの設計をしましょう!
- どうしてGMRやGTMRといったモデルの直接的逆解析法は良好な結果を生み出すのか?
- GMR と GA を用いた逆解析の結果の扱い方
- スペクトルデータや時系列データなど特徴量間の関係が強いデータのときは直接的逆解析しかありません!
- 直接的逆解析法では特徴量の制約、定性的な特徴量、転移学習も扱えます
- 目的変数が複数あるときの解析の方針の決め方
- 機械学習モデルの逆解析の評価は、実験(もしくはそれに代わるシミュレーション)でしかできません
- 分子・材料・プロセスの設計をするときに実験結果を説明変数に用いたいときはどうするか?
分子構造・化学構造の扱い、構造生成
- 化学構造・分子・化合物の扱いに関する基本的なこと
- 化合物における三次元の化学構造の扱い、構造最適化計算のメリット・デメリット
- 化学構造・分子構造を対象にしたデータ解析・機械学習をするときの二次元構造や三次元構造の考え方
- 低分子有機化合物の分子構造・化学構造の生成の方針・分類
- RDKit をインストールできなかったり import できなかったりしたときの対処法まとめ (Anaconda ユーザー向け)
- 誘導体の化学構造を自動生成するプログラムを作りました。ご自由にお使いください
- Structure Generator based on R-Group (SGRG) を使って何ができますか?
- メインの骨格を適当に変えたり、側鎖を適当に変えたりして、新たな化学構造を生成するPython プログラムを公開します
- 物性や活性の推定値が大きくなるように、メインの骨格と側鎖を遺伝的アルゴリズムで最適化して、新たな化学構造を生成するPythonプログラムを公開します
- [Pythonコードあり] ベイズ最適化で所望の物性や活性となる確率の高い化学構造を生成する (物性・活性が2つ以上でもOK)
- [Pythonコードあり] GTMR(Generative Topographic Mapping Regression)でデータの可視化・回帰分析・モデルの適用範囲・モデルの逆解析・化学構造生成をいっぺんにやってしまいます! (物性・活性が2つ以上でもOK)
- [高分子設計]モノマーの構造から二量体・三量体・・・を生成するPythonプログラムを作りましたのでぜひご活用ください
- SELFIESに基づいてシンプルに新規な化学構造を生成するPythonコードをDCEKitに公開します!
- フィンガープリントと類似度指標に基づく分子構造の数値化
- 分子構造・化学構造をどこまで詳細に考慮するか?
- 分子構造・化学構造のデータセットで構築された機械学習モデルを解釈する2つの方向性
実験計画法・適応的実験計画法・ベイズ最適化
- 実験計画法の概要~データを上手く使って実験のコスパを上げましょう!~
- 同じ実験条件で繰り返し行ったときの平均値を目的変数とすべきか
- 実験計画法で実験パラメータの候補を選択する (直交表を作成する) プログラムを公開します
- タグチメソッドにおける実験計画法とベイズ最適化をはじめとする適応的実験計画法における実験計画法の違いと優位点
- 離散的な実験条件がある際の実験計画法
- 実験計画法における特徴量の標準化(オートスケーリング)
- ドメイン知識を活用して最初の実験条件やシミュレーション条件の候補を決める
- 同じ実験条件で繰り返し実験するのは、最後だけでよいのでは?~(適応的)実験計画法のススメ~
- 実験計画法・適応的実験計画法における特徴量選択とモデルの適用範囲
- 既存のデータセットがある場合に実験計画法で今後の実験条件を求める方法
- 既存のデータがある時に次の実験条件をどう決めるか~実験計画法で決めるかモデルを作ってしまうか
- ベイズ最適化(Bayesian Optimization, BO)
- 原理的に0以下にならない目的変数の値を、小さくしたいときのベイズ最適化
- 目的変数が複数のときに実験計画法のベイズ最適化(Bayesian Optimization, BO)が対応!
- ベイズ最適化で複数の目的変数がある場合の対応[Probability of Improvement(PI)以外]
- ベイズ最適化で期待できること
- ベイズ最適化において一度に複数の実験をするときに候補を選択するシンプルな方法
- ベイズ最適化でばらつきのある複数のサンプルを選択する
- ベイズ最適化と遺伝的アルゴリズム(などの組合せ最適化アルゴリズム)の本質的な違いとは?
- ベイズ最適化において、どの獲得関数を使えばよいのか?
- ベイズ最適化は、予測値と実測値を合わせようとはしていない
- ベイズ最適化のときカーネル関数に線形項を入れると外挿の方向を定めやすい
- ベイズ最適化と遺伝的アルゴリズムは組み合わせよう!
- 目的変数にカテゴリ変数を含む際のベイズ最適化
- 特徴量(変数)が多いときもベイズ最適化でOK?分子記述子のときも?
- 適応的実験計画法を進めるときに、モデル構築手法やカーネル関数や特徴量セットはどうするか?
- 回帰分析手法やクラス分類手法のハイパーパラメータをベイズ最適化で高速に最適化する
- 実験計画法で実験条件を決めることの意義
- (適応的)実験計画法において潜在的な実験候補数が非常に膨大な時にはどうすれば良いか
- すべてを機械学習でやらなくてもよいです!
最適化
- 最尤推定・最尤法~与えられたデータから確率分布のパラメータを推定する~
- ニュートン法(ニュートン・ラフソン法)~f(x)=0の解を数値的に求める~
- 強化学習、ベイズ最適化、メタヒューリスティックな最適化アルゴリズム(遺伝的アルゴリズムなど)の使い分け
- 遺伝的アルゴリズムなどのメタヒューリスティクス(最適化アルゴリズム)の特徴や使用する際の注意点
- 最適化アルゴリズムで何回か計算した時の、結果の選び方
時系列データ解析 (ソフトセンサーなど)
- ソフトセンサーの4つの役割
- 時系列データを扱うときの3つの注意点(ソフトセンサー解析など)[データ解析用のPythonプログラム付き]
- ソフトセンサーにしてほしいことと実際にできること
- 製造・プロセスデータ(時系列データ)でソフトセンサーを検討するときのポイント
- プロセスインフォマティックスで時系列データをどのように扱うか?
- サンプルごとに時間の異なる時系列データを特徴量とする時の4つの対処法
- 適応型ソフトセンサーで産業プラントにおけるプロセス状態等の変化に対応する (Adaptive Soft Sensor)
- 適応型ソフトセンサーを検証できる Python コードを作りましたので、ぜひご自身のデータセットでお試しください
- 適応型ソフトセンサーと変数選択(特徴量選択)と時間遅れの全てをどう考慮するか
- バッチプロセス的な時系列データの特徴量化
- バッチプロセスの終点予測やバッチプロファイルの設計
- Locally-Weighted Partial Least Squares (LWPLS, 局所PLS) ~あのPLSが非線形性に対応!~ [Python・MATLABコードあり]
- Ensemble Online Support Vector Regression (EOSVR) ~Moving Window 型の非線形適応型ソフトセンサー~
- 時系列データにおけるモデル適用範囲
- リザバーコピューティングの本質とは
異常検出・異常診断
- 異常検出・異常検知の4つの役割
- T2統計量・Q統計量~異常値を検出したり、モデルの適用範囲・適用領域(AD)を設定したり~
- k最近傍法(k-Nearest Neighbor, k-NN)でクラス分類・回帰分析・モデルの適用範囲(適用領域)の設定をしよう!
- One-Class Support Vector Machine (OCSVM) で外れ値・外れサンプルを検出したりデータ密度を推定したりしよう!
- [デモのプログラムあり] Local Outlier Factor (LOF) によるデータ密度の推定・外れサンプル(外れ値)の検出・異常検出
- 異常検出(異常検知)モデルの性能はどのように評価するのか?
距離・類似度
- このデータセットにはどの距離を用いればよいの??~ユークリッド距離・マンハッタン距離・チェビシェフ距離・マハラノビス距離~
- カーネル関数って結局なんなの?→サンプル間の類似度と理解するのがよいと思います!
- 結局、「次元の呪い」は何が問題なのか?解決方法は?
データベース
- データセット作成のときに注意する6つのこと
- データ解析・機械学習のしやすいデータセットの作り方
- サンプルを集めるときに意識するとよいこと [データベース作成]
- モデルを作るのにサンプル数はいくつ必要か?に対する回答~モデルの適用範囲・モデルの適用領域~
- データセットを扱うときはサンプル一つ一つに気を配ることが重要です!
プログラミング
- 機械学習を試したい方へ、プログラミング不要で実行できるアプリ「DCE tool」を作りました。ご自由にお使いください
- データ解析・機械学習をはじめたいとき、市販のソフトウェアを使うのがよいか、プログラミングを勉強するのがよいか、それぞれのメリット・デメリットを考える
- プログラミング課題(模範解答付き)
- 新たなプログラムを作成する流れ~言語化が一番大事~
- MATLAB に慣れた人が Python を始めるときの11の注意点
- [実績あり] 機械学習・データ解析・Pythonに関する10時間のハンズオンセミナー(体験学習)でどのくらいのことができるようになるのか?
- プログラミングのボトルネックは、プログラミングではないところにあり!
- [無料公開] 「化学のための Pythonによるデータ解析・機械学習入門」 の “はじめに” と目次の詳細
- プログラミング未経験者のためのデータ解析・機械学習、連載スタート!
- プログラミングを始めるときに入門書を使うべきか、使わないべきか
- Python の環境の準備とspyderやjupyter notebookの起動まで(Windows編とmacOS編)
- Anaconda のインストールから jupyter notebook の起動まで (Windows編とmacOS編)
- Anacondaを使わずにPythonでデータ解析・機械学習する方法
失敗例
共同研究
- みなさまの共同研究のおかげさまで、金子研の学生たちが成長できます。どうもありがとうございます
- 共同研究に対する金子研のスタンス~学生の関わりなど~
- どうしてデータ化学工学研究室(金子研究室)に共同研究の相談がたくさんくるのか?
- 金子研の研究、特に共同研究で難しいのは、データの収集の仕方・データの前処理・特徴量設計・モデルの逆解析・化学構造生成の5つです!
- 共同研究関係の対外発表(学会発表・論文発表)をするとき、金子研ではどうしているのか?
その他
- データ解析・機械学習の始めから研究を進めるまでの道標
- 特徴量間の関係をすべて考慮してモデリングしたいならGMM
- 機械学習の教師なし学習だけでは、知識は得られません!
- 事実と解釈を分けて考える (モデルの解釈の話ではありません)
- 手法や手段を目的化しないように気をつけましょう!~データ解析・機械学習が目的ではありません~
- 専門家ほど専門用語を使わない~専門用語に頼らず中級者から上級者への道を進む~
- 機能的なモノと意味があるモノ~MLR, SOMはオワコン?~
- データサイエンティストと実験科学者の協働や、実験科学者がデータサイエンティストになることのメリット
- (ノート)パソコンの選び方~金子研で購入するときにチェックする7つの項目~
- すでに100万サンプル超え!?金子研ではこれまでどのようなデータセットを扱ってきたのか
- 仕組みで解決する、人が解決する
- バーチャル(virtual)についてあまり知られていない意味を説明することで、機械学習関係に対する信用度が上がるきっかけにならないかと淡い期待をよせる
- 意識と無意識、形式知と暗黙知、言語と非言語~データ解析・機械学習におけるヒヨコのオスメスを見分け方をすべて言語化できるか?~