機械学習

PythonのSDVライブラリでリレーショナルなテーブルをモデリングしてみる

前回に引き続きSDVライブラリを扱います。 ※前回の記事ではSDVライブラリで時系列データをモデリングし、合成データを作ってみました。 今回はSDVライブラリを使って複数のリレーショナルなテーブルをモデリングし、テーブル自体を生成してみます。 なお、本記事における「テーブル」とは、DBにおけるテーブルではなく、pandas.dataFrameのことを指しています。pandas.dataFrameを […]

PythonのSynthetic Data Vault (SDV)ライブラリで時系列データを生成してみる

Mediumの新着記事を眺めていたら気になるタイトルがありました。 Synthetic Data Vault(SDV)という、統計モデルや機械学習モデルを使ってデータセットをモデリングし、合成データを生成できるPythonライブラリがあるとのことです。 ということで、今回はこのSDVライブラリを試してみます。 公式のチュートリアルを参考に時系列データセットでモデリングし、合成データを生成します。 […]

DistilBERTの推論速度がCPUとGPUでどれくらい変わるのか比較してみた

Google社が開発した自然言語処理モデルBERTですが、使い方次第では様々なタスクで高い精度を得られるものの、そのパラメータの多さゆえに推論にかなり時間がかかります。 そのためBERTを実運用しようとすると、処理時間がボトルネックになって頓挫する場合もあるのではと思います。 BERTを蒸留したDistilBERT(軽量版BERT)をさらに量子化することで、CPUでも高いパフォーマンスを得られると […]

BPEでサブワード分割することでDistilBERTに未知語が入力されるのを防ぐ方法

最近案件でBERTを使う機会がありました。 Hugging Face社が公開している英語版のBERTや東北大の乾・鈴木研究室が公開している日本語版BERTであれば自前のtokenizerで学習あるいは推論対象のテキストを単語分割しても問題ありません。 一方、京大の黒橋・褚・村脇研究室が公開しているBERTだったり、バンダイナムコ社が公開しているDistilBERTを使用する場合、自前のtokeni […]

SOTAなモデルを簡単に使えるktrainがテーブルデータに対応したので試してみた

最近、自然言語処理関連の仕事でBERTを使うことになり、まずはお手軽に試せるライブラリはないかと探していたところ、ktrainというライブラリがあることを知りました。 「ktrain: A Low-Code Library for Augmented Machine Learning」という論文曰く、ktrainを使えば、洗練されたSOTA(state-of-the-art)な機械学習モデルを簡単 […]

自然言語処理ライブラリspaCyが日本語対応したので試してみた

spaCyという自然言語処理のためのライブラリがバージョン2.3にアップデートされ、日本語に対応しました。 このアップデートによって、ベクトルを内包するモデルのサイズやロードにかかる時間が減少し、さらに単語ベクトルの精度が向上したとのことです。 公式ドキュメントを見ると、単語のセグメンテーションと品詞タグ付けにはSudachiPyを利用しているようです。 今回は早速、spaCyを使って日本語の分か […]

Streamlitで確率分布のシミュレーションアプリを作ってみた

巷でFlaskはオワコンと言わしめている、StreamlitというMLツールを使ってみました。 Streamlitは、Pythonスクリプトだけでwebアプリを作成できるツールです。 公式ページ曰く、Streamlitはデータサイエンティストや機械学習エンジニアがほんの数時間で美しくパフォーマンスの高い を作るための最も簡単なフレームワークとのこと。 Streamlit’s open-source […]

コロナ禍による概念ドリフト(Concept Drift)が機械学習タスクに与える影響

先日、全国で緊急事態宣言が解除され、ようやくコロナ禍の波を1つ超えた感があります。 しかし、コロナ禍によって人々の行動や需要が大きく変わっているため、コロナ禍の前後のデータは業界によっては全く傾向が異なると捉えるべきでしょう。 ここで気になるのは、コロナ禍以前から運用されている機械学習系サービスへの影響です。 本記事ではこういった感染症のパンデミックによる概念ドリフト(Concept Drift) […]

決定木アルゴリズムの重要度(importance)を正しく解釈しよう

機械学習案件で、どの特徴量がターゲットの分類で「重要」かを知るためにRandamForestやXGBoostなどの決定木系アルゴリズムの重要度(importance)を確認するということがよくあります。 ただ、この重要度がどのように計算されているのかを知らずに、なんとなく「重要」な特徴量をあぶり出してくれる便利なツールとして使われていまっているような印象があります。 確かに重要度はお手頃に求められ […]

Appleが公開している機械学習ライブラリTuri CreateでKaggle Titanicをやってみる

Twitterで呟いたり、Qiitaに投稿したりでブログがおろそかになっていました。。。 ということで、久々のブログ更新です。 今抱えている案件の一つにレコメンドシステム関連があって、業務に使えるいいネタはないかといろいろ調べ物をしていたところ、Mediumでcollaborative filtering(協調フィルタリング)に関するすご〜く良い記事を見つけました。 この記事では、協調フィルタリン […]