
AI2nd day16 総合実践その2
day15(総合実践その1) Q&A
・chatgptで堂々巡りになってしまう

→chatgptはあくまでも、入力した文字列に対して最も関連性の高い文字列を出力するという仕組み。ゆえに出力が不十分ということは、入力も不十分ということ。
対応としては、人間側の理解度を上げて「より本質的な問題点、聞きたい部分」をプロンプトとして書き出せるようにすること。つまり入力をブラッシュアップすることに注力する。
その意味では、chatgptは「答えを出させる/解決するためのツール」ではなく「人間が効率よく学ぶためのツール」である。
具体的には、「こういうエラーが出ているのだけど、理解できないので、上手く説明してください」や「何を調べたらいいですか」などを聞いてみる。
あと有効なのは、chatgptの課金プラン。(2025/2/17時点で)200ドル/月の最上位モデルでは、プロンプトの入力が不十分な時に、
「こういうことを調べてみたら?」とか「こういうやり方もあるから、別の方法でやってみたら?」ということも提示してアシストしてくれる。そのため堂々巡りになりにくい。
・エラーが解決できない、、

→
デジタルの強みは「小さく試して、その結果を観察できる」こと。そしてそのコストは、人件費よりも小さい。このため、入力を少し変えてみてその結果(出力)がどうなるかを、膨大に回すことができる。
次につながるための「いい失敗」をするためには、少なくとも今何をやろうとしていて、どこまでできていて、どこがうまくいかないところなのか? を理解して、それらを言語化できる必要がある。
ただひたすら「やって」だけをchatgptに入力していると、知的負債が溜まっていく。なのでとにかく言語化!!
イーロンマスクは、この「小さく試して、その結果を観察できる」が非常に上手い。X(旧twitter)をイーロンマスクが買収した当初も、twitterでは色々な機能が実装されては消えたり、といったことがあった。
day16 本編
前回作った予測結果を解釈する
前回行っていたgoogle colaboratoryでのグラフ作成は、探索的データ分析(EDA)である。データの傾向を読み解き、戦略を立てる。
auto MLで得られた予測結果一覧の解釈について、chatgptに聞いてみる。
→「窃盗が起こらないことの予測は正しいが、窃盗が起こることの予測は精度が低い、ほぼ当てられていない」という出力結果。
つまり、「窃盗あり」のデータ数が非常に少なく、だったら全部「窃盗なし」で予測をしておけばいいだろう、というのが今回得られた予測モデルの内容。これは実用的ではない、、
・いずくね先生の観点:リサンプリング
「窃盗あり」と「窃盗なし」のデータ数を1:2程度に抽出しておけば、上記のような思考にはならず、予測精度は上がるはず。
・ポイント
予測結果の自体の正しさというよりは、使う用途に対して適切かどうか?が重要。今回のゴールは「時間経過の中で、1=窃盗事件が起こる ときのタイミングをドンピシャで予測する」ということ。予測モデルの精度という数字自体が高くてもこのゴールを達成できないならば、それは欲しいものではない。
前回auto MLに投げたデータは時間、日付のみだったが、下記のように地域ごとのデータを加えることで、地域ごとのデータを予測でき、また地図上に反映させることも可能。

一発で上手くいくように持っていくのではなく、(先述のように)小さくtryして繰り返しながらやっていくのが重要。chatgptに正しい結果を出力させるのではなく、可能性が高くて次の戦略が立てられるような妥当性の高いものを出させて、人間がそれをtryしてみる。その繰り返し。
auto MLの「時系列識別子の自動検出」でregionにチェックを入れると、regionで自動的に振り分けてくれる。
自動MLのタスク設定画面において、「時系列識別子」の列選択から、
regionなどを設定できる。

・時系列識別子とは:
Azure Machine Learning(Azure ML)における「時系列識別子の判別」は、時系列データを正しく扱うために、どの列が「時間」や「シーケンス」を示しているのかを指定することを指します。
時系列データは、時間の経過に伴うデータの変化を扱うためのもので、次のような特徴があります:
データの順序が重要(例:2023年1月 → 2023年2月 → 2023年3月)
過去のデータが未来に影響を与える(例:売上予測や在庫管理)
Azure MLでこの順序を理解させるために、どの列が「時間」や「ID(グループ分け)」を表しているかを指定する必要があります。これが時系列識別子です。

さらに追加設定で、「国または地域の祝日」から日本の祝日を反映させることができる。

実際にデータを変えて再度tryしてみる
chatgptと壁打ちをしながら、MLに投げるためのデータを再構築していく。
データ設計が決まっておらず、1から再構築する場合のプロンプト例は、以下。
まだ明確な方針(どのようなデータ設計にしたいのか)が定まっていない状況なので、情報をたくさん入力しているところがミソ。
愛媛県警察の出している自転車窃盗のデータがあります。
この窃盗データをもとに、「明日どのエリアでどのくらい、窃盗のリスクがあるのか」というのを予測することをやりたいです。そのためにMicrosoftのAutoMLを使って時系列予測を行います。
試しに日付、1時間ごとの時間帯設定が発生したかどうか、それから休日や祝日かどうかだけで予測を回してみたのですが、窃盗が発生しないことも予測は高い精度で出たものの、窃盗が起こるということへの予測は精度が出ないと言う状況でした。
そこで今度は項目名としてとして1日単位の日付、それからどのエリアで起こったことなのかと言う情報、それから曜日のデータを何曜日なのか、それからその日の天気と言う形で入れてみることで、窃盗が発生しない0のデータを減らし(1回目の失敗を生かした修正点)、それから特徴量としての情報も増やしていけるのではないかと考えました。
先ほどは分類モデルを分類のやり方で0か1かというのをやったんですけれども、今度は複数のエリアに対する時系列の予測で快適的に値が何件発生するのか、その日そのエリアで何件発生するのかを取りたいと言う感じでやろうと思ってます。
そのためのデータの変換をGoogleコラボを使ってやろうと思っています。元のダウンロードしてきた状態のデータを下に貼るので、やるべきことの細かいステップと具体的なやり方の解説を書いて、これからの進め方をまとめてください。
一方で、データ設計が決まっている場合のプロンプト例は、以下。
上記と比べ、データ設計が定まっているので、簡潔。
Auto MLに入れたいデータの形がこのようなイメージですので、プログラムを作る際はこれを参考にして、コピペできる形で出してください。
date region(y) week weather
2017/8/1 今治市 3 2 晴れ
2017/8/1 松山市 1 2 晴れ
2017/8/1 新居浜市 0 2 晴れ
こうして得られた、再構築済みのデータをauto MLに投げる。
処理方法は、時系列予測を選択。

これによって予測モデルの結果が得られたら、chatgptへ以下のプロンプトを投げる。
これによって、機械学習モデルがAuto MLでできました。
一番優秀なモデルの情報を以下に記載しますので、これを使って翌日のエリアごとの窃盗発生数を予測するということをGoogle Colabで行うプログラムを書いてください。
〜〜〜(以下モデルの情報)〜〜〜
これでGoogle colabでちゃんと動くプログラムを作ることができたら、今度はデータパイプラインでデータ収集の自動化に進めば良い。
こうしてモデルが得られて、1回目よりは少し精度が上がった。
次にやることとしては、例えば窃盗データと転記データを5年分に増やしてみる、時系列分析以外を試すなど。
・壁打ちのポイント
禁忌(cloud破産、無限ループ地獄)に気をつけてさえいれば、後の試行錯誤については慣れていく
・カンパ先生のアドバイス AI2nd全体を通して
やりたいことは、意思決定の支援。
意思決定の繰り返しである仕事の中で、どこの意思決定を支援するのか。その把握のためにはスイムレーン図を用いたり、インタビューするなり。
その支援の中で、人間の意思決定の要素となるもの、関係していそうなデータを集めて、AIを用いる。(まずはauto ML)
戦略を立てるために、chatgptを用いる。
・プロトタイプ作成前後の一般的な流れ
Azure MLで予測モデルを作る。その後パイプラインを作るのが基本線。
(今回であれば)天気情報を持ってくることなどを自動化するツールが、パイプライン。
ただ、それが不要だった時に無駄手間になってしまう。プロトライプ段階であれば、人力でやった方が手戻りは少ない。
Excelでグラフにして出せばプロトタイプになるので、ここまでは人力で最初回してしまうのはアリ。
うまくできたプロトタイプから、パイプラインを作成。そうして手動でやっていたものを少しずつ自動化していき、手を離れていきその分の時間ができたら、別の作業へ、というイメージ。
講義中のQ/A:予測モデルの結果判定について
→テストデータを用意しておいて、実際の結果と目視で比較してみる
プラスアルファとして、以下の文言(予測モデルの結果について、〇〇な視点ではどうか?)をchatgptに必ず伝えてみると良い。こうすることで、その視点から見て予測モデルの結果はどうなのかを解説してくれる。

講義中のQ/A:データ収集が最も大変
→確かにその通り。
システムを作ってしまって、裏側でこっそりデータを集めることが最も強い。これはDX人材育成講座で学ぶ。
感想
前回、そして今回で実際に講師が行っている流れをみることができた(まだ予測モデルの解釈とかは全然わかっていない)ので、あとはこれをトレースしていけば慣れていくのかなと思う。
本筋からは逸れるけど、カンパ先生が今年の医師国家試験の問題内容とか禁忌選択肢の存在を知っていて、笑ってしまった。
次回はPBLについての説明(もしかするとチーム発表も)、金曜日はMicrosoft畠山氏による講演。そしてあとはPBLのみ。
いよいよ大詰め。走り切ろう。