Data Scientistを目指してた元学生のblog

Data Scientistを目指した元学生のblogです。今は機械学習エンジニアのようなことやってます.統計分析や機械学習から最適化、英語などの勉強過程も書いていこうと思います。

アルゴリズムとは? データ構造とは? (0/100) 〜データ構造編〜

 

はい。

続いて、データ構造( data structure )について書いていきます。

参考資料は、前回の3冊です、

 

 

アルゴリズム図鑑では、

「データの順番や位置関係を決める」

と書かれており。

 

Cによるアルゴリズムでは、

「計算にともなうデータを、コンピュータの記憶部分にどのように組織化して格納するか」

 

アルゴリズムイントロダクション 

「アクセス更新を容易にする目的のために、データを蓄積し組織化する方法」

また、

「どのデータ構造も全てのもう敵に対して満足に働くこはない。いくつかのデータ構造についてその長所と限界を理解することが重要である。」

書かれている。

 

アルゴリズム図鑑の説明は大雑把過ぎてわからないですね。。。

Cによるとイントロダクションの方は、

少し経験があればわかりやすいかなと思います。

 

このデータ構造によって、問題を解くことが困難になったり容易になったりします。

今後、データ構造についても考えていきたいと思います。

アルゴリズムとは? データ構造とは? (0/100) ~アルゴリズム編~

 はい。

少し時間がたってしまいましたが100個書くやつ(以後、100シリーズ)やっていきたいと思います

以前書いた100個書くという内容の初めの初め

 

そもそもアルゴリズムって?

 

データ構造って?

 

ということから入ろうと思います。

 

今回は特に実装することはないので、0番目ということで!

 

 

では、内容に入っていきたいと思います。

 

 

 

 

今回の参考にしたのは、

 

Cによるアルゴリズムとデータ構造

Cによるアルゴリズムとデータ構造

 

 (前使ってたやつ,)

 

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

 

(図書館にあったやつ) 

 

アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)

アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)

 

 (研究室にあったやつ)

 

この3冊です。

 

この3冊+私の考え方で今回は書かせていただきます。

 

 

まず、『アルゴリズム』について、

 

情報系に進んだ人なら、まずこの言葉に出会うことだろうと思います。

アルゴリズムってなに?」

その疑問から、始めていきます。

 

広辞苑では、

① アラビア表記

② 問題を解決する定型的な手法・技法。コンピュータなどで、演算手続きを指示する規則。算法

 

と書いてありました。

 

アルゴリズム図鑑には、

「計算や作業を遂行するための手順のこと。」

 

Cによるアルゴリズムとデータ構造(以下、Cによる と略します)では、

「与えられた問題を解くための、機械的操作からなる有限の手続き」

 

アルゴリズムイントロダクション(以下、イントロダクション と略します)では、

「ある値または値の集合を入力(input)として取り、ある値または値の集合を出力(output)として生成する、明確に定義された計算手続きである。」

 

と書かれています。

また、定義として、Turing machine(チューリングマシン)で計算可能*1であることをアルゴリズムの定義と書いてある場合もありますが、上にあげたアルゴリズムの定義と同等の意味をなしています。

 

 

「C」によると「イントロダクション」の定義が、情報系の人なら知っておくべき考え方ですかね。

 

アルゴリズム図鑑の定義は、初めての人に簡単に雰囲気を教える感じならいいと思います。

 プログラムを組んだことのない人は少しわかりにくい言葉かもしれませんが、

実際に組んでいくと定義の意味がしっくり理解できると思います。

以上、アルゴリズムという言葉の定義についてでした。

 

長くなってしまったので、データ構造は次書きます。

 

*1:計算可能とは、Turing machineを有限ステップ働かせて計算できること

100個くらい、というか最低100個

こんばんは、

 

題名の「100個くらい」というのはですね、

これから100個くらい有名アルゴリズムやデータの分析、データ構造を書いていこうと思いまして。

内容は、sortとか、~~問題と呼ばれる類いの物とか、ニューラルネットの類いのものとかやっていきたいと思います。

簡単なのはC+で書きます(sort etc)そのほか面倒な物と分析系は、Python (or R)で書いていこうと思います。

紹介したいなと思うことは、いくつかのアルゴリズム(もしくは、言語)で書くかもしれません。

 

と考えていました。

 

 

そこで、もし一日1つ書いたとしたら、100日ですよね。

今日から、100日後というのは、3月の23日なんですよね。

(できたらもっと早く終わらせたいな。。)

 

就活始まってますよね。。。

ということで、難しい内容もやっていきますが、簡単なやつもそこそこ入れていきます。

 

あと、データの分析をする際は、誰でも使えるデータを使って行こうと思いますので、参考にしてくれたら嬉しいです。

あと、自分の研究分野の方によった物も扱うと思いますので、面白そうなら見てってください。

 

取り扱う内容はだいたい下の本に載ってるものを扱います。

 

アルゴリズム系とデータ構造系はこのへんを教科書に

 

 京大の茨木先生の本です。

Cによるアルゴリズムとデータ構造

Cによるアルゴリズムとデータ構造

 

 

図書館にあった可愛らしい本です。

 

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

 

 統計解析、機械学習系はこのあたり。

 

 

Rによる統計解析

Rによる統計解析

 

 

 

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

 

 

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

 

 

 

Rによる機械学習 (Programmer's SELECTION)

Rによる機械学習 (Programmer's SELECTION)

 

 

 

この辺りで本の紹介疲れたんで、記事書くごとに参考資料を載せることにします。

 

では! 

 

機械学習あたりの勉強

お久しぶりです。

最近、機械学習あたりに強くなろうと思い、

機械学習についての良さそうな本を手にとってみました。

現在進行形で、ある2冊の本を読み進めています。

 

一応、pythonでコードを書くなら重回帰やロジスティック回帰などは、

書けますが、中身がどのようになっているのかなど、

あやふやにモデルを作っていたなと感じたため今回は、じっくり勉強しています。

 

読む前から良さそうだなと思って、読み始めたのですが、

今のところ、2冊ともすごくいい感じです。

 

一冊目は、これです。

 

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~

 

まだ途中ですが、いいです!!とても!!

読みやすい !!

そして、説明も多く理解とコードの内容が結びつきます(今のところ..)

そして、TensorFlow,Kerasを実際に使ってくれているので、使い方がわかってくる感じです。

また、分析環境の構築も書いてくれていて親切な感じでした。(たまたま、環境一緒でした。)

ディープラーニングメインですので、機械学習全般を網羅したい方には、おすすめしませんが、単純パーセプトロンを始めとする、ニューラルネットの類は結構さわれます。

おすすめの一冊です。

 

 

2冊目

こちらもおすすめです。

 

 

Rによる機械学習 (Programmer's SELECTION)

Rによる機械学習 (Programmer's SELECTION)

 

 こちらは、上の一冊よりも多くの手法を学べます。

決定木から線形回帰、回帰木、ニューラルネット、サポートベクトルマシン、k平均法、バギングなど本当に多いです。

こちらもまだ途中ですが、Rがまだ得意と言えない私にとっては、丁寧で嬉しい一冊です。

 

これから色々することあるのですが、

とりあえずこの2冊をしっかりこなします。

 

今回は、本2冊の紹介でした。

AP試験(応用情報技術者試験)

就職活動で少しは有利かな、と思って今年は資格を取ることにしました。

気持ち的には、基本情報は絶対に、応用は取りたいなーくらいでした。

 

それで、今日そのAP試験がありまして、(基本情報は春取れた)

なんとなくなんですけど、

落ちたと思います。

午前は結果が出ていたので採点すると、

63/80 と合格ライン(48~ 六割ごえ)を超えていました。

解いている時から、ある程度できてる感触があったので午前はとく話すことないんですけど、午後ですね。

 

受けてみた感想として、5割いってんかな?くらいの感じでした。

 

20日程度しか勉強する期間がなかったので、勉強量が足りないと言われたらおしまいですが、基本情報は一月半で取れたので今回もいけるかなと。

 

それに加えて、

教材の範囲をしっかりできていたし、過去問も解くことができていたので試験前日には

「これはいけるなーー」とかんちがいしていました。

 

実際のところは、

午後の試験で、ネットワークをみた時、「SDN?」と知らない単語と遭遇し、変な汗が出てしまうくらいやられました。

 

ネットワークに一番時間を費やしたのに

 

他の分野もそこそこだったし合格は難しいかなと。。。

 

今回、ダメだったなと思った反省事項は、過去の参考書を基本に勉強をしていたことだと思います。大学の図書館にあった最新の本なのですが、26年度向け、、、、、

つまり三年前の試験向けの参考書です。

 

ドッグイヤーと例えられる技術の分野では、

やはり常に最新の知識が求められているのですね。

 

改めてそう思いました。

 

ついでに基本情報は2年前の教材でいけました。

 

最後に、

勉強にしようした教材とサイトを載せておきますね。

 応用情報はこれの26年度

平成29年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)

平成29年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)

 

 

 基本情報はこれの27年度、

 を使用していました。

 

ですが一番お世話になったのは、

このサイトですね。

www.ap-siken.com

 

これからは、スキルアップ重視で生活していこうと思います^^

 

明日からも頑張るぞーーー

 

テスト期間が終わりました!

やっとテスト期間が終わりました。

 

けど、来月にAPの試験があるんですよね。

 

他にも、色々やりたかったことができなかったのでこれからやっていきたいと思います。

 

ところで、今回のテスト範囲にマッチング理論の話があり、1対1マッチングや、1対多のマッチングの中を理解する際、TCCとDAアルゴリズムpythonのコードで書いたんでのっけようと思います。

 

雑なコードですが、誰かのやくに立てたらいいなと思います。

 

コードについてですが、基本的にGitHubで管理したいなと思っていますが、GitHub慣れてないので,ブログを書くに当たってGitHubにコードあげたりして慣れていこうと思います。

 

時間あるとき、GitHubであげるので少々お待ちをー

 

夏季休業終了〜〜

夏季休業が終わりました!!

短い。。。

 

 

終わってみて

平日はインターン、週末は何かしらしてて、まあまあ充実していたと思います。

 

休暇に入る前に読もうと思っていた本、結局どれも半分くらいしか終わってないです。

量が多すぎる。欲張らずに一つ一つやるべきですかね?

 

GCP本と養成読本の一冊は終わったので後日、内容をかるーく触れてみます。

 

これから、テスト期間入るのでテスト勉強に負けないくらい個人での勉強も頑張って行きます。