SQLにおける機械学習の詳細な説明

SQLにおける機械学習の詳細な説明

ML 以前の世界が存在していたことを信じられないこともあります。現代のデータ分析の多くは ML 技術を基盤として構築されており、今後もその傾向が続くでしょう。ただし、ML 技術を使用するには、主に Python の使用、コードの開発、多くの新しいテクノロジーの理解が必要になるため、誰もがこれらの大きな進歩の恩恵を受けられるわけではありません。特にビッグデータや分散システムがゲームに参入すると、事態は複雑になります。

[[380168]]

これは、SQL クエリ エンジンが解決しようとしている問題です。シンプルでありながら強力な SQL コマンドを使用して、分散システムの複雑な世界で作業できるようになります。 dask-sql は、Python 専用の Dask 分散ライブラリ上に構築された新しい SQL クエリ エンジンです (免責事項: 作者は私です)。この新しいライブラリを使用すると、Python を SQL および分散スケーラブル コンピューティングと組み合わせることができます。(詳細については、私の他の記事を参照してください)。

dask-sql の最新バージョン 0.3.0 には機械学習の実験的なサポートが含まれているので、今日はその使い方を見ていきます。もちろん、データ サイエンスの世界で有名な Iris データセットを使用します。この特定のデータ サンプルは小さいですが、この記事に示されているすべてのものは、クラスターにコンピューティング ノードを追加するだけで、より大量のデータに簡単に拡張できます。

補足: dask-sql を使用した ML はまだ実験段階です :-) お気軽にお試しください。ただし、注意して使用してください。

前提条件と準備

この記事では、あなた (またはデータ エンジニア) がすでに dask-sql をセットアップして実行していることを前提としています。詳細については、ドキュメントまたはこのブログ投稿を参照してください。また、最近のバージョンでは dask-sql のネイティブ サポートも提供している Apache Hue などの BI ツールなど、SQL Server インターフェイスを介して dask-sql に接続していると想定します。

dask-sql の Python インターフェースを使用している場合でも、この手順に従うことができます。 Jupyterノートブックを次のセルで初期化するだけです

  1. IPython.core.magic から register_line_cell_magic をインポートします
  2. dask_sqlからコンテキストをインポート
  3. # テーブルとモデルを保存するためのコンテキストを作成する
  4. c =コンテキスト()
  5. # 生活を楽にする小さなヘルパー関数
  6. @register_line_cell_magic
  7. def sql(行、セル= None ):
  8. セルがNoneの場合:
  9. セル= 
  10. =なし 
  11.      
  12. 行がない場合:
  13. = {}
  14. c.sql(セル、 return_futures = False 、**行)を返します。

次のコード例では、各SQLコマンドの前に%%sqlを追加します。たとえば、

  1. %%sql
  2. 1 + 1を選択

データの読み込みと準備

準備が整ったら、データのインポートを開始しましょう。 dask-sql は大規模な Python および Dask エコシステムを活用しているため、さまざまな場所からさまざまな形式でデータ サンプルを読み取ることができます。この例では、かなり標準的な CSV 形式でインターネットからデータを取得します。

  1. テーブル iris を作成または置換します (
  2. 場所= 'https://datahub.io/machine-learning/iris/r/iris.csv'
  3. 持続= True  

データセットは「iris」という名前のテーブルとして読み込まれ、保存されます。 persist=True にすると、dask-sql はデータをメモリにキャッシュします。

データが正しく読み込まれているかどうかを確認します

アイリスの説明

ご覧のとおり、データ型は自動的に割り当てられます。次の標準 SQL コマンドを使用して、データの最初の 10 行を表示できます。

  1. iris LIMIT 10 から * を選択

アイリスの花のデータセットの簡単な紹介: 上記の出力に示されているように、データセットはアイリスの花とその種の測定値を記述します。これは機械学習における標準データセットの 1 つであり、多くの種類の ML 手法の例として使用できます。この例では、教師なしクラスタリング アルゴリズムを適用します。

トレーニングを始める前に、まずすべての ML パイプラインにおけるもう 1 つの重要なステップである特徴抽出を実行しましょう。私は生物学者ではないので、ここでは、萼片の長さと萼片の幅を掛け合わせるという、非常に単純で素朴な新しい関数を例として使用します。 SQL ステートメントと関数を使用して、より複雑な機能を生成することもできます。それだけでは不十分な場合は、dask-sql を使用すると、Python で記述されたユーザー定義関数 (UDF) を登録できます。

  1. 選択
  2. *、
  3. 萼片長 * 花弁長 AS 新機能
  4. アイリスより
  5. 制限 10

作業を楽にするために、この拡張テーブルに別名を導入しましょう

  1. テーブル transformed_data を作成または置換します (
  2. 選択
  3. *、
  4. 萼片長 * 花弁長 AS 新機能
  5. アイリスより

これで機械学習を適用する準備が整いました。

機械学習モデルのトレーニング

機械学習モデルには、線形回帰のような単純なモデルから、強力なブースト決定木、トランスフォーマーのような最先端の研究モデルまで、さまざまな種類があります。これらの多くは有名な scikit-learn Python パッケージに実装されているため、(他の多くのライブラリとともに)dask-sql でも利用できます。

この例では、k-Means クラスタリング アルゴリズムを適用しました。つまり、データセットを類似した特性を持つ行のクラスターにグループ化します。すべてがうまくいけば、アルゴリズムに指示しなくても、同じ種類の花をグループ化できるようになることを期待しています。このアルゴリズムのパフォーマンスがどの程度優れているか見てみましょう (ネタバレ: あまり優れていません)。 dask-sql 互換モデルとその設定について詳しく知りたい場合は、ドキュメントを参照することをお勧めします。

それでは、データにクラスタリング アルゴリズムを適用してみましょう。

  1. モデルクラスタリングを作成または置換 (
  2. モデルクラス= 'sklearn.cluster.KMeans'
  3. wrap_predict = True
  4. n_clusters = 3  
  5. ) として (
  6. 萼片の長さ、萼片の幅、花弁の長さ、花弁の幅、新しい特徴を選択します
  7. 変換されたデータから

ご覧のとおり、トレーニングには新しい SQL 構造 CREATE MODEL を使用しました。この構造は、トレーニングするモデルを指定するためのいくつかのパラメータを取得します。私たちの場合、scikit-learn から k-Means アルゴリズムを選択し、グループまたはクラスターの希望数を 3 に設定します (種が 3 つあるため)。 scikit-learn パッケージのアルゴリズムは中程度のサイズのデータ​​ではうまく機能しますが、それ以上のサイズが必要な場合は、dask-ml を参照してください。

トレーニングはすぐに完了するはずです(データセットの合計が小さいため)。次に、予測の確認に進みます。

パフォーマンスを確認する

  1. 予測から*を選択(
  2. モデルクラスタリング、
  3. 変換されたデータから*を選択
  4. 制限 10

この SQL ステートメントは、トレーニング済みのモデルを指定されたデータに適用し、モデルの予測ターゲットを含む新しい列「target」を追加します。最初の 10 行からは、良さそうです (すべての「setosa」は同じ予測ターゲットを持っています)。したがって、より多くの計算を行うためにエイリアスを再度導入します。

  1. テーブル iris_results を作成または置換します (
  2. クラスとしてラベル、ターゲットとして予測されたものをPREDICTから選択する(
  3. モデルクラスタリング、
  4. 変換されたデータから*を選択

簡単にするために、結果を簡単に見て、種の分布と予測されるクラスターを調べるだけにします。

  1. 選択
  2. ラベル、予測、COUNT(*) AS 数値
  3. iris_results より
  4. GROUP BYラベル、予測

まったく完璧ではありませんが、幸いなことにこれは ML に関する記事ではないので、最適化の手順は省略します :-)。 BIツールではこれらの数値を自動的にプロットできる場合があり、Pythonユーザーであれば

  1. df = c .sql("""
  2. 選択
  3. ラベル、予測、COUNT(*) AS 数値
  4. iris_results より
  5. GROUP BYラベル、予測
  6. ""、 return_futures = False )
  7. df df = df.set_index(["ラベル", "予測"])
  8. df.numbers.unstack(0).plot.bar( ax = plt.gca ())のプロット

まとめ

最後までこの投稿を読んでいただきありがとうございました。かなり多くの内容を取り上げたので、ここで簡単にまとめます。

  • SQL クエリ エンジンが優れているのは、単純な SQL 構文 (と多くの魔法) を使って、複雑な分散システムを使用して複雑なデータをクエリできるためです。
  • その 1 つが dask-sql です。これは、スケーラブルな Python アプリケーション用のライブラリである Dask 上に構築されているため、Python エコシステムと特に簡単にやり取りできます。
  • 利点の 1 つは、このブログ投稿に示されているように、scikit-learn パッケージの k-Means アルゴリズムなど、さまざまな Python ML ライブラリを簡単に統合できることです。もう 1 つの利点は、すべてを SQL を使用して実行できることです。

さらに詳しく知りたい場合は、ドキュメントにアクセスして、データの SQL 処理を確認してください。

オリジナルリンク: https://towardsdatascience.com/machine-learning-in-sql-it-actually-works-56e8d91fc273

<<:  人工知能に関してどのような基礎教育が必要でしょうか?

>>:  2020年、全国の産業用ロボット出荷台数は前年比19.1%増加した。

ブログ    
ブログ    
ブログ    

推薦する

今年のGoogle I/Oカンファレンスは超「ハード」で、次世代のAIモデルも披露された

2022年のGoogle I/Oカンファレンスでは、参加者のほとんどがGoogleの社員であったにも...

...

...

顔認証ロック解除を使用するとき、携帯電話はどのようにしてあなたを「認識」するのでしょうか?顔認識について詳しく知る

2020年10月1日、私たちの祖国は71歳の誕生日を迎えました!我が国は、最初の人工衛星の打ち上げか...

Zoomに狂った外国人がビデオ会議ロボットを開発、同僚たちはすでに大笑い

[[321983]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

...

機械学習でデータを実用的な洞察に変換する

ビジネスが今やデータ主導型になっていることは誰もが知っています。データ収集の増加に伴い、分析はビジネ...

ハギングフェイスCEOが2024年のAI業界の6つの大きな変化を予測!

2024年にAI業界はどのように進化するのでしょうか? OpenAIのグレッグ・ブロックマン会長は...

商業ビルのエネルギー効率における人工知能の役割

人工知能は商業ビルを変革し、エネルギー使用に関してよりスマートなものにしています。周囲に誰もいないと...

7兆のブルーオーシャンが呼んでいる、ケータリングロボットの商業利用を加速させるには?

「機械が人に代わる」という無人化とインテリジェント化の潮流は、伝統的な飲食業界のあらゆる分野に広が...

「中国製チップ」の20年と新たな時代

[[285892]] 「自信を持った国と民族だけが、未来への道を着実に前進することができます。木の高...

Julia vs Python: 2019 年に機械学習でナンバー 1 になるプログラミング言語はどれでしょうか?

[[252207]] [51CTO.com クイック翻訳] Juliaは2018年に登場し、現在最...

...

2022年の自動運転のトップ10トレンドが発表されました。データインテリジェンスシステムは、自動運転の商用化のクローズドループの鍵となるでしょうか?

「2022年は自動運転産業の発展にとって最も重要な年となるだろう。乗用車の運転支援分野での競争は正...

2022年の人工知能の7つのトレンド

近い将来に大きな価値を生み出す可能性のある技術の予測となると、人工知能は間違いなくリストのトップに位...