ビッグデータ学習プロセスが重要な側面が火花であるが、我々は詳細な可能性があるので、多くの知識で火花が、多くの人々は、ミリリットルとmllibの違いを混同する最も可能性が高い、愚かな言うことができませんでした両者の違いを理解しています。
1.スパークML
1)が定義されます。箱舟の機械学習。
2)オブジェクト操作:データフレーム。
データフレームは、データセット[行]である部分集合データセットです。DataSetはRDDのカプセル化、および最適化の多くを行うSQLに似た操作です。
2.スパークMlLib
1)に定義されます。MLlibはスパーク機械学習(ML)ライブラリです。目標は、実用的な機械学習の拡張性と使いやすさを作ることです。ハイレベルでは、以下のツールを提供しています。
- MLアルゴリズム:従来の学習アルゴリズムは、このような分類、回帰、クラスタリング及び協調フィルタリングなど
- 前記特徴抽出、変換、選択と次元削減
- パイプライン:建物、評価および調整MLパイプラインツール
- 永続性:保存と読み込みのアルゴリズム、モデルとパイプライン
- ユーティリティ:線形代数、統計、データ処理、など
2)オブジェクト操作:RDD
スパーク2.0を起動し、API spark.mllib RDDに基づいてパッケージには、メンテナンスモードに入りました。唯一のバグを修正、新機能部門を追加しません。スパークAPIを学習メインマシンは今API spark.mlパッケージのデータフレームをベースにしています。
主な違いと接続3. MLとMLlib
- 最も一般的に使用される機械学習機能2つのライブラリーは、需要を満たすことができます。
- Spark3.0後、MLlib、総合的なWebベースのMLを放棄したことになるので、スパークの関係者は、MLをお勧めします。オブジェクトがデータフレームであるML操作するので、操作はRDDよりもはるかに便利になります。新しい学生が直接接触スパークMLを使用することができますことをお勧めします。
- MLはメイン操作DATAFRAMEで、操作は両方のデータセットが同じではないためと言うことですMLlib RDD、です。ベース操作に比べMLlibはRDD、MLデータフレーム内の抽象化のより高いレベルの低いデータを提供し、動作を結合するステップと
- データフレームとRDDとの間の関係は何ですか?そしてRDDデータセットのために包装され、そして最適化の多くを行うSQLのような操作、データフレームのデータセットは、サブセット、すなわちデータセット[行]です。
- ベース操作に比べMLlibはRDD、MLデータフレーム内の抽象化のより高いレベルの低いデータを提供し、動作を結合するステップと
- ML動作はsklearnように、多くの操作が共にパイプストリングの形で(アルゴリズム/特徴抽出/変換特性)であり、その後、データは、この導管を流れるさせることができ、パイプラインを使用することができます。あなたは、タスクの組み合わせを行う際にどのように簡単にLinuxのパイプについての脳を作ることができます。
- MLモデルは、モデルのトレーニングとして統一されたユーザー・インターフェース・アルゴリズムは、適合している提供して何に関係なく、MLlibとは異なり、異なるモデルは、列車の多様性を持っています。
- MLlibは、この状態は通常、唯一の新機能を追加しないバグを修復され、spark2.0後の保守状態に入ります。
- MLより多くの機能のランダムフォレストサポート:重要度を含め、出力の確率を予測するなど、及びMLlibはサポートされていません。
2本の詳細な要約の違い
1、プログラミングプロセス
(1)機械学習アルゴリズムの構築は、同じ手順ではありません:MLは、パイプラインの使用を促進する、水へのデータのように、水は、もう一方の端から、パイプセクションから流れます。
(2)大体概念:
データフレーム=>パイプライン=> A newDataFrame
パイプライン:推定量までトランスフォーマーとさえ、いくつかのプロセスによってデータ処理
トランスフォーマー:入:DATAFRAME =>出:データフレーム
見積もり:入:DATAFRAME =>出:トランスフォーマー
2、アルゴリズムインターフェース
アルゴリズム・インターフェース(1)spark.mllibはRDDSに基づいています。
アルゴリズムインタフェース(2)spark.mlは、データフレームに基づいています。
実際の使用には、より適切なを作成する機能、プロジェクトへのデータモデルから、その後のトレーニングと一連のアルゴリズムに基づいてデータフレーム内の作業mlの一連のクリーニング確立MLpipelineを含む、ミリリットルをお勧めします。
例えば、ナイーブベイズ例:
モデルのトレーニングではnaiveBayes.fit使用している場合(データセットを:データセットは、[]):NaiveBayesModelがモデルを訓練するために、戻り値はnaiveBayesModelで、あなたがnaiveBayesModel.transform使用することができます(データセット:データセットを[]):データフレームは、モデルをテストするために、そして、このモデルを用いて評価し、上記のプロセスを参照することができるモデルは、予測を形質転換するために使用され、予測値は、他の手段によって使用される値を選択するために取ることができる、「」選択「$」のラベルを使用するときにAを使用することができます値の形式。SQLと同様に、理解しやすいし、エントリに低い障壁を使用します。
3、抽象化の度合い
(1)MLlib主RDDに基づいて、抽象化レベルは高く十分ではありません。
(2)ML主にパイプライン処理の抽象データに一つのアルゴリズムにパイプラインコンポーネント対応するが、他の任意のアルゴリズムで置き換えられてもよく、他のプロセス、そのようなアルゴリズムおよびデータ処理は、低いカップリングを分離してみましょう。
図4、技術的ポイント
データ・セットのタイプは同じではありません
APIの(1)mLをデータセットに配向されます。
(2)は、RDDの顔をmllib。
データセットとRDDの違いは何ですか?
データセットは、RDDの下部にあります。RDDのためのデータセットは、例えば、同様の言語SQL黒魔術を持っているより深い最適化であった、データセットを使用すると、コンパイル時にエラーことができますので、様々なコンビネータ(マップ、foreachの、など)の性能が良くなる静的な型解析をサポートしています。
ビッグデータ学習プロセスが重要な側面が火花であるが、我々は詳細な可能性があるので、多くの知識で火花が、多くの人々は、ミリリットルとmllibの違いを混同する最も可能性が高い、愚かな言うことができませんでした両者の違いを理解しています。