Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

PandasAI:生成AIがデータ分析業務にもたらすパラダイムシフト

 PandasAI:生成AIがデータ分析業務にもたらすパラダイムシフト

PyCon Kyusyu2024で登壇した内容に関する資料です。
URL:https://kyushu.pycon.jp/2024/
内容:
生成AIがデータ分析業務にもたらすパラダイムシフトとして「複雑な分析関連コードを書く代わりに、自然言語による対話的なデータ分析」を本セッションを通じて体験してみませんか?
本セッションでは、生成AIを利用したデータ分析の効率化と自動化に焦点を当て、特に、自然言語によるデータ分析機能を提供するPandasAIというライブラリの可能性を紹介します。
実世界のデータ分析課題にPandasAIをどのように適用できるか、そのベストプラクティスを共有し、データ処理、クリーニング、可視化、および特徴量生成のプロセスを簡略化する方法を提示します。

negi111111

June 01, 2024
Tweet

More Decks by negi111111

Other Decks in Programming

Transcript

  1. © NTT Communications Corporation All Rights Reserved. PandasAI: 
 生成AIがデータ分析業務にもたらすパラダイムシフト

    
 丹野 良介
 NTTコミュニケーションズ株式会社
 イノベーションセンター 
 2024/05/25(土)
 markMEIZAN@鹿児島
 発表スライド 

  2. © NTT Communications Corporation All Rights Reserved. 2 「突然ですか…今からデータ分析部署に移動です」 


    背景設定:「あなたはデータ分析コンサルティングの現場担当者です。今回、小売業界におけるデータ 分析プロジェクトの分析担当者としてアサインされました。クライアントであるウォルマートの重鎮と共に プロジェクトを進める必要があり、クライアントからの下記の質問に答えて下さい。」
 
 ボス<「早速で悪いんだけど、顧客から以下の回答を求められてるんだ。Pythonのスペシャリストって 聞いてるよ、Python使えるってことは分析もできるんだよね?よろしく!」
 
 
 ❖ 売上高が最大である店舗はどこだろう?
 ❖ 売上が大きく変動する店舗はどこだろう?
 ❖ 成長率が高いのはどの店舗はどこだろう?
 ➢ 結果が良い店舗はノウハウを真似したい! 

  3. © NTT Communications Corporation All Rights Reserved. 3 本日のゴール 


    ❖ PandasAIがなにかわかる
 ❖ 動作原理について理解する(デモ有)
 ❖ データ分析の雰囲気がわかる
 ❖ データ分析における生成AI事例を理解する
 
 ❖ 前提知識
 ➢ ChatGPTを知っている
 ➢ Pythonの基礎的な文法
 ➢ オブジェクト指向の考え方
 ▪ ライブラリが普通に使えればOK!
 ➢ OpenAI(Azure)でAPIキーが発行できる
 ▪ お試し程度なら無料分で十分すぎます
 

  4. © NTT Communications Corporation All Rights Reserved. 4 「突然ですか…今からデータ分析部署に移動です」 


    背景設定:「あなたはデータ分析コンサルティングの現場担当者です。今回、小売業界におけるデータ 分析プロジェクトの分析担当者としてアサインされました。クライアントであるウォルマートの重鎮と共に プロジェクトを進める必要があり、クライアントからの下記の質問に答えて下さい。」
 
 ボス<「早速で悪いんだけど、顧客から以下の回答を求められてるんだ。Pythonのスペシャリストって 聞いてるよ、Python使えるってことは分析もできるんだよね?よろしく!」
 
 ❖ 売上高が最大である店舗を教えてください。
 ❖ 売上が大きく変動する店舗を教えて下さい。
 ❖ 2012年第3四半期において、四半期ごとの成長率が高いのはどの店舗か教えて下さい。
 ❖ 全店舗を合わせた非ホリデーシーズンの平均売上高よりも高い売上高を持つホリデーシーズンを見 つけてください。
 ❖ 一週間後の店舗の需要予測の売上を予測して下さい。
 ❖ データから得られるインサイトについて可能な限り教えて下さい。
 

  5. © NTT Communications Corporation All Rights Reserved. 5 本日のゴール 


    動作イメージを理解し、原理も何となくわかる、レベル感を目指します

  6. © NTT Communications Corporation All Rights Reserved. 6 ❖ PythonやSQLを使用してデータ分析を行っている人

    :
 ➢ 生成AIの活用により、複雑なコードを書かずに分析作業を効率化したい
 
 ❖ SQLやPythonに慣れていない人 :
 ➢ データを扱うときに時間と労力を節約したい
 ➢ (自然言語でデータにクエリを投げたい)
 
 ❖ データ分析の自動化に興味がある初心者から中級者
 
 どんな人に聞いてほしいか 

  7. © NTT Communications Corporation All Rights Reserved. 7 ❖ 生成AIがデータ分析業務にもたらすパラダイムシフトとして「複雑な分析関連コードを書く代わりに、

    自然言語による対話的なデータ分析」を本セッションを通じて体験してみませんか?
 
 ❖ 本セッションでは、生成AIを利用したデータ分析の効率化と自動化に焦点を当て、特に、自然言語に よるデータ分析機能を提供するPandasAIというライブラリの可能性を紹介します。
 
 ❖ 実世界のデータ分析課題にPandasAIをどのように適用できるか、そのベストプラクティスを共有し、 データ処理、クリーニング、可視化、および特徴量生成のプロセスを簡略化する方法を提示します。
 
 
 目的

  8. © NTT Communications Corporation All Rights Reserved. 9 機械学習とは 


    
 ❖ 経験(データ)により賢くなるアルゴリズムの研究
 ➢ データから知識・ルールを自動で獲得する
 ➢ データの適切な表現方法も獲得する
 
 ❖ 人工知能の中で、人が知識やルールを明示的に与える方法の限界から生まれてきた
 データに潜む規 則性や知識を 発見 ..!!
  9. © NTT Communications Corporation All Rights Reserved. 10 人に比べて機械学習のここがいい 


    ❖ 大量
 ➢ 大量に処理ができる
 ➢ 機械を並べればいくらでもスケールする
 
 ❖ 高速
 ➢ 人間の反応速度を超えることができる
 
 ❖ 高精度
 ➢ 場合によっては人間を凌駕するようになってきた
 ➢ 人と違って判断がぶれない、疲れない

  10. © NTT Communications Corporation All Rights Reserved. 11 機械学習を活かすポイント 


    
 
 ❖ 量と速度が圧倒的なポイント
 
 ❖ 量
 ➢ 大量のデータがあって人手では処理ができない
 ➢ 情報源が多様すぎて人間では手に負えない
 
 ❖ 速度
 ➢ 人間よりも圧倒的に高速に反応できる
 ➢ 反応速度が重要な領域で価値がでる

  11. © NTT Communications Corporation All Rights Reserved. 12 機械学習が失敗するパターン 


    
 
 ❖ できない精度を求める
 ➢ サイコロの次の目を当てることはできない
 ➢ 同じように、精度の限界がある
 
 ❖ 人にとって簡単なタスクをやろうとする
 ➢ 少ない情報から推論するのは人間が得意
 ➢ 逆に大量の情報から判断する必要がある時は機械が得意
 
 ❖ ボトルネックが別にある
 ➢ アクションを取るのが人だったり、人が途中に介在する
 ➢ 量と速度のメリットをいかに活かすか
 

  12. © NTT Communications Corporation All Rights Reserved. 13 「機械にやらせるなら、ルールを書けば?」 


    
 
 ❖ 俗にルールベースと呼ばれる方法
 ➢ あらかじめ決めた基準に沿って分類
 ❖ 最初は精度が悪いががんばれば意外とどこまでも良くなる
 
 専門知識 犬: 大きな耳、 色は2色… 猫: やや小さい耳、   色は三色… 例1. 犬、猫を見分ける方法をコンピュータに教え 込む方法を考えてみる。
  13. © NTT Communications Corporation All Rights Reserved. 14 ルールに基づく判断の限界 


    ❖ 人手で書いたルールはすぐ複雑、膨大になる
 ➢ 数万行のスクリプト
 ➢ どこを変えたらいいかわからない
 ➢ 条件を追加したら何が起こるか・・・
 
 ❖ 複雑化したルールは引き継げなくなる
 
 専門知識 犬: 大きな耳、 色は2色… 猫: やや小さい耳、   色は三色… ルールベースの認識だと認識エラーが多発 例えば耳に着目すると、  ・同じ犬でも耳の形や色、質感はバラバラ  ・むしろ猫に似た犬もいる。  ・また、写っている状態やポーズ、によっても   見え方がかなり変わってくる。
  14. © NTT Communications Corporation All Rights Reserved. 15 生成AIは何ができるものなのか? 


    イラストや文章など、創造的かつ現実的なアウトプットを生み出すことができることから、 急速な広がりを見せている 
 ❖ 文章生成: ChatGPT、Bard、Perplexity、Bing Chat ❖ 画像生成: DALL-E 3、Stable Diffusion、Midjourney
 ❖ 動画生成: Make-a-Video、GEN-2
 ❖ 音楽・音声生成:Mubert、coqui
 ❖ プログラム生成:Copilot(最近はOffice系と連動)
 “ホテルの大きなイベントホールで、生成 AIについて プレゼンテーションをしている人がおり、 その人の前にはたくさんの聴衆がいる画像 "
 https://www.bing.com/ 

  15. © NTT Communications Corporation All Rights Reserved. 17 言語モデルとは? 


    テキストデータを元に、言葉の並びや文の構造を学習し、 新しい文を生成したり、次に来る単語を予測する計算モデル
 I like machine ?
 learning (0.89232434) food (0.00000212)
 a (0.00000092) XXXXX (・・・・・・)
 言語モデル
  16. © NTT Communications Corporation All Rights Reserved. 18 大規模言語モデル(LLM)とは? 


    (主にDeep Learningを用いて) 
 超大規模なデータセットで学習された言語モデルのこと 
 べき乗則(Scaling Law) *後半で再掲 https://arxiv.org/abs/2001.08361 

  17. © NTT Communications Corporation All Rights Reserved. 19 大規模言語モデルの仕組み(最近のパターン) 


    テキスト
 データ テキスト
 データ テキスト
 データ 大規模言語モデル
 (LLM)
 翻訳 文章要約 Q&A
 感情分析 各タスク ファイン
 チューニング
 or Few/Zero-shot Learning 超大量のテキストデータを元に学習させた事前学習済みモデル
 +
 タスクに合わせたファインチューニング or Few/Zero-shot Learning(*後述)
 事前学習済みモデル

  18. © NTT Communications Corporation All Rights Reserved. 21 What is

    Data Science? 
 大きく三象限に分けて説明されることが多い
 
 
 Statistical Human Computational 出典 Science and data science:https://www.pnas.org/content/114/33/8689 確率的モデルによる複雑なデータの表現 高次元データの縮約 因果関係の推定 言語: 数学や確率論 最適化アルゴリズムの実装 データ収集 (サンプリング ) 分散コンピューティング 言語: プログラミング 問題領域の理解 可視化、分析結果のレポート モデル/収集データの選択 共通言語化されていない
  19. © NTT Communications Corporation All Rights Reserved. 22 What is

    Data Science? 
 “Crucially, the data scientist solves the problem iteratively and collaboratively with the domain expert.”
 →重要なのは、データサイエンティストがドメインエキスパートと反復的かつ協調的に問題を解決するこ とである。
 出典 Science and data science:https://www.pnas.org/content/114/33/8689 Statistical Human Computational 確率的モデルによる複雑なデータの表現 高次元データの縮約 因果関係の推定 言語: 数学や確率論 最適化アルゴリズムの実装 データ収集 (サンプリング ) 分散コンピューティング 言語: プログラミング 問題領域の理解 可視化、分析結果のレポート モデル/収集データの選択 共通言語化されていない
  20. © NTT Communications Corporation All Rights Reserved. 23 Motivation 


    ❖ データ分析のプロセスの8割以上が前処理と言われる
 ➢ 実際にAIモデルを作る部分はこの中のどれでしょう?
 
 
 
 
 
 
 
 ❖ 適切なモデルを決めるためにも可視化が大事 
 
 ❖ 補足:ノーフリーランチ定理
 ➢ なんでも切れる万能なモデルはない
 ➢ データを眺めてモデルを選んでやる必要がある
 出典:https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdf
  21. © NTT Communications Corporation All Rights Reserved. 24 世はまさに大可視化時代 


    出典:https://speakerdeck.com/jakevdp/pythons-visualization-landscape-pycon-2017 ❖ データ処理として Pandas/Matplot/Seaborn/(Plotly)/(Numpy) は必ず利用する

  22. © NTT Communications Corporation All Rights Reserved. 25 Numpy 


    ❖ 多次元配列の処理を得意とするライブラリ
 ➢ C言語で書かれているので処理が高速
 ❖ 行列計算は分析・機械学習の至るところで出てくる
 ➢ Deep Learning界隈でよく耳にするGPUも
 行列演算が高速にできる装置
 
 ❖ 画像も音声もテキストも最後は多次元配列にしてからモデルに入れる
 明度が埋め込まれた 行列 8 8 I eat an apple 0 0 0 1 0 0 0 ... ... 語彙数 apple orange banana pineapple kiwifruit apple 単語数× 語彙数の行列 =>
  23. © NTT Communications Corporation All Rights Reserved. 26 Pandas 


    
 ❖ 表形式のデータ構造に関して効率的にデータ操作を行うことができる
 ➢ csvとかExcelとかで扱える様なデータならまずは初手 df: pd.DataFrame = pd.read_csv(“hoge.csv”)
 ➢ DataFrame オブジェクトを介して高速で効率的なデータ操作
 
 内部でMatplotlib の機能を使用して散布図、棒グラフ、 箱ひげ図,...などを .plot() だけで実現
 特定の行や列を選択またはフィルタリングなども抽出は 直感的に記述可能
 age_sex = titanic[["Age", "Sex"]]
 
 出典:https://pandas.pydata.org/docs/getting_started/index.html#getting-started
  24. © NTT Communications Corporation All Rights Reserved. 28 PandasAIとは 


    ❖ (雑に言うと)Pandas+AI(ChatGPT)
 ➢ 自然言語を利用してDataFrameから情報を抽出したり、グラフを描画したりできる
 ➢ OSS公開されているのでOpenAI(Azure含む)でAPIキーがあれば無料で使える 
 ➢ SaaSとしても提供しているのでお金払えばAPIキーが無くても使える
 
 ❖ 具体的には、
 ➢ グラフによるデータの可視化、
 ➢ 欠損値への対応による
 データセットのクレンジング
 ➢ 特徴生成によるデータ品質の向上
 
 ❖ 誰向け
 ➢ データサイエンティストやアナリスト
 ➢ SQLやPythonに慣れていない人
 ➢ データを扱う時間と労力を節約したい人
 ➢ 複雑なコードを書くことなく
 データに質問をすることができる
 ▪ SQLやPythonに慣れている人も!
 

  25. © NTT Communications Corporation All Rights Reserved. 29 PandasAIとは(特徴) 


    ❖ 自然言語クエリ:自然言語でデータに質問
 ❖ データの可視化:グラフやチャートを作成してデータを視覚化
 ❖ データクレンジング:欠損値に対処してデータセットをクレンジング
 ❖ 特徴量生成:データ品質を向上
 ❖ データコネクタ:CSV、XLSX、PostgreSQL、MySQL、BigQuery、
         Databrick、Snowflakeなど、さまざまなデータソースに接続可能

  26. © NTT Communications Corporation All Rights Reserved. 30 PandasAIの仕組みは? 


    PandasAIは、生成AIモデルを使って自然言語クエリを理解・解釈し、PythonやSQLクエリに変換その コードを使ってデータを操作し、結果をユーザーに返却
 内部の実行過程は以下
 
 ❖ 生成プロセスは以下の5段階(厳密には7段階)
 ❖ PromptGeneration -> CodeGenerator -> CodeExecution -> 
            ResultValidation -> ResultParsing
 
 ➢ CacheLookup:データがキャッシュされているかどうかの確認
 ➢ PromptGeneration :プロンプトの生成
 ➢ CodeGenerator :プロンプトからコードを生成する
 ➢ CachePopulation:生成されたデータのキャッシュ
 ➢ CodeExecution :コードの実行
 ➢ ResultValidation :実行結果の検証
 ➢ ResultParsing :結果をデータに解析する
 

  27. © NTT Communications Corporation All Rights Reserved. 31 PandasAIの仕組みは? 


    
 ❖ 生成AIを利用する際の障壁
 ➢ 振る舞いや挙動が不安定
 
 ❖ 生成AIで適切な出力を得るためには
 ➢ プロンプト(クエリ)を具体的に指定してあげる必要性
 
 ❖ PandasAIは適切なプロンプト(クエリ)を自動で生成してくれる
 

  28. © NTT Communications Corporation All Rights Reserved. 32 LLMには以下の2つの課題が存在する。
 


    LLMの潜在的な課題(参考) 
 この問題に対応するためにLLMを特定のドメインに適用させ、 
 その知識を更新するためにLLMへの知識注入といった考え方が存在する 
 一般的に考えられる対処法 
 1. ファインチューニング
 2. 検索拡張生成(RAG) 
 c
 c
 ❖ 正確性と信頼性に関する課題 
 ➢ 誤った情報を生成するリスクが存在する
 ❖ 剽窃に関する課題 
 ➢ 検出器を回避できるほど高品質なコ ンテンツを生成できるため剽窃が助 長される 今回はこちらに着目 ❖ LLMは膨大なデータセットによる事前学習により驚くべき知識レベルを発揮する 
 ❖ 一方で、LLMの表現可能な知識には次の2つの制限がある 
 ➢ 1. 新しい情報には対応できない
 ➢ 2. 特定の専門知識の情報が不足している
 よって、モデルの学習データ範囲を超えるクエリや最新の情報が必要な場合は顕著な制限を示す。
 

  29. © NTT Communications Corporation All Rights Reserved. 33 PandasAIの仕組みは? 


    
 ❖ より適切な結果を得るためには、内部の仕様を読み解くことが重要
 ➢ プロンプト≒黒魔術
 ▪ →理解しないままに利用するのに抵抗がある
 ➢ (何より、エンジニアの性なので。。。)
 

  30. © NTT Communications Corporation All Rights Reserved. 34 悪意のあるコードが生成された場合は? 


    ❖ 例えば、環境変数を抜き出す様なコードを指示したり、内部でAPIをRequestするようなコードが生成 された場合
 ➢ 生成してほしくないライブラリも多くあるはず(os moduleは使ってほしくない、など)
 
 ❖ デフォルトでは、PandasAIはホワイトリストに登録されたモジュールを使用するコードのみを実行可 能
 ➢ 悪意のあるコードがサーバー上またはローカルで実行されるのを防ぐため
 
 ❖ ただし、カスタムモジュールをホワイトリストに追加することは可能
 ➢ custom_whitelisted_dependencies: List[str] = Field(default_factory=list) 
 

  31. © NTT Communications Corporation All Rights Reserved. 35 PandasAIを理解するためのメインコンポーネント3つ 


    ❖ SmartDataframe
 ➢ 単一のデータフレームを操作する場合はこちら
 
 ❖ SmartDatalake
 ➢ 複数のデータフレームを使用したクエリを利用する場合はこちら
 
 ❖ Agent
 ➢ エージェントは会話の状態を追跡し、複数ターンの会話に対応可能
 ➢ Clarification questions(質問を明確に)
 ▪ クエリに答えるのに十分な情報を持っていない場合、明確な質問を要求する
 ▪ クエリに答えるためにより多くの情報を得るために、エージェントがユーザーに尋ねることができる最大3つの 明確な質問を返します
 ➢ Explanation(説明)
 ▪ ユーザーに与えられた答えを説明することができます
 ➢ Rephrase Question(質問を言い換える)
 ▪ モデルから正確で包括的な回答を得るために質問を言い換える

  32. © NTT Communications Corporation All Rights Reserved. 37 「突然ですか…今からデータ分析部署に移動です」 


    背景設定:「あなたはデータ分析コンサルティングの現場担当者です。今回、小売業界におけるデータ 分析プロジェクトの分析担当者としてアサインされました。クライアントであるウォルマートの重鎮と共に プロジェクトを進める必要があり、クライアントからの下記の質問に答えて下さい。」
 
 ボス<「早速で悪いんだけど、顧客から以下の回答を求められてるんだ。Pythonのスペシャリストって 聞いてるよ、Python使えるってことは分析もできるんだよね?よろしく!」
 
 ❖ 売上高が最大である店舗を教えてください。
 ❖ 売上が大きく変動する店舗を教えて下さい。
 ❖ 2012年第3四半期において、四半期ごとの成長率が高いのはどの店舗か教えて下さい。
 ❖ 全店舗を合わせた非ホリデーシーズンの平均売上高よりも高い売上高を持つホリデーシーズンを見 つけてください。
 ❖ 一週間後の店舗の需要予測の売上を予測して下さい。
 ❖ データから得られるインサイトについて可能な限り教えて下さい。
 

  33. © NTT Communications Corporation All Rights Reserved. 38 まとめ
 


    ❖ PandasAIがなにかわかる
 ❖ 動作原理について理解する(デモ有)
 ❖ データ分析の雰囲気がわかる
 ❖ データ分析における生成AI事例を理解する
 
 ❖ 前提知識
 ➢ ChatGPTを知っている
 ➢ Pythonの基礎的な文法
 ➢ オブジェクト指向の考え方
 ▪ ライブラリが普通に使えればOK!
 ➢ OpenAI(Azure)でAPIキーが発行できる
 ▪ お試し程度なら無料分で十分すぎます
 
 ❖ 話さないこと
 ➢ 生成AI(大規模言語モデル、GPT)の仕組みは話しません!
 ➢ NTT版大規模言語モデル「tsuzumi」もしません!笑
 ▪ 2024年3月25日に商用開始〜
 ▪ (ただ、関係者には繋げられると思います)

  34. © NTT Communications Corporation All Rights Reserved. 39 お役立ちリンク集 


    ❖ Pandas公式ドキュメント
 ➢ Getting startedが優秀
 ❖ PandasAI公式ドキュメント
 ➢ Pandasの
 ❖ PandasAI公式レポジトリ
 ❖ 日本語LLMまとめ情報