SVM のマップ削減データマイニングアルゴリズム

SVM のマップ削減データマイニングアルゴリズム

元のアルゴリズムに並列戦略を適用するのは難しいため、他のアルゴリズムのバリアントである pegasos が並列化に適しています。以下は、アルゴリズムのプロセスです。

W=0 に初期化(ベクトル形式)

i が t の場合:

K個のサンプルをランダムに選択する

Kのjの場合:

j番目のサンプルが誤分類された場合

このサンプルを使用して重みを更新します

Wのアップデートを蓄積する

終了

以下はmrjobに基づくマップ削減バージョンです。

  1. クラスMRsvm(MRJob):
  2.  
  3. DEFAULT_INPUT_PROTOCOL = 'json_value'  
  4.  
  5. #パラメータの設定 
  6.  
  7. def __init__(self, *args, **kwargs):
  8.  
  9. super(MRsvm, self).__init__(*args, **kwargs)
  10.  
  11. self.data = pickle.load(open( 'data_path' ))を実行します。
  12.  
  13. 自己.w = 0
  14.  
  15. self.eta = 0.69 #学習率
  16.  
  17. self.dataList = [] # サンプル収集に使用するリスト
  18.  
  19. self.k = self.options.batchsize
  20.  
  21. 自己.numMappers = 1
  22.  
  23. self.t = 1 # 反復回数
  24.  
  25.  
  26. def map(self, mapperId, inVals):
  27.  
  28. #<キー、値> は <マシン マッパー ID、W 値、またはサンプル機能とラベル> に対応します。  
  29.  
  30. Falseの場合: 譲歩
  31.  
  32. #値がWに属するかサンプルIDに属するかを判断する 
  33.  
  34. inVals[0]== 'w'の場合:
  35.  
  36. 自己.w = inVals[1]
  37.  
  38. inVals[0]== 'x'の場合:
  39.  
  40. 自己.データリスト.追加(inVals[1])
  41.  
  42. inVals[0]== 't'の場合: self.t = inVals[1]
  43.  
  44.  
  45. def map_fin(self):
  46.  
  47. labels = self.data[:,-1]; X=self.data[:,0:-1]#サンプルデータの分析
  48.  
  49. self.w == 0の場合: self.w = [0.001]*shape(X)[1] # Wを初期化
  50.  
  51. self.dataListインデックス:
  52.  
  53. p = mat(self.w)*X[index,:].T #サンプルを分類する
  54.  
  55. ラベル[インデックス]*p < 1.0の場合:
  56.  
  57. yield (1, [ 'u' , index])#これは誤分類されたサンプルIDです。サンプルIDを記録します。
  58.  
  59. yield (1, [ 'w' , self.w]) #map はワーカーのwを出力する
  60.  
  61. 結果 (1, [ 't' , self.t])
  62.  
  63.  
  64. def Reduce(self, _, パックされた値):
  65.  
  66. valArr in packedVals : #parse データ、誤分類されたサンプル ID、W、反復回数
  67.  
  68. valArr[0]== 'u'の場合: self.dataList.append(valArr[1])
  69.  
  70. elif valArr[0]== 'w' の場合: self.w = valArr[1]
  71.  
  72. elif valArr[0]== 't' : self.t = valArr[1]
  73.  
  74. ラベル = self.data[:,-1]; X=self.data[:,0:-1]
  75.  
  76. wMat = mat(self.w); wDelta = mat(zeros(len(self.w)))
  77.  
  78. self.dataListインデックス:
  79.  
  80. wDelta += float (labels[index])*X[index,:] #Wを更新
  81.  
  82. eta = 1.0/(2.0*self.t) #学習率を更新
  83.  
  84. #Wへのアップデートを蓄積する 
  85.  
  86. wMat = (1.0 - 1.0/self.t)*wMat + (eta/self.k)*wDelta
  87.  
  88. mapperNum範囲(1、self.numMappers+1)の場合:
  89.  
  90. 生成(mapperNum、[ 'w' 、wMat.tolist()[0]])
  91.  
  92. self.t < self.options.iterationsの場合:
  93.  
  94. 生成(mapperNum, [ 't' , self.t+1])
  95.  
  96. jが範囲(self.k/self.numMappers)の場合:
  97.  
  98. 生成(mapperNum、[ 'x' 、random.randint(shape(self.data)[0])])
  99.  
  100.          
  101. defステップ(self):
  102.  
  103. 戻り値([self.mr(マッパー=self.map, リデューサー=self.reduce,
  104.  
  105. mapper_final = self.map_fin)] * self.options.iterations)

<<:  比較ベースのアルゴリズムでは、5 つの要素をソートするのに 7 回のパスが必要だと言われるのはなぜですか?

>>:  一般的な MapReduce データマイニングアルゴリズム: 平均と分散

ブログ    

推薦する

生成 AI は、技術チームの全員が価値を実現するのにどのように役立ちますか?

この記事は、テンセントCSIGテクニカルディレクターの黄文馨氏が[WOT2023深圳駅]カンファレン...

ビッグデータとアルゴリズムについて言えば、これらを知っておくことはあなたにとって大きな利益となるでしょう

この記事では、ビッグデータ アルゴリズムを理解するプロセスをまとめます。本文は、アルゴリズムに関する...

Googleは報道機関向けにAIツールを展開

Google は、ジャーナリストの記事作成を「支援」すると主張し、新しい人工知能ツール Genesi...

額をタップして入力できる。Googleエンジニアの「帽子型キーボード」は数え切れないほどのファンを魅了。自分で作ることもできる

キーボードと帽子を組み合わせたらどうなるでしょうか?冗談はさておき、Google 日本支社のエンジニ...

...

Java プログラミング スキル - データ構造とアルゴリズム「マージ ソート」

[[393503]]基本的な紹介マージソートは、マージの考え方を使用するソート方法です。このアルゴ...

一貫性のあるハッシュアルゴリズムとJava実装

コンシステント ハッシュ アルゴリズムは、1997 年にマサチューセッツ工科大学によって提案された分...

人工知能が企業のバックオフィスへの参入を加速

人工知能は、あらゆる種類の企業のバックオフィスに大きく浸透しつつあります。バックオフィスは、ビジネス...

高性能な MongoDB データ移行ツールの構築: Java 開発の実践

ビッグデータ時代の到来により、データ移行は多くの企業や組織が直面しなければならない課題の 1 つにな...

GenAIは将来のインシデント管理プロセスを形作っています

回答者の大多数 (59.4%) は明確なインシデント管理プロセスを導入しており、自動化のレベルはニー...

アリババ・ダモ・アカデミーは、電力網の負荷を正確に予測するための新しい時系列予測モデルを提案している。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

自然言語処理 (NLP) 開発で注目に値するオープン ソース ツールにはどのようなものがありますか?

インテリジェント音声アシスタントとチャットボットは、現在人工知能のホットスポットであり、画期的な進歩...

ビッグデータと機械学習は世界のエネルギー業界をどのように変えるのでしょうか?

機械学習、ビッグデータ、自動化は世界の産業システムに革命をもたらしており、エネルギー業界も例外ではあ...

PyTorchBigGraph を使用して超大規模グラフ モデルをトレーニングする方法は?

Facebook は、数十億のノードと数兆のエッジを持つグラフ モデルを効率的にトレーニングできる...