11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ElixirAdvent Calendar 2023

Day 15

2023年末のElixirが出来ること⑥AI・LLM後編【Scholar/Explorer/Evison/EXGBoost】(最新Elixirのキャッチアップや、アドカレのネタ探しに読んでください)

Last updated at Posted at 2023-12-15

この記事は、Elixir Advent Calendar 2023 シリーズ9 の15日目です

昨日は、 私で 「2023年末のElixirが出来ること⑤AI・ML前編【Nx/Bumblebee】」 でした


piacere です、ご覧いただいてありがとございます :bow:

2023年末の時点で、Elixirにいったい何が出来るのかを紐解いていくシリーズで、前回は「⑤ AI・LLM前編【Nx/Bumblebee】」でしたが、今回は「⑥ AI・LLM後編【Scholar/Explorer/Evison/EXGBoost】」です

なお、本コラムで紹介した内容は、あなたのスキルからBright(輝き)とRight(正しさ)を引き出すプロダクト「Bright」の「AI・MLエンジニア Elixir」スキルパネルに反映された上でアンロックされるので、お楽しみに :wink:

https://bright-fun.org
image.png

本シリーズの全体像は、下記になります

あと、このコラムが、面白かったり、役に立ったら、image.png をお願いします :bow:

Scholar/Scidata

Scholarは、今年3月が初出ですが、レポジトリ自体はもっと早くアップされていて、でも中身が空の状態が半年近く続き、けっこうヤキモキしましたが、線形モデルから徐々に増えていきました

その後、ハイパーパラメータチューニングや前処理などのモデル以外のモジュールがなかなか入らず、再度モヤモヤしましたが、今はちゃんと継続的なアップデートが走って一安心です

高機能を誇るScikit-learnと比べてしまうと不足感は否めませんが、Nx/Bumblebeeではフォローされない領域(これは丁度、TensorFlowやPyTorchがScikit-learnが無いと不便な前処理だったり、ディープラーニングを使うまでも無いライトな機械学習部分に相当)がScholarによって埋め合わされ始めています

Scidataは、2021年4月が初出で、こちらはScikit-learnで言う sklearn.datasets に相当します

出来ること

  • Scikit-learnに近い機械学習や前処理、メトリクスなどは揃っている
    • ただし実装範囲はScikit-learnの半分程度で、モデル種類も限られたものだけ
大分類 中分類 小分類 機能
教師あり学習 分類      線形      線形回帰
                       ロジスティック回帰
                       多項式回帰
                       リッジ回帰
               ナイーブベイズ コンプリメント
                       ガウス分布
                       多項分布
               近傍法     kNN
                       rNN
       回帰      近傍法     kNN
                       rNN
教師なし学習 クラスタリング -       DBSCAN
                       混合ガウス
                       K-means
                       アフィニティ伝播
       次元削減    -       PCA(主成分分析)
                       t-SNE
統計     -       -       数値積分
                       尖度/歪度/モーメント
       補完      -       線形
                       ベジェ・スプライン
                       キュービック・スプライン
メトリクス  分類      -       正答率/適合率/再現率/F値等
                       混合行列
                       ROC曲線/AUC/カッパ係数等
       回帰      -       R2スコア/MAE/MSE等
       クラスタリング -       シルエットスコア
       統計的距離   -       ハミング/マンハッタン距離等
       類似度     -       ジャッカード/ダイス係数等
前処理    -       -       正規化
                       標準化
                       ワンホットエンコーディング
                       オーディナルエンコーディング
                       インピュータ
データ分割  -       -       交差検証
                       k-Fold
ハイパー
パラメータ
チューニング
グリッドサーチ

全量は下記にあります

比較元のScikit-learnリファレンスは下記にあります

Scikit-learnにあってScholarに無いこと

その大半は、単純にScholarが新しいOSSだから実装できていないものが多いですが、一部は、後発であるElixirはPython経緯と同じ道を辿る必要が無かったり、Python言語仕様に無いが故にScikit-learn実装されている機能もElixirでは割愛されるかも知れません

  • Python経緯と同じ道を辿る必要が無い対象
    • 勾配ブースティング/AdaBoost … 後述するEXGBoostで充分なため
    • ランダムフォレスト … 後述するEvisionに存在するため
    • サポートベクターマシン … 後述するEvisionに存在するため
    • SGD … Axonに存在するため
    • パーセプトロン … Axonに存在するため
    • 多層パーセプトロン … Axonに存在するため
  • Python言語仕様に無くてScikit-learn実装されている対象
    • パイプラインは、Elixirのパイプ演算子で済むかも知れない

Scikit-learnにあってScholarに無いことは、下記の通りです

特に、多数決投票器(VotingClassifier)が無いため、Kaggleなどで複数学習器によるアンサンブル攻略が出来ないのが辛いです

大分類 中分類 小分類 機能
教師あり学習 -       線形          SGD
                           パーセプトロン
                           PA(Passive Aggressive)
                           ラッソ回帰
                           エラスティックネット
                           LARS
                           直交マッチング追跡
                           ポアソン分布
                           ツイーディ分布
                           ガンマ分布
               ベイズ推定       ARDR
                           ベイズリッジ回帰
               アンサンブル      ランダムフォレスト
                           分離フォレスト
                           ランダムツリー
                           エクストラツリー
                           サポートベクターマシン
                           勾配ブースティング
                           AdaBoost
                           バギング
                           スタッキング
                           多数決投票器
               ニューラル
ネットワーク
多層パーセプトロン
                           ベルヌーイ制約つき
ボルツマンマシン
               その他         カーネル近似
教師なし学習 -       -           ガウス過程
       次元削減    -           Isomap
                           LLE
                           MDS
                           SpectralEmbedding
                           SMACOF
                           PTT
                           ランダム投影
メトリクス  ペアワイズ   -           (各種)
推定器    -       -           コンポジット
                           共分散
                           交差分解
                           行列分解
特徴量操作  抽出      -           (各種)
       選択      -           (各種)
パイプライン -       -           (各種)
キャリブ
レーション
-       -           (各種)
データ分割  -       -       シャッフル分割
                       時系列分割
ハイパー
パラメータ
チューニング
ランダムサーチ
                       HGS
                       HRS

EXGBoost

EXGBoostは、今年5月が初出です

ようやくElixirでも、Kaggle上位入賞にトライする土壌が出来上がり、とても嬉しく思います

出来ること

  • Python EXGBoostと同じアルゴリズムが使える
    • C言語で実装されたXGBoostラッパー
  • ただし、以下は未実装の模様
    • ストリーミングデータ型
    • CUDAサポート

全量は下記にあります

Explorer

Explorerは、2022年4月が初出です

Python Pandasのような高度なデータ加工/抽出/集計が可能で、Rustへのオフロード、もしくはGPU/TPU利用を伴う高速処理ができることが特徴です

2022年11月に、Nxとのシームレスな変換と、Query による強力で直感的なデータ操作が入ったことで、可読性が格段に上がり、かなり便利になりました

出来ること

  • Python PandasやR Tidyverseと似たデータ加工/抽出/集計ができる

全量は下記にあります

Elixirデータサイエンティスト @RyoWakabayashi さんが、数多くのExplorerコラムを書いてくれているので、ご参考にご覧ください

Evision/Image

Evisionは、2022年7月が初出です

OpenCVができる様々な画像加工を、Elixirでも再現できます

Imageは、2022年5月が初出です

こちらはpyvips同様の画像加工をElixirにもたらします

出来ること

  • Python cv2やpyvipsと同じ画像加工/操作が一通りできる

全量は下記にあります

こちらも @RyoWakabayashi さんが、沢山コラム化してくれています

終わりに

Elixir AI・ML開発の中核となるNx/Bumblebee以外の機械学習やデータ処理、画像処理についても、Pythonと遜色無い開発がじょじょに可能となっている様が伝わったでしょうか?

今年1年、非常に賑わった生成AI/LLM界隈ですが、その端っこにElixirも早くも手をかけようとしている様がイメージできたら幸いです

次回は、「⑦ Livebook+プラグイン編」をお送りします


明日は、 @RyoWakabayashi さんで 「闘魂Elixir ── Advent of code 2023 Day 4 Part 1 を Livebook で楽しむ」 です

p.s.このコラムが、面白かったり、役に立ったら…

image.png にて、どうぞ応援よろしくお願いします :bow:

11
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?