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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

人工知能の3つの大きな弱点

あらゆるテクノロジーには限界があり、AI と人工知能も例外ではありません。その制限は、検出、電力消費...

...

...

IoT、ビッグデータ、AIの現状はどうなっているのでしょうか?

テクノロジーが今日の私たちの生活を根本的に変えてきたことは否定できません。私たちの先祖と比べると、今...

フランシス・バーガーは分析をよりスマートにし、難しくしない

[[386714]]北東部に拠点を置くエネルギー会社 Eversource で財務計画および分析 (...

自然言語処理はどのように機能しますか? NLPパイプラインの構築方法を段階的に教えます

コンピュータは構造化されたデータを理解するのが得意ですが、主に文化的習慣に基づいた人間の言語を理解す...

...

Objective-C でのソートアルゴリズムを学ぶ

データ構造とアルゴリズムを学習していたとき、ソートアルゴリズムをアニメーションで表現して、理解しやす...

企業向けの優れたビジネス インテリジェンス ツール 10 選

規模に関係なく、企業はニーズに合わせてカスタマイズされたビジネス インテリジェンス ツールを使用して...

テンセント・ロボティクス・ラボの第一人者が起業、ヒューマノイドロボット業界に新たな重鎮が加わる

テンセントのRobticsXロボティクス研究所の第一社員が始めたバイオニックロボットプロジェクトがつ...

2018年のAI革命で何が起こったか、何が起こらなかったか

[[253051]] 2018 年を振り返ると、人工知能はデジタル分野で急速な成長を続け、あらゆる業...

清朗智能の新型消毒ロボットが海外市場を席巻

新型コロナウイルスの感染力が高いため、防疫期間中、一般の人々は、インテリジェント消毒ロボットが医療産...

メタ:メタバース製品は引き続き顔認識技術を使用する

[[433492]] 11月5日、海外メディアの報道によると、フェイスブックは今週、同社のプラットフ...