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

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

平均と分散のマップ削減

一連の数値の平均と分散の式は誰にとっても明らかだと思います。マップ関数とリデュース関数の設計方法については、計算式から始めることができます。n 個の数値、つまり a1、a2....an があるとすると、平均 m=(a1+a2+...an) / n、分散 s= [(a1-m)^2+(a2-m)^2+....+(an-m)^2] / n となります。

分散式を S=[(a1^2+.....an^2)+m^m*n-2*m*(a1+a2+....an) ] / n に展開します。これに基づいて、マップ エンドの入力を (key, a1) に、出力を (1, (n1, sum1, var1)) に設定できます。n1 は各ワーカーによって計算された数値の数を表し、sum1 はこれらの数値の合計 (たとえば、a1+a2+a3...)、var1 はこれらの数値の二乗の合計 (たとえば、a1^2+a2^2+...) です。

この情報を受け取った後、reduce 側は直ちにすべての入力 n1、n2... を加算して n を取得し、sum1、sum2... を加算して sum を取得し、平均 m=sum/n を計算し、var1、var2... を加算して var を取得し、分散 S=(var+m^2*n-2*m*sum)/n を計算し、reduce 出力は (1,(m,S)) になります。

アルゴリズムコードは、mrjob の実装に基づいています (https://pythonhosted.org/mrjob/、機械学習実践の第 15 章)

  1. mrjob.job から MRJob をインポートします
  2. クラス MRmean(MRJob):
  3. def __init__(self, *args, **kwargs):
  4. super(MRmean, self).__init__(*args, **kwargs)
  5. 自己入力カウント= 0  
  6. 自己入力合計= 0  
  7. 自己.inSqSum = 0  
  8. def map(self, key, val): # ちょうど2つの引数が必要
  9. Falseの場合: 譲歩
  10. inVal =浮動小数点数(val)
  11. 自己入力カウント += 1
  12. self.inSum += inVal #各要素の合計
  13. self.inSqSum += inVal*inVal #各要素を2乗する
  14. def map_final(self):
  15. mn =自己.inSum / 自己.inCount
  16. mnSq =自己.inSqSum / 自己.inCount
  17. yield (1, [self.inCount, mn, mnSq]) #出力をマップしますが、ここではmn = sum1 /mn、 mnsq = var1 /mn です。
  18. def Reduce(自己、キー、パックされた値):
  19. cumVal = 0.0 ; cumSumSq = 0.0 ; cumN = 0.0
  20. for valArr in packedValues: #ストリーム入力から値を取得するマップ側の出力を解析する
  21. nj =浮動小数点数(valArr[0])
  22. cumN += nj
  23. cumVal += nj*float(valArr[1])
  24. cumSumSq += nj*float(valArr[2])
  25. 平均= cumVal /cumN
  26. var = (cumSumSq - 2*平均*cumVal + cumN*平均*平均)/cumN
  27. yield (mean, var) #meanとvarの出力を出力します。
  28. defステップ(self):
  29. 戻り値 ([self.mr( mapper = self .map, mapper_final = self .map_final,\
  30. レデューサー= self .reduce,)])
  31. __name__ == '__main__' の場合:
  32. MRmean.run()
オリジナルリンク: http://www.cnblogs.com/kobedeshow/p/3600328.html

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

>>:  トイレに座ってアルゴリズムを見る: クイックソート

ブログ    
ブログ    

推薦する

AIの成功には適切なデータアーキテクチャが必要

人工知能 (AI) を習得したいと考えている企業にとって、AI はコストを節約し、競争上の優位性を獲...

独占インタビュー | 独立系開発者 Li Xiaoyu: AI ツールを使用して作業効率を向上

パートナーシップ、会社登録、資金調達なしで、独立系開発者の Li Xiaoyu は継続的に実践と反復...

...

AI時代が到来。アンドリュー・ン氏はすべての子供に人工知能について教えるべきだと訴える

ChatGPTやGPT-4などの大型モデルの発表により、人工知能技術の進歩と応用が注目されるようにな...

284日間の急成長の後、ChatGPTを「模倣」したスタートアップ企業が倒産する可能性

最近、ウォール・ストリート・ジャーナルの記事によると、一部のベンチャーキャピタリストは、生成型人工知...

...

周浦データの粘り強さと抑制力:有用性はデータインテリジェンスのゴールドスタンダード

IT は遠くありません。DT はすでにここにあります。​​​ DT 時代の到来により、「データ + ...

...

2021年チューリング賞発表:高性能コンピューティングの先駆者であり、TOP500スーパーコンピューティングリストの共同創設者であるジャック・ドンガラが受賞

丸一日待った後、ついに答えが明らかになりました!先ほど、2021年のチューリング賞が発表されました。...

世界を支配するマスターアルゴリズムは存在するのでしょうか?

[[159157]]アルゴリズムは私たちの生活にますます影響を与えています。しかし、ほとんどの場合...

Nvidia に挑戦する Groq の起源は何ですか?新しいAIチップLPUの簡単な紹介

今日の人工知能分野では、「GPUがあれば十分」というのが徐々にコンセンサスになってきています。十分な...

...

このガイドを理解することで、ニューラルネットワークの「ブラックボックス」をマスターすることができます。

「人間のニューラルネットワークはどのように機能するのか?」この質問は多くのデータ サイエンティスト...

現在、CIOは企業におけるGenAIの応用価値を慎重に検討している。

ほとんどの CIO は、自社のビジネスがテクノロジーのトレンドに追いつくために GenAI の検討を...

AIによって次に職を奪われるのは字幕作成者でしょうか?

2016年頃から、多くのメディアが「どの仕事がAIに置き換えられるか」を予測し始めたとぼんやりと記...