JASPを用いた機械学習

回帰分析と判別分析の実践
講師:木村 朗

1. JASPにおける機械学習の概要

JASPの機械学習モジュール

JASPは統計解析だけでなく、基本的な機械学習機能も提供しています。「Machine Learning」モジュールは以下の分析を可能にします:

  • 回帰分析(Regression):連続値を予測するためのモデル
  • 分類(Classification):カテゴリ値(クラス)を予測するためのモデル
  • クラスタリング(Clustering):データポイントをグループ化するための手法

これらのモデルは、従来の統計手法よりも柔軟で、複雑なパターンの検出や予測に適しています。

機械学習モジュールの有効化

JASPのバージョンによっては、機械学習モジュールは標準でインストールされていないことがあります。モジュールを有効化するには:

  1. JASPを起動
  2. 「Modules」→「Module Library」を選択
  3. 「Machine Learning」モジュールを探して「Install」をクリック
  4. JASPを再起動すると、上部メニューに「Machine Learning」が追加されます
JASPでの機械学習モジュールの有効化

基本的な機械学習ワークフロー

JASPでの機械学習分析の基本的なワークフローは以下の通りです:

  1. データの読み込みと前処理:データファイルを読み込み、変数の型を設定
  2. 探索的データ分析:記述統計や相関分析で基本的な関係を把握
  3. 機械学習モデルの選択:適切なアルゴリズムを選択
  4. データ分割:訓練データとテストデータに分割
  5. モデルの学習と評価:選択したアルゴリズムを適用し、性能を評価
  6. モデルのチューニング:パラメータを調整して性能を向上
  7. 最終モデルの評価と解釈:テストデータでの性能確認と結果の解釈

2. 回帰分析のための機械学習

JASPで利用可能な回帰モデル

JASPの「Machine Learning」→「Regression」メニューでは、以下の回帰モデルが利用可能です:

モデル 特徴 適用例
Linear Regression
(線形回帰)
単純な線形関係を仮定、解釈が容易 医療費予測、薬物投与量と効果の関係
K-Nearest Neighbor
(K近傍法)
類似データの平均値を予測に使用 欠損値の補完、異常値の検出
Random Forest
(ランダムフォレスト)
複数の決定木による予測、高精度 複雑な医療データからの予後予測
Boosting
(ブースティング)
逐次的に弱学習器を改善 精度が重要な医療診断支援
Regularized Linear
(正則化線形回帰)
過学習を防ぐ制約付き線形モデル 変数が多い遺伝子発現データ分析

サンプルデータ:高血圧患者の治療効果予測

以下のデータは、高血圧患者に対する新薬の効果を示しています。目的変数は「血圧低下量」(mmHg)です。

患者ID 年齢 性別
(0=女性,1=男性)
BMI 喫煙
(0=無,1=有)
初期収縮期血圧 血圧低下量
1 45 0 22.5 0 155 15
2 62 1 26.3 1 168 12
3 53 0 24.1 0 160 18
4 58 1 28.7 1 175 10
5 50 0 23.8 0 158 16

このデータを用いて患者の特性から血圧低下量を予測するモデルを構築します。

JASPでの回帰モデル構築手順

1 データの準備と変数設定

  1. JASPを起動し、CSVファイルを読み込みます。
  2. 各変数の型を設定します:
    • 連続変数(年齢、BMI、初期収縮期血圧、血圧低下量):「Scale」
    • カテゴリ変数(性別、喫煙):「Nominal」
  3. 「Descriptives」→「Descriptive Statistics」で基本統計量を確認します。
JASPでのデータ読み込みと変数設定

2 ランダムフォレスト回帰モデルの構築

  1. 「Machine Learning」→「Regression」→「Random Forest」を選択します。
  2. 以下の設定を行います:
    • Targets:「血圧低下量」(予測したい目的変数)
    • Features:すべての説明変数(「年齢」「性別」「BMI」「喫煙」「初期収縮期血圧」)
JASPでのランダムフォレスト設定画面

3 データ分割とモデルパラメータの設定

  1. 「Holdout Sample」タブをクリックします。
  2. 「Split sample into training and test set」にチェックを入れます。
  3. 「Training set proportion」で訓練データの割合を設定します(例:0.8)。
  4. 「Model Parameters」タブをクリックし、以下のパラメータを設定します:
    • Number of trees:500(森の中の決定木の数)
    • Number of features per split:2(各分岐で考慮する変数の数)
    • Minimum node size:5(ノードの最小サイズ)
JASPでのデータ分割とモデルパラメータ設定

4 モデル評価の設定

  1. 「Model Evaluation」タブをクリックします。
  2. 以下の評価指標にチェックを入れます:
    • 「R²」:決定係数
    • 「MSE」:平均二乗誤差
    • 「MAE」:平均絶対誤差
    • 「RMSE」:平均二乗誤差の平方根
  3. 「Performance Metrics」タブをクリックし、以下の可視化オプションを選択します:
    • 「Scatter plot of predicted and observed values」
    • 「Feature Importance plot」
JASPでのモデル評価設定

5 結果の確認と解釈

性能指標

回帰モデルの性能指標

訓練データとテストデータでの性能指標を比較し、モデルの過学習をチェックします。テストデータでのR²が0.7前後であれば、良好なモデルと言えます。

予測値と実測値の散布図

予測値と実測値の散布図

点が対角線(45度線)に近いほど、予測精度が高いことを示しています。

特徴量重要度

特徴量重要度のプロット

どの説明変数がモデルの予測に重要かを示しています。例えば、「初期収縮期血圧」や「BMI」が重要度が高いとわかります。

6 複数のモデルの比較

同じデータセットに対して、線形回帰やK近傍法なども適用し、結果を比較することで最適なモデルを選択できます。

複数モデルの比較結果

例えば、ランダムフォレストがR²=0.75、線形回帰がR²=0.68、K近傍法がR²=0.72といった結果になった場合、ランダムフォレストが最も優れていると判断できます。

3. 判別分析のための機械学習

JASPで利用可能な分類モデル

JASPの「Machine Learning」→「Classification」メニューでは、以下の分類モデルが利用可能です:

モデル 特徴 適用例
Logistic Regression
(ロジスティック回帰)
確率を用いたシンプルな線形分類器 疾患リスク評価、転帰予測
Decision Tree
(決定木)
ツリー構造による直感的な分類 診断サポート、階層的な判断基準
Random Forest
(ランダムフォレスト)
複数の決定木による高精度な分類 複雑な症例の分類、高精度が必要な診断
Boosting
(ブースティング)
逐次的に弱分類器を改善 不均衡データの分類(希少疾患など)
Linear Discriminant
(線形判別分析)
クラス間の分散を最大化 バイオマーカーによる疾患分類
Naive Bayes
(ナイーブベイズ)
条件付き確率に基づくシンプルなモデル テキスト分類、症状からの疾患予測

サンプルデータ:心臓病リスクの予測

以下のデータは、患者の特性と心臓病の有無を示しています。目的変数は「心臓病」(0=なし、1=あり)です。

患者ID 年齢 性別
(0=女性,1=男性)
胸痛タイプ
(1-4)
安静時血圧 コレステロール 空腹時血糖
(0=正常,1=高)
心電図結果
(0-2)
最大心拍数 心臓病
(0=なし,1=あり)
1 63 1 3 145 233 1 0 150 1
2 37 1 2 130 250 0 1 187 0
3 41 0 1 130 204 0 0 172 0
4 56 1 1 120 236 0 1 178 0
5 57 0 4 140 241 0 1 123 1

このデータを用いて患者の特性から心臓病のリスクを予測するモデルを構築します。

JASPでの分類モデル構築手順

1 データの準備と変数設定

  1. JASPを起動し、CSVファイルを読み込みます。
  2. 各変数の型を設定します:
    • 連続変数(年齢、安静時血圧、コレステロール、最大心拍数):「Scale」
    • カテゴリ変数(性別、胸痛タイプ、空腹時血糖、心電図結果、心臓病):「Nominal」
  3. 目的変数「心臓病」が0と1で表されていることを確認します。
JASPでのデータ読み込みと変数設定

2 ランダムフォレスト分類モデルの構築

  1. 「Machine Learning」→「Classification」→「Random Forest」を選択します。
  2. 以下の設定を行います:
    • Target:「心臓病」(予測したいクラス)
    • Features:すべての説明変数(「年齢」「性別」「胸痛タイプ」「安静時血圧」「コレステロール」「空腹時血糖」「心電図結果」「最大心拍数」)
JASPでのランダムフォレスト分類設定画面

3 データ分割とモデルパラメータの設定

  1. 「Holdout Sample」タブをクリックします。