一般的な 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は旅行業界の困難を軽減できるか?

現時点では、多くの企業が、数か月前に考えていたよりも見通しが不透明であると感じているのではないかと思...

DeSRAは欠陥を検出して除去し、実際のシーンの超解像におけるGANをより完璧にします

生成的敵対的ネットワーク (GAN) を使用した画像超解像 (SR) は、リアルな詳細を復元する上で...

サービスロボット市場の最前線に立つセキュリティは注目に値する

現在、サービスロボットは中国のロボットが他のロボットを追い抜く重要なチャンスとみなされており、あらゆ...

機械学習システムの弱点: 保護が必要な 5 つの理由

[[345683]]日々の努力の究極の目的は、生活をより楽に、より便利にすることです。これが人類の歴...

...

...

...

二重の流行が迫る中、機械学習アルゴリズムは新型コロナウイルスの迅速な検出にどのように役立つのでしょうか?

[51CTO.comよりオリジナル記事]秋から冬にかけての季節が近づき、インフルエンザやCOVID...

...

報告書は、2030年までにサイバーセキュリティの分野でAIが人間に取って代わる可能性があると予測している。

新型コロナウイルス肺炎の流行は社会全体の生産と生活に影響をもたらしています。企業は、感染拡大の影響を...

AIは期待に応えられていない?これらの人為的ミスが発生した可能性がある

人工知能は、ほとんどのビジネス分野で必須のテクノロジーになりつつあります。顧客対応チャットボットとし...

情報フローシナリオにおけるAIGCの実践

1. パーソナライズされたタイトル生成パーソナライズされたタイトル生成とは、ユーザー コンテンツとパ...

「緊急天使」がロボットを救出するために前進し、事態を収拾した

科学技術の進歩と社会の発展に伴い、ロボット産業は繁栄の時代を迎えています。ロボット工学は、コンピュー...

5400億パラメータの大規模モデル進化ツリーが大幅に更新されました!最も詳細なプロンプトスキルを備えた85ページのLLM開発履歴

4月にリリースされるや否や開発者コミュニティで話題となった大規模言語モデルの概要が更新されました!こ...

人工知能が再び懸念を呼ぶ! AIが独自の「デジタル感覚」を進化させたのは、祝福か呪いか?

科学の最前線から世界を眺め、熱心に学び、宇宙を理解するホーキング博士はかつて、人工知能(AI)の発達...