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

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

この記事では、ビッグデータ アルゴリズムを理解するプロセスをまとめます。本文は、アルゴリズムに関する私自身の認知プロセスとビッグデータ アルゴリズムに関する私の理解という 2 つの部分から構成されています。

このブログを書く理由はたくさんありますが、一般的には次のようになります。

  • アルゴリズムについては混乱していましたが、少し手がかりが得られたので記録を残しておきます。
  • 考えを明確に整理し、アルゴリズム学習のための 1 ~ 2 年の計画を立てます。これは単なる導入です。

アルゴリズムというと、誰もが古典的なアルゴリズムと機械アルゴリズムしか思い浮かびません。さらに、興味深いアルゴリズム、特に大量のデータ問題を解決するためのアルゴリズムがたくさんあります。これらは見落とされがちですが、これらはビッグデータアルゴリズムと見なされていると思います。

[[209097]]

0x01 認知プロセス

1. アルゴリズムは役に立たない

入社当初は、ビッグデータエンジニアはHadoopをインストールしてMRプログラムを書いて、クラスターを運用・保守するだけでいいと思っていました。アルゴリズムがとても重要なのですが、業務の中では何も感じませんでした。

長い間、私はアルゴリズムは面接で人を区別するのに役立つ単なる知識であると信じていました。 (考えてみると、この見方は間違っていません。ほとんどの開発作業では、自分で書いたアルゴリズムは必要ありません。)

2. 古典的なアルゴリズムの魅力

しばらくビッグデータ運用に携わった後、スケジューリングシステムを最適化するというタスクを受け取りました。経験豊富なGimと協力して、スケジューリングシステムを再構築する計画を設計しました。その過程で、グラフ理論に関する多くの知識ポイントを復習しました。それ以来、アルゴリズムに非常に興味を持ち、止められなくなりました。その後、ツリー関連のコンテンツを再学習し、2-3ツリー、AVLツリー、赤黒ツリーなどのデータ構造を自分で実装しました。

実際、私が興味を持った主な理由の 1 つは、これらのものが基本的にコンピュータ システム全体を構築しているという発見です。たとえば、ファイルシステムやデータベースのインデックスなどです。これらを学べば、将来仕事を失うことはないと感じます。

3. 機械学習がすべて

その後、機械学習が一気に普及し、世の中に残ったアルゴリズムは機械学習アルゴリズムと非機械学習アルゴリズムの2種類だけになりました。私の周りのデータ開発関係の友人や同級生は皆、機械学習に転向したいと言っています。筆者も例外ではなく、このトレンドに追随する準備を始めている。しかし、私には使い道がなく、あまり興味もありませんでした。ある日、機械学習の勉強に疲れたら、息抜きにLinuxをいじりたい、とふと思いつきました。そこで、機械学習への転向を一旦諦めました。将来的には、おそらくかなり広範囲にそれを使用するつもりですが、今のところは全面的に頼るつもりはありません。

機械学習に続いて、2017 年にはディープラーニングの波が到来しました。

4. ディープラーニングは新たな波

私が最も感動したのは、2017 年 5 月に人工知能プラットフォーム アーキテクトの募集要項を見たことです。具体的な要件は、データ プラットフォームの要件に加えて、ディープラーニング プラットフォームの要件がいくつかありました。

このとき、波が来たときに、その波に背を向けるのではなく、受け入れるという選択をすることができると感じるでしょう。そこで、深く多くのことを学び、基本的な理解を得て、今後何をする必要があるのか​​を大まかに知ることができました。 (半年後には、ほとんどすべて忘れてしまいました)

5. 興味深いアルゴリズムがたくさんある

作業が進むにつれて、システムは多くのパフォーマンスボトルネックに遭遇しました。機密情報の暗号化、クラスター ファイルの圧縮、負荷分散戦略の選択など、一連の調整を行って対処する必要がありました。このとき、暗号化アルゴリズム、圧縮アルゴリズム、負荷分散アルゴリズムの原理を詳細に研究する必要がありました。

これらのアルゴリズムはこれまでも存在していましたが、今日のビッグデータ シナリオでも依然として大きな役割を果たすことができます。

6. 分散アルゴリズム

これまで、私は自分が行っている仕事に少し罪悪感を感じていました。MR の作成とクラスターの管理以外には、技術的な内容が深いものは何もないように感じていました。私が誇れるのは、各システムのアーキテクチャとそれらに対する私の知識だけでした。 その後、偶然 Mooc でクラウド コンピューティングの原理に関するコースを発見し、この分野に非常に興味を持つようになりました。

学んでいくうちに、この分野は非常に複雑であることがわかりました。私たちは、多くのコンテンツを含むこれらの分散アルゴリズムと呼んでいます。

  • 2PC や Gossip のようなプロトコルは数多くあり、DHT、Paxo、Raft のようなアルゴリズムや、いくつかの複雑な原則も数多くあります。

まだ勉強を始めたばかりなので、詳しい学習計画は後ほど立てる予定です。

7. ビッグデータ アルゴリズムとは具体的に何ですか?

私は仕事や勉強の中で非常に多くのアルゴリズムに遭遇してきましたが、しばらく考えた後、ビッグデータのアルゴリズムはどのようなものか疑問に思いました。

古典的なアルゴリズムは別として、圧縮アルゴリズムと暗号化アルゴリズムは常に存在してきました。

では、機械学習はどうでしょうか。私はいつも何かがおかしいと感じています。機械学習はビッグデータを使用しますが、ビッグデータでさまざまな問題を解決することを目的としているわけではありません。実際のビッグデータの問題を解決するには、依然としてビッグデータアルゴリズムが必要です。

分散アルゴリズムは、完全に分散アルゴリズムとして考えられているわけではありません。ビッグデータ エンジニアは皆、分散システムを使用していますが、解決する問題のシナリオは多少異なります。分散アルゴリズムでは、クロックや一貫性などの問題を解決する必要があります。ビッグデータ シナリオのアルゴリズムは多少異なります。

それでは、ビッグデータのシナリオにおける問題点は何かを考える必要があります。

ビッグデータシナリオの問題点

最も顕著な特徴はデータ量が多いことであり、このデータの処理が大きな問題になるという問題をもたらします。 Hadoop は画期的なプロジェクトであり、それを超えて解決すべきシナリオがいくつかあります。

ユニーク ビジター (UV) 統計などのコレクション内の個別要素の数は、SQL では count(distinct user_id) として記述されます。ここに 1,000 億のデータ ポイントがあると仮定すると、それらを非常に高速に計算する必要があり、多少の不正確さは許容されます。どうすればよいでしょうか。

つまり、多くのシナリオでは、ある程度の精度を犠牲にして結果を素早く計算することになります。これらのアルゴリズムには幅広い応用シナリオがあります。たとえば、Redis は Hyperloglog を使用してカーディナリティ統計を実行します。

このアルゴリズムのグループは、ビッグデータ アルゴリズムの一部であると思います。コンテンツは豊富で、Bitmap、Roaring Bitmap、Hyperloglog など、特にこのことについて語る特別なブログもあります。

0x02 アルゴリズムスキルの概要

ここで簡単にまとめ、ビッグデータ エンジニアが習得し、精通し、理解する必要があると思われるアルゴリズムをいくつか示します。実際、それらの多くは仕事で頻繁に遭遇します。

学習の優先順位は?

これらのアルゴリズムを学ぶ優先順位をどのように決めるべきでしょうか? この点については冷静に考えるつもりはありません。私自身もかなり混乱しています。どれがより重要かは一概には言えません。しかし、本当に学びたいのであれば、参考資料はいくつかあります。

基本的なデータ構造とアルゴリズムについては、特に説明する必要がありません。これらは、習得すべき基本的なスキルです。

暗号化、圧縮、スケジューリングなどの他のアルゴリズムについては、詳細に学習する必要がなければ、急いで学習する必要はありません。使用するときに理解するだけで十分です。

エンジニアリング志向の学生は、分散アルゴリズムとビッグデータアルゴリズムをできるだけ早く学ぶことをお勧めします。仕事でプログラムを書くときに使用しなくても問題ありません。早めに学んでおいても害はありません。これらのアルゴリズムは、多くのビッグデータ コンポーネントの中核をなしています。

データマイニング関連のアルゴリズムは、データマイニングに従事する人にとっては絶対に学ぶべきものです。データ開発からデータマイニングに転向する人は、明確なキャリアチェンジの計画があれば、深く学び始めることができます。様子見の状態であれば、まずは自分の仕事に関連性の高いアルゴリズムをいくつか触ってみて、プロジェクトの機会があればすぐに始めることができます。

0XFF 要約

プログラムを書くときにアルゴリズムを書く必要はまったくないのではないかと思うこともありますが、アルゴリズム的思考が私に大きな利益をもたらすことは認めざるを得ません。

<<:  テックネオテクノロジーサロ​​ン - 第17号 - クラウド時代のネットワーク境界管理の実践

>>:  金融を専攻する学生は人工知能をどのように学ぶべきでしょうか?

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

推薦する

2018年、ブロックチェーンは監査人の仕事を破壊するでしょうか?

電卓が普及した後、そろばんの使い方しか知らなかった会計士は失業した。ゴールドマン・サックスは最盛期に...

アクセンチュアは、ジェネレーティブAIがビジネスにとって重要な破壊的要因であると強調

アクセンチュアがダボスで開催される世界経済フォーラム年次総会に先立ち発表した「2024 Pulse ...

「スカイアイ」が母親殺害事件の容疑者を発見する前に、私たちはいくら支払ったのでしょうか?

少し前、あるニュースが大きな衝撃を与えた。3年前の母親殺害事件の容疑者、呉謝宇が重慶江北空港で逮捕さ...

AIの「心の目」が透けて見える!ニューラルネットワークに大きな変化、モデル生成の背後にあるロジックが初めて明らかに

エイリアンの小さな頭の中で何が起こっているのか、そしてエイリアンは世界をどのように認識しているのか疑...

...

天津市が顔認証訴訟で勝利、コミュニティが顔認証を唯一のアクセス手段として使用することは違法と判断

天津の不動産管理会社は、コミュニティへの出入りの唯一の方法として顔認証を使用していたとして住民から訴...

技術楽観論者と悲観論者がシリコンバレーでAIの危険性を議論

ChatGPTの立ち上げから1年以上が経った今、2023年のAIに関する最大の話題は、技術そのもので...

LLMが互いに戦うことを学ぶと、基本モデルは集団進化の先駆けとなるかもしれない

金庸の武侠小説には両手で戦うという武術が登場します。これは周伯同が桃花島の洞窟で10年以上の厳しい修...

アルバータ大学のチームのプロジェクトは、しかめ面の細部まで完璧に再現した超リアルな肖像画を制作する

深層畳み込みニューラル ネットワークは、顕著なオブジェクトの検出に広く使用されており、最先端のパフォ...

...

Pythonを知らない人は、人工知能時代の新たな「文盲」になるだろう

各段階で、「文盲」の定義は異なります。以前は、漢字を知らないことが文盲とみなされ、後には、英語を話せ...

...

人間の世界チャンピオン3人を破り、ネイチャー誌の表紙に登場! AIドローンエクストリームレースが自動運転の新時代を切り開く

チェスや事務作業、ゲームなどの知的活動において人間が AI に圧倒されていることはもはやニュースでは...

...

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

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