Smile(Statistical Machine Intelligence and Learning Engine)は、JavaとScalaの高速で包括的な機械学習、NLP、線形代数、グラフ、補間、視覚化システムです。高度なデータ構造とアルゴリズムにより、Smileは最新のパフォーマンスを提供します。 Smileは十分に文書化されています。プログラミングガイドや詳細については、プロジェクトWebサイトをご覧ください。
Smileは、分類、回帰、クラスタリング、アソシエーションルールマイニング、機能選択、マニホールド学習、多次元スケーリング、遺伝的アルゴリズム、値の不足、効率的な最近傍検索などを含む機械学習のあらゆる側面をカバーします。
笑顔は、次の主要な機械学習アルゴリズムを実装します。
分類:ベクトルマシン、決定ツリー、順守、勾配ブースト、ランダムフォレスト、ロジスティック回帰、ニューラルネットワーク、RBFネットワーク、最大エントロピー分類器、KNN、ナイーブベイジアン、フィッシャー/線形/四辺形/正規/正規化判別分析。
回帰:ベクトル回帰、ガウスプロセス、回帰ツリー、勾配ブースト、ランダムフォレスト、RBFネットワーク、OLS、ラッソ、エラスティックネット、リッジ回帰。
機能の選択:遺伝的アルゴリズムベースの特徴選択、アンサンブル学習ベースの特徴選択、Treeshap、信号ノイズ比、合計四角比。
クラスタリング:バーチ、クララン、dbscan、denclue、決定論的アニーリング、k-means、x-mean、g-means、g-means、神経ガス、神経ガスの成長、階層的クラスタリング、シーケンシャル情報ボトルネック、自己組織化マップ、スペクトルクラスタリング、最小エントロピークラスタリング。
アソシエーションルールと頻繁なアイテムセットマイニング: FP-Growthマイニングアルゴリズム。
マニホールド学習: ISOMAP、LLE、LAPLACIAN EIGENMAP、T-SNE、UMAP、PCA、カーネルPCA、確率PCA、GHA、ランダム投影、ICA。
多次元スケーリング:クラシックMD、等張MD、サンモンマッピング。
最近隣の検索: BK-Tree、カバーツリー、KD-Tree、Simhash、LSH。
シーケンス学習:隠されたマルコフモデル、条件付きランダムフィールド。
自然言語処理:文のスプリッターとトークネザー、BigRam統計テスト、フレーズ抽出器、キーワード抽出器、ステムマー、POSタグ付け、関連ランキング
プロジェクトpom.xmlファイルに以下を追加することにより、Maven Centralリポジトリを介してライブラリを使用できます。
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-core</artifactId>
<version>4.0.0</version>
</dependency>
NLPには、artifactid smile-nlpを使用してください。
Scala APIの場合は、使用してください
libraryDependencies += "com.github.haifengl" %% "smile-scala" % "4.0.0"
Kotlin APIの場合、Gradleビルドスクリプトのdependenciesセクションに以下を追加します。
implementation("com.github.haifengl:smile-kotlin:4.0.0")
Clojure APIの場合、プロジェクトに次の依存関係を追加するか、ファイルを作成します。
[org.clojars.haifengl/smile "4.0.0"]
いくつかのアルゴリズムは、BLAとLAPACKに依存しています(例:マニホールド学習、いくつかのクラスタリングアルゴリズム、ガウスプロセス回帰、MLPなど)。これらのアルゴリズムを使用するには、最適化されたマトリックス計算にOpenblasを含める必要があります。
libraryDependencies ++= Seq(
"org.bytedeco" % "javacpp" % "1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
"org.bytedeco" % "openblas" % "0.3.28-1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
"org.bytedeco" % "arpack-ng" % "3.9.1-1.5.11" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64"
)
この例では、サポートされているすべての64ビットプラットフォームを含め、32ビットプラットフォームをフィルタリングします。ユーザーは、スペースを保存するために必要なプラットフォームのみを含める必要があります。
他のBLAの実装を好む場合は、「java.library.path」またはクラスパスで見つかったライブラリを使用して、「org.bytedeco.openblas.load」システムプロパティで指定します。たとえば、Mac OS XのAccelerate FrameworkのBLASライブラリを使用するには、 -Dorg.bytedeco.openblas.load=blasなどのオプションを渡すことができます。
MKLのデフォルトインストールがある場合、またはMKLバイナリのフルバージョンを含む次のモジュールを単に含める場合、SmileはMKLに自動的に切り替えます。
libraryDependencies ++= {
val version = "2025.0-1.5.11"
Seq(
"org.bytedeco" % "mkl-platform" % version,
"org.bytedeco" % "mkl-platform-redist" % version
)
}
Smileは、商業ディストリビューター(OEM、ISV、VARなど)とオープンソースプロジェクトの両方の開発と流通のニーズを満たすように設計されたデュアルライセンスモデルを採用しています。詳細については、ライセンスをご覧ください。
Smileには、Java、Scala、Kotlin用のインタラクティブシェルが付属しています。リリースページからパッケージ化されたスマイルをダウンロードしてください。スマイルのホームディレクトリで、タイプ
./bin/smile
Scalaシェルに入るには。シェルで有効なSCALA式を実行できます。最も簡単な場合、それを計算機として使用できます。それに加えて、すべての高レベルのスマイルオペレーターはシェルで事前に定義されています。デフォルトでは、シェルは最大75%のメモリを使用します。大規模なデータを処理するためにさらにメモリが必要な場合は、オプション-J-Xmxまたは-XX:MaxRAMPercentageを使用します。例えば、
./bin/smile -J-Xmx30G
メモリおよびその他のJVM設定について、構成ファイル./conf/smile.iniを変更することもできます。
JavaのJShell、タイプを使用するには
./bin/jshell.sh
ClassPathには笑顔の瓶があります。同様に、実行します
./bin/kotlin.sh
Kotlin Replを入力します。
ほとんどのモデルは、Java Serializableインターフェイス(すべての分類子がSerializableインターフェイスをサポートする)をサポートしているため、Sparkで使用できます。プロトスタフは、フォワードバックワードの互換性(スキーマの進化)と検証をサポートする優れた代替手段です。 XMLを超えて、ProtostuffはJSON、YAML、Protobufなどの他の多くの形式をサポートしています。
Smileは、スイングベースのデータ視覚化ライブラリSmilePlotを提供します。これは、散布図、ラインプロット、階段プロット、バープロット、ボックスプロット、ヒストグラム、3Dヒストグラム、樹状図、HeatMap、HEXMAP、QQプロット、輪郭プロット、表面、およびワイヤーフレームを提供します。
SmilePlotを使用するには、依存関係に以下を追加します
<dependency>
<groupId>com.github.haifengl</groupId>
<artifactId>smile-plot</artifactId>
<version>4.0.0</version>
</dependency>
Smileは、宣言的アプローチでのデータの視覚化もサポートしています。 smile.plot.vega packageを使用すると、視覚化をデータからグラフィカルマーク(例、ポイント、バーなど)のプロパティまでのマッピングとして説明する仕様を作成できます。仕様は、Vega-Liteに基づいています。 Vega-Liteコンパイラは、軸、凡例、スケールなどの視覚化コンポーネントを自動的に生成します。次に、慎重に設計されたルールのセットに基づいて、これらのコンポーネントのプロパティを決定します。
カーネルPCA | Isomap |
多次元スケーリング | som |
ニューラルネットワーク | SVM |
階層クラスタリング | X-means |
dbscan | ニューラルガス |
ウェーブレット | 指数のファミリー混合物 |