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 データマイニングアルゴリズム: 平均と分散

ブログ    
ブログ    

推薦する

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

工業情報化部が発表したデータによると、2020年1月から12月まで、全国の産業用ロボットの生産台数は...

人工知能のいくつかの重要な技術をご存知ですか?

今日は人工的にしか開発できない重要な技術をいくつか紹介します。音声認識からスマートホーム、人間と機械...

データが限られている場合にディープラーニングモデルを最適化する方法

[[198229]]転移学習転移学習とは、ある問題で訓練したモデルを、簡単な調整で新しい問題に適した...

MITの新しい水中ロボット!機械学習を使用して 18 時間でパトリック スターを作成する (ダニエラ ラスとの共著)

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

人工知能の進化の限界は肉体にある

[[233888]] AIの未来は私たち自身のニューラルネットワークを複製することにある私たちは、チ...

...

人工知能の登場により、一人暮らしの高齢者の介護は難しくなくなり、高齢者介護はテクノロジーの時代に入った

[[389635]]私の国では高齢化が進み、高齢者介護は長い間、社会全体で広く関心を集めるテーマとな...

Java プログラミング スキル - データ構造とアルゴリズム「非再帰的バイナリ検索」

[[396063]]基本的な紹介1. バイナリ検索は、順序付けられたシリーズ(数字や文字など)の検...

iPhoneXの顔認識はどのようなデータセキュリティの考え方を誘発するのでしょうか?

[[204618]]今年のAppleカンファレンスでは、iPhone Xの「フロントバン」が観客の...

...

...

自動運転の浮き沈み:バブルが消えた後

[51CTO.comよりオリジナル記事] 静かな2019年を経て、自動運転業界は新年を迎え、徐々に活...

民間ドローンの産業応用シナリオに関する簡単な議論

[[357620]]科学技術の発展に伴い、人類は機械工学、材料科学、電子技術、自動制御、コンピュータ...

...