「スケートボードトリック分類チャレンジ」生成AIに聞きながらチャレンジしました

# はじめに

[SIGNATE](https://signate.jp/) のデータ分析コンペ 『[スケートボードトリック分類チャレンジ](https://signate.jp/competitions/1429) 』(**注:SIGNATEにログインしてない方はこのリンクにアクセスできません。**)に参加しました。
SIGNATE事務局から、『*本コンペティションでは、フォーラム外でのweb記事等による知見共有を歓迎しております。*』とのコメントを頂きましたので、私のスコアは伸びませんでしたが、そのチャレンジを、Web記事に投稿します。

# データ分析コンペの概要
ざっくり言うと、『**スケートボーダーの脳波信号を分析して、次に行うトリック（どんなジャンプをするか？）を予測する**』というようなデータ分析です。
![aITsCPzAf8dw1RJtyJQkg3M9oM3pfnHHqOLamrzk.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570565/9dba0d55-5c38-d377-7181-0ab41b753700.png)

トリックの種類は、Backsidekickturn、Frontsidekickturn、pumping の３種類です。
このデータ分析コンペの特徴として、データ①とデータ②があり、どちらも分析をして、トリック分類する必要がある、ということです。
データ①：前処理（データクレンジング）してない生の生体信号
データ②：前処理（データクレンジング）した後の信号
私は、このデータ①とデータ②の対応に苦戦しました。

# 前処理（データクレンジング）
通常、前処理（データクレンジング）の目的は、分析精度を良くするためなのですが、なぜか、データ①の精度＞データ②の精度 になってしまいました。
私ばかりか、他のコンペティターもそうでしたので、『データ②のクレンジング処理や、ラベリング等に間違いはないでしょうか？』と事務局に質問したところ、『意図通りです。なぜ、そのような結果になるのかは、分析レポートで出して頂ければ幸いです。』という回答を頂きました。
分析コンペの説明ページには、[Shredding artifacts: extracting brain activity in EEG from extreme artifacts during skateboarding using ASR and ICA](https://www.frontiersin.org/journals/neuroergonomics/articles/10.3389/fnrgo.2024.1358660/full) のリンクが張り付けられていたので、これを熟読する必要があるようです。

# 私の質問
これは困ったなと思い、生成AIに聞いてみることにしました。

『この論文を要約してください。』

# 生成AIの回答
この論文は、スケートボード中の脳活動を記録するために、EEG（脳波）データからアーティファクト（ノイズ）を除去する方法について研究しています。具体的には、Artifact Subspace Reconstruction (ASR) と Independent Component Analysis (ICA) という2つの高度な信号処理技術を使用して、スケートボード中に発生する大きなアーティファクトを除去し、脳活動を抽出することを目指しています。

##### 研究の概要
* 目的: 自然な環境下での脳機能を理解するために、ノイズの多い環境での脳活動データを取得すること。
* 方法: スケートボード中と休憩中に被験者に聴覚刺激を与え、EEGデータを収集。ASRとICAを用いてアーティファクトを除去し、サポートベクターマシンを使用して単一試行のEEGデータから音刺激の有無を分類。
* 結果: ASRとICAを組み合わせた方法（ASRICA）が、他の方法よりも優れたアーティファクト除去性能を示し、特にスケートボード中のデータで顕著な効果を発揮。

##### 結論
この研究は、ASRICAが物理的に要求の高いタスク中の脳活動を効果的に記録できることを示しており、将来的な複雑な身体運動に関する神経プロセスの研究の基礎を築くものです。

# 私の質問（２回目）
なるほど、この論文では、**顕著な効果を発揮** したのか、と思い、だけど、今私が相手にしている分析では逆の結果なので、また、聞いてみました。

『これと同じデータクレンジングをしたデータ分析をしているのですが、前処理してないほうが精度がよいです。考えられる要因や、調査すべき項目を教えてください。』

# 生成AIの回答（２回目）
データクレンジング後の精度が低下する場合、いくつかの要因が考えられます。以下の点を調査してみてください：

##### 1. 過剰なアーティファクト除去
* 原因: 過剰なフィルタリングやアーティファクト除去により、重要な信号成分も除去されてしまうことがあります。
* 対策: フィルタリングのパラメータを調整し、必要最低限のアーティファクト除去に留める。

##### 2. 不適切なフィルタリング設定
* 原因: フィルタリングのカットオフ周波数やその他の設定が適切でない場合、信号の歪みが生じることがあります。
* 対策: フィルタの設定を再確認し、データの特性に合った設定に調整する。

##### 3. データの多様性の欠如
* 原因: クレンジング後のデータが均一化されすぎて、モデルが多様なパターンを学習できなくなることがあります。
* 対策: データの多様性を保つために、クレンジングの方法を見直す。

##### 4. モデルの過学習
* 原因: クレンジング後のデータが過度に単純化され、モデルが過学習する可能性があります。
* 対策: モデルの正則化を強化し、過学習を防ぐ。

##### 5. クレンジング手法の適合性
* 原因: 使用しているクレンジング手法がデータの特性に適していない可能性があります。
* 対策: 他のクレンジング手法を試し、データに最も適した方法を見つける。

これらの点を確認し、必要に応じて調整を行うことで、データクレンジング後の精度を改善できるかもしれません。

# 生成AIの回答（２回目）に対する私の考え
５個教えてもらった対策のうち、４個はクレンジング方法の見直し（過剰な/不適切なフィルタリングなど）で、１個だけクレンジング後のデータに対する過学習対策でした。
しかし、既に、事務局からは、『意図通りのクレンジングができている』ような回答が得られていましたので、クレンジング方法の見直しはできないのです。
また、残された唯一の対策『過学習』についても、データ①（クレンジングなし）の時点で過学習の傾向がでていました。
データ①で100エポック学習したときの訓練性能(train）と汎化性能(test）を下図に示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570565/88689b5f-6175-a479-105b-087bea914762.png)
この結果から、訓練性能は100%近くなるのに、汎化性能は80%前後をウロウロしている状態でしたので、10エポックで学習を終了するようにしていました。
なので、生成AIに教えてもらった５個の対策は、一つも実施することができませんでした。
が、ICAについていろいろ調べていると、ICAは、観測された混合信号から、独立した元の信号を抽出するので、脳活動とアーティファクトを分離することができる、ことがわかりました。
そこで、３回目の質問をしました。

# 私の質問（３回目）

『ICAで抽出した信号を、脳活動とアーティファクトに区別できますか？アーティファクトはデータ分析には使用せず、脳活動のみを使用したら、精度改善できませんか？』

# 生成AIの回答（３回目）

ICAで抽出した信号を脳活動とアーティファクトに区別するためには、以下の方法が一般的に使用されます：

##### 1. 視覚的検査
* 方法: ICAで分離された成分をプロットし、視覚的にアーティファクトを識別します。例えば、瞬きや筋肉活動によるアーティファクトは特定のパターンを示します。
* 利点: 経験豊富な研究者が視覚的に確認することで、正確にアーティファクトを特定できます。

##### 2. 自動分類アルゴリズム
* 方法: 機械学習アルゴリズムを使用して、ICA成分を脳活動とアーティファクトに自動的に分類します。これには、事前にラベル付けされたデータセットが必要です。
* 利点: 大量のデータを効率的に処理でき、主観的な判断を排除できます。

##### アーティファクトを除去したデータの使用
アーティファクトを除去した脳活動のみを使用することで、データ分析の精度が改善する可能性があります。ただし、以下の点に注意が必要です：

* 信号の損失: アーティファクト除去の過程で、重要な脳活動の成分も一緒に除去されてしまうリスクがあります。
* データの多様性: アーティファクトを除去しすぎると、データの多様性が失われ、モデルの汎化性能が低下する可能性があります。

##### 改善のための提案
* 慎重なアーティファクト除去: 過剰な除去を避け、必要最低限のアーティファクト除去に留める。
* 複数の手法の併用: ASRとICAなど、複数のアーティファクト除去手法を組み合わせて使用する。
* モデルの調整: アーティファクト除去後のデータに対して、モデルのハイパーパラメータを調整し、最適化する。

これらの方法を試してみることで、データ分析の精度が向上するかもしれません。

# 生成AIの回答（３回目）に対する私の考え
２個教えてもらいましたが、１個は**経験豊富な研究者**、１個は**事前にラベル付けされたデータセット**が必要なので、これも対策できませんでした。

# ステップワイズ法
しかたがないので、最後の望みをかけて、ステップワイズ法で特徴量選択し、アーティファクト除去してみようかと思いました。
参考までに、『ステップワイズ法とは？』と生成AIに聞いてみました。

# 生成AIの回答（ステップワイズ法）

ステップワイズ法は、回帰分析や機械学習モデルの構築時に、説明変数（独立変数）を自動的に選択するための方法です。以下に、ステップワイズ法の概要とその種類について説明します。

##### ステップワイズ法の概要
ステップワイズ法は、説明変数の中から目的変数（従属変数）に最も関連する変数を選び出すプロセスです。これにより、モデルの精度を高めるとともに、不要な変数を排除してモデルのシンプルさを保ちます。

##### ステップワイズ法の種類
* 1.変数増加法（Forward Selection）:
  *  方法: 最初に変数を持たない空のモデルから始め、最も関連性の高い変数を1つずつ追加していきます。
  *  利点: モデルが徐々に複雑になるため、過剰適合のリスクを減らせます。

* 2.変数減少法（Backward Elimination）:
  *  方法: 全ての説明変数を含むモデルから始め、最も関連性の低い変数を1つずつ除去していきます。
  *  利点: 最初から全ての変数を考慮するため、重要な変数を見逃すリスクが少ないです。

* 3.変数増減法（Stepwise Selection）:
  *  方法: 変数増加法と変数減少法を組み合わせた方法で、変数を追加しつつ、不要な変数を除去します。
  *  利点: 柔軟性が高く、最適なモデルを見つけやすいです。

##### ステップワイズ法のメリットとデメリット
* メリット:
  *  自動化: 変数選択が自動で行われるため、手間が省けます。
  *  モデルの精度向上: 不要な変数を排除することで、モデルの精度が向上します。
* デメリット:
  *  計算コスト: 変数の追加・除去を繰り返すため、計算コストが高くなることがあります。
  *  過剰適合のリスク: データに依存しすぎると、過剰適合のリスクが高まります。

##### まとめ
ステップワイズ法は、説明変数を自動的に選択する便利な方法ですが、適用する際にはそのメリットとデメリットを理解し、慎重に使用することが重要です。

# ステップワイズ法の結果
生成AIのおっしゃる通り、『**計算コスト: 変数の追加・除去を繰り返すため、計算コストが高くなることがあります。**』
いろいろ試していたら、時間切れとなってしまいました。

# 最後に
このデータ分析コンペの賞金 **1位 ¥1,000,000** なので、それを目指して寝る間も惜しんでチャレンジしましたが、やはり、生成AI頼みでは厳しいですね。
生成AIも言っていた通り、**経験豊富な研究者が視覚的に確認** が大事なのだと思いました。データサイエンティストって、ほんと、地味で忍耐強くないと、ですね。
たまにウソをついてしまう生成AIでも、本質をついた回答をすることもあるんだなぁと感心しました。