翻訳者|Liu Tao
査読者|Sun Shujuan
人工知能 (AI) と機械学習 (ML) は私たちの日常のパートナーであり、アルゴリズムと統計モデルなしでは想像するのが困難です。人生はどんなものになるだろう。機械学習という言葉を聞くと、最初に思い浮かぶのは Python です。 Python は長い間機械学習の代弁者であったため、機械学習の技術的側面の実装を支援する上で重要な役割を果たしてきました。
Python はおそらく最も美しい機械学習言語であり、開発者の 48.24% が使用しています。 Python には強力で便利な低レベル パッケージと高レベル API インターフェイスがあるため、科学技術コンピューティングのすべての分野で比類のない利点がありますが、特定のタスクに使用する場合にはいくつかの欠点もあります。したがって、Python に代わる言語の必要性がますます一般的になってきています。
現在、多くの新興言語は、パフォーマンスの点で Python と同等かそれ以上です。したがって、これは機械学習の唯一の選択肢ではなくなりました。 Scala、Julia、MQL5、および Python のスーパーセットではないその他の言語を使用して、機械学習アプリケーションを開発および提供できます。したがって、機械学習はもはや Python に限定されません。
この記事では、新しい機械学習言語の出現、それらが Python の市場シェアをどのように侵食しているか、機械学習が将来どのように変化するかについて探っていきます。
Python の欠点のいくつかについて説明します。 、これらの欠点は、開発者やデータ サイエンティストによってよく直面します。
Python の開発速度は速いですが、計算速度は非常に遅いです。コンパイラではなくインタプリタを使用します。シーケンシャルなコードを実行するため、他のデータ サイエンス プログラミング言語よりも遅くなります。 C には便利なツールやライブラリがたくさんあるため、Python は C よりも遅いです。ベクトル化されたコードをマスターしない限り、それがいかに遅いかに気づくでしょう。
Cython は Python のスーパーセットです。Python ソース コードを C 言語コードにコンパイルします。最も重要なことは、追加のコンピューティング リソースを必要とせずに C 言語レベルのコンピューティング速度を提供することです。多くのプログラマーは Cython を使用して、C 言語と同じくらい高速に実行され、さらにシンプルで読みやすい Python コードを作成します。
Python には、動的型付けが原因で設計に大きな欠陥があります。一般に、プログラミング言語で動的に型指定される変数には特別な宣言は必要ありません。 Python はダックタイピングを使用するため、混乱を招く可能性があります。ダック タイピングでは、オブジェクトのクラスやプロパティは、その機能ほど重要ではありません。ダックタイピングでは型チェックは必要ありません。プロセスやプロパティを確認することもできます。
Python は構造が大きいため、大量のメモリを消費します。さらに、Python データ型はメモリ消費に関して柔軟性があります。メモリを大量に消費するタスクには適していません。データ型が柔軟なため、メモリも消費されます。したがって、大規模で長時間実行される Python システムを作成する場合、Python でのメモリ管理は困難になります。
他の言語と比較して、Python スレッドは効率が低くなります。 Python はマルチスレッドですが、一度に実行できるスレッドは 1 つだけです。したがって、マルチスレッド Python はシングルスレッドの処理効率を提供します。 Python には、一度に 1 つのスレッドのみが使用できるグローバル インタープリター ロック (GIL) があります。 Python がネイティブ ライブラリを使用する場合にのみ、複数のスレッドを同時に実行できます。さらに、Python のスーパーセットである Jython はマルチスレッドを実装できますが、Python はマルチスレッドを実装できません。
Julia の作成者は、科学技術コンピューティング、機械学習、データ マイニング、大規模な線形代数を C と同じくらい速く、分散並列で処理できる言語を開発したいと考えていました。コンピューティング。しかし、最終的にはより高速な言語を開発しました。 Python の速度は向上していますが、Julia のパフォーマンスは依然としてそれを上回っています。
Julia は、機械学習で使用される多くの数学表記を簡素化します。 ArrayFire などの多様な GPU プログラミング パッケージを提供し、GPU が汎用コードを実行できるようにします。各パッケージには独自のプログラミング モデルがあり、たとえば、NVIDIA には CUDA.Jl、AMD には AMDGPU.jl および oneAPI があります。
機械学習エンジニアは、MLBase.jl、Flux.jl (深層学習)、MLJ.j (一般的な機械学習)、Knet.jl (ディープラーニング)。 Flux は、Julia の機能を最大限に活用するための追加ツールがプリロードされた高速深層機械学習ライブラリです。同様に、ML アプリケーション用の ScikitLearn.jl、TensorFlow.jl、および MXNet.jl が含まれています。
ジュリアは複雑な計算問題を解くのが得意です。そのため、スタンフォード大学や首都大学東京など、多くの有名大学がJuliaコースを提供しています。パフォーマンスもPythonに比べて非常にしっかりしています。
Logan Kilpatrick のような多くの業界幹部は、Julia が機械学習とデータ サイエンスの未来であると信じています。
Julia の主な機能:
Scala は、オブジェクト指向と関数型プログラミングの両方の手法をサポートする高水準プログラミング言語です。 Martin Odersky が作成し、2004 年 6 月に正式に発売されました。 Scala は開発者の間で人気が高まっており、今日のテクノロジーを飛び越えています。
Scala は、Java アプリケーションおよびライブラリと互換性のある Java 仮想マシン (JVM) 言語です。基本データの概念がないため、多くの場合静的言語とみなされます。そのマルチパラダイム、マルチコア アーキテクチャは複雑です。
ApacheSpark は、強力かつ高速なリアルタイム データ ストリーミングおよびデータ処理ツールです。 Scala Spark は、複雑なマッピング、ETL、および大規模なデータ処理タスクを容易にします。 Scala を使用すると、ユーザーはコードを理解することで新しい Spark 機能を実装できます。 Scala は Java と互換性があるため、プログラマはオブジェクト指向の概念を迅速に習得できます。
SparkMLlib には、Spark の高品質なアルゴリズムと優れたパフォーマンスが含まれており、スケーラブルな機械学習ライブラリとなっています。分類、回帰、クラスタリング、協調フィルタリング、次元削減はすべて、Spark の MLlib 機械学習ライブラリに含まれています。さらに、Breeze、Spire、Saddle、Scalalab などの ML ライブラリは、強力なデータ処理アプリケーションの作成に役立ちます。
ApacheKafka は、オープンソースの分散イベント ストリーミング プラットフォームであり、Python の人気に伴い、Spark も人気が高まっています。 Scala Spark で実行速度が遅いものは、必ず PySpark でクラッシュします。さらに、TensorFlow Scala ライブラリを使用して、機械学習モデル用の適応性のある高性能の提供システムを作成できます。
Scala の静的型付けにより、複雑なアプリケーションが容易になります。 JVM および JavaScript ランタイムにより、高性能システムがライブラリに簡単にアクセスできるようになります。さらに、そのパフォーマンスは Python よりも優れています。 Python と比較しても同様です。
Scala の主な機能
Scala のいくつかのコア機能により、効率的なデータ サイエンス計算が可能になります。
MQL5 は、高度なデータ分析と機械学習機能を提供する高度なオブジェクト指向プログラミング言語です。これは広く使用されているよく知られたプログラミング言語 C に基づいており、その速度と多用途性で知られています。
MQL5 は、Python、Julia、Scala のような日常的に使用される ML 言語ではありません。これは、金融商品を監視するために金融市場向けに特別に作成されました。この言語は本質的には他の言語に似ていますが、独自の機能を備えています。 MQL5 は、整数、ブール値、リテラル、文字列、日付、時刻、および列挙をサポートします。構造体とクラスの両方を複合データ型として定義します。
MQL5 言語ドキュメントには、関数、演算、予約語などがリストされています。さらに、整数、ブール値、リテラル、文字列、日付と時刻などのデータ型も提供します。複雑な構造とクラスがあります。さらに、ドキュメントには、取引戦略、コントロール パネル、カスタム視覚効果、ファイル アクセスなどのための標準ライブラリ クラス定義が含まれています。
さらに、MQL5 には、新しいアプリケーション開発用に 1,500 以上のソース コード ライブラリがあります。多数の数値解析関数を含む ALGLIB ライブラリを使用できます。同様に、時系列を処理するための TimeSeries ライブラリや、ファジィ モデルを開発するための Fuzzy ライブラリやその他のさまざまなライブラリがあります。
MQL5 は、リアルタイム システムの構築に役立ち、視覚的な意思決定支援を提供できる強力なプログラミング言語です。 MQL5 は列挙、構造、クラス、イベントをサポートします。主要な組み込み関数の数を増やすことにより、MQL5 プログラムは DLL と通信できるようになります。
MQL5 は C に似た構文を備えているため、さまざまなプログラミング言語で書かれたプログラムを MQL5 プログラムに簡単に変換できます。したがって、データ分析、人工知能、または金融ツールを取引ロボットとして使用すると、C と同じ効率を達成できます。
MQL5 の主な機能
MQL5 のいくつかのコア機能により、効率的なデータ サイエンス計算が可能になります。
プログラミング言語はレーシングカーを運転するようなもので、ドライバーはもちろん、それに適した車が不可欠です。同様に、データ サイエンティストであるあなたは、これらのユニークなスポーツ カーのドライバーです。
すべてのデータ サイエンティストや開発者は、特定のテクノロジに対して独自の要件と仕様を持っています。最適なテクノロジーの選択は、必要な視野角と機能によって異なります。したがって、最終的な選択をするのは困難です。
マルチプロセス コンピューティングを実装し、非常に高いコンピューティング速度を必要とする場合は、Julia を選択できます。 3 つの中では最も速いです。一方、大規模なプロジェクトを実行している場合は、その仕事をこなす Scala の方が良い選択となるはずです。金融商品に興味がある場合は、MQL5 が最適な選択です。
同様に、各プログラミング言語には独自の特徴と専門分野があります。したがって、要件と仕様を満たす言語を選択することが最善です。
機械学習は継続的かつ進化するプロセスです。時間が経つにつれて、標準化 ML (SML) 言語とともに登場し、Python で人気が高まりました。現在、機械学習言語はさまざまなニーズに合わせて多様に開発されています。
つまり、Python は優れた機械学習言語です。ただし、Python はデータ サイエンスに特化した言語ではなく、特定のタスクをより効率的に実行できる最新のプログラミング言語が存在します。
その結果、新興プログラミング言語が市場シェアを獲得し、機械学習の分野で成長しています。うまくいけば、これらも今後数年でさらに一般的になるでしょう。
元のリンク: https://hackernoon.com/not-only-python-problems-errors-and-alternatives
翻訳者の紹介
51CTO コミュニティ編集者である Liu Tao は、大規模な中央企業のシステムのオンライン検査と制御を担当しています。彼の主な責任は、オンラインでのシステムのスキャン漏れ、侵入テスト、ベースライン検査、その他の検査作業を厳密にレビューすることです。彼はネットワーク セキュリティ管理に長年の経験を持ち、PHP と Web の開発と防御、Linux の使用と管理の経験、コード監査、ネットワーク セキュリティ テスト、脅威マイニングの豊富な経験を持っています。 SQL 監査、SQLMAP 自動検出、XSS 監査、Metasploit 監査、CSRF 監査、Webshell 監査、maltego 監査、および Kali に基づくその他のテクノロジーに精通しています。以上がなぜ Python に代わるものを急いで探す必要があるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。