アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2019年09月23日

【まとめ】英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析





英語版のUdemy講座、"Spark and Python for Big Data with PySpark"の受講を完了したので最初に立てた目標の達成具合、自己評価や、コースをやり終えての感想をまとめる。

目次
1、受講前のゴールイメージとスケジュールの確認
2、講義に関して
3、残念なポイント
3、次回に受講に生かしたいこと。教訓とか

受講前のゴールイメージとスケジュールの確認

■受講前のゴールイメージとスケジュールの確認
・環境設定が一通り操作ができる→〇
・Spark, PySparkを用いた解析ロジックを説明できる→〇
・Spark, PySparkを用いて解析を行える→〇
・Spark, PySpark, MLibを用いて機械学習のプログラムを作成できる→〇
・Sparkでの自然言語処理を説明できる→△

おおむね、イメージした通り、マスターできたと思う。自然言語処理とStreamの処理に関してはまだ勉強の余地あり。


■スケジュール
  • 10日程度で完了するつもりで受講をする。→10日で完了

大体、1日10%(動画1時間くらい)を目標に進められた。

■良かった点、難しかった点
・良かった点:
 ・環境準備の部分は1日にたくさんするめることができた。
 ・一部辛い時期もあったがおおむね計画通りに進められた。

・難しかった点:
 ・講義の中盤の中だるみが辛い
 ・講義の山場の後半は逆に目標の1日10%進めるのが難しかった。
 ・開発環境が不十分でVirtualboxの取り回しに時間を要してしまった。
 ・環境構築でつまずくとやたらと時間がかかってしまう。

1日1時間動画+コーディングは負荷的にそこそこ妥当な気がする。

■講義に関して

・英語
 ・全体的には特に問題なし。
 ・集中力が低くなっていると頭に入らないので注意。中盤、後半は何度か講義を聞きなおした。

・内容
 ・機械学習に関してそこそこ自信を持てるようになった気がする。sparkメインのつもりだったので想定外だが非常に良かった。
 ・結構高度であったが、まず初めの1つ目を丁寧にマスターしたおかげでその後も同じパターンの繰り返しが多くスムーズに進められた。
 ・プロジェクト演習は非常に良かった。これをやる直前にいったん知識の定着の確認をして臨んだため、結果もそれなりにできて達成感も味わえた。
 ・かの有名なタイタニックのデータ解析ができたのがうれしかった。
 ・講座のQAが充実しているのでつまずいたところを調べるのに重宝した。

■残念なポイント

・Twitterのプロジェクトが中途半端な状態
・タイタニックの解析をもっと使ってほしかった。このアルゴリズムでやればもっと良くなるとか。
・詰まった場合に自分で独自に調査をしたが、結局QAに書いてあった。
・自分のPC環境いまいち
・AWS EC2,DataBricksとか他の環境を触れられなかった。

■次回に受講に生かしたいこと。教訓とか

・VirtualBoxにあった十分な開発環境での受講→PC購入済
・完全にマスターする必要があるところでは立ち止まってでも十分、コード書きの練習もしてマスターしてから進む(深い理解のために)
・手を動かして実際にコードを書く。動画を見て頭で理解しただけでは不十分。
・コードサマリを作り、これをもとにコードの再現を行う。復習の時も使える。
・疲れているときはさっさと寝る。特に英語の講義は眠いとまったく頭に入らない。
・1日動画1時間で全体スケジュールを見積もる。受講の際は前倒しで進める。辛いときは無理しない(理解度が下がるので)。
・やり残し、心残りの部分を書き留めてリベンジをしたい。


このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

2019年09月22日

【10日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析




進捗100%(+9%)

■ついに10日目に突入!
予定では本日完了になるはずである。
残りの講座の動画の時間は57分となっている。
最後のプロジェクト演習はTwitterのタグ解析プロジェクトだ。

■Twitterデベロッパー登録!
このプロジェクトを進めるためにはTwitterのデベロッパー登録が必要だ。
いきなり敷居が高くなって今日中の完了が危ぶまれたが、申請をすると瞬時にOKが出て何とか登録を行うことができた。

■Streaming プロジェクトの実行
最終回のプロジェクトなのでどれだけ難しいかと思いきや、以外にすんなりと進んだ。
コードが多過ぎるので、jupyter notebookの保存ファイルのコマンドを実行するだけだけであった。
ちょっと拍子抜けな感じ。
しかしながら、これだけの作業だがプログラムをいざ実行するとエラーが出てしまい、うまくいかない。
最初の数回はタイポなどのミスだったが、それを修正しても一向にうまくいかない。QAセクションを見ると類似した質問があるので、とりあえず、この質問をウォッチすることにして、何とか100%として完了とした。


このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

2019年09月21日

【9日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析





進捗91%(+10%)

この講座も佳境になってきた。
NLPのより実践的なコードの学習が終わると最後のセクションのSpark Streamingの学習となる。
NLPの学習だが、週末のごたごたもあり、なかなか思い通りに進んでいない。
コードの内容は理解しているのだが、自分でコードを書くところがイマイチ集中できなくて進まない。
Token分割などたいして難しいわけでもないのだが。。。
早く、次のブロックチェーンの勉強に入りたい!

とりあえず、気晴らしに前のチャプターを見返すとAWSのEC2、Databricks,AWS EMR Clusterの部分が未完了となっていることに気づいた。
今回、VirtualBoxを使って学習を行っているので飛ばしたところだ。
これらを完了状態して、何とか進捗は91%を確保した。

蛇足だが、この講座はVirtual BoxでUbuntuを動作させ、Ubuntu上でpysparkのコードを実行して受講を進めている。
しかし、このVirtual Boxの動作が不安定で高い頻度でゲストOSのUbuntuがフリーズするため、定期的にゲストOSの電源をリセットしながら進めている。
だから、余計に時間がかかったり、集中力を下げる原因になっている。

この状態を解消するため、Windowsでも環境を作りたいところだが、Ubuntuはver.17から64bitのみのリリースになっているが、残念ながら私のPC環境ではCPUが古すぎるため、64bitOSのVirtualBox仮想環境を作ることができない、ということが分かった。

さいわい、今、消費税増税前のセールでPCが叩き売られている。
よい機会なので購入をした。
(ただし、現在在庫切れにつき、いつ納品されるかわからない状態だが)


このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

2019年09月20日

【8日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析





進捗81%(+11%)

K-means Clusteringのプロジェクト演習まで来た。
いつもの通り、サマリを作っておき、ゼロから自分でコードを再生できるところまで練習した状態で状態でプロジェクト演習を行う。

サマリ:
・データの読み込み
・KMeans宣言
・入力データ作成
・スケール適用
・入力データをスケール結果に置換
・KMeans適用
・wssse
・クラスタリングのセンター
・分類確認


プロジェクト演習は何の問題もなく完了。

次にRecommender Systemのセクションに入る。
このセクションはプロジェクト演習なし。

リコメンダーシステムは大きく分けて2つあるとのこと。
?@コンテンツベース
?ACF(コラボレーティブフィルタリング)

pyspark.mlライブラリでは、ALSという?Aのコラボレーティブフィルタリングを
サポートしている。

サクッと終わらせてNLPに入る。

Natural Language Processing(NLP)とはテキストをクラスタリングしたり、比較することにより、おすすめの本を表示したり、Spamメールを摘出をしたり、ドキュメントの分類や解析を行ったりすることができる。
アルゴリズムとしては、TF−IDF(Term Frequency Inverse Document Frequency)が真っ先に挙げれる。
テキスト解析するためには、テキストを単語単位に分解したり、解析に不要な単語(aとかtheとか)を取り除くような処理が必要になる。
pysparkにはこれの機能が備わっているので、一通りの動作をコーディングしながら確認した。


このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

タグ: SPARK 機械学習

2019年09月19日

【7日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析




進捗70%(+5%)

Decision Tree&RandomForestsのプロジェクト演習完了。
できたはできたが、模範解答とは違ったが。そろそろ、習ったことだけでなく、
それをきっかけに、ライブラリの詳細をドキュメントで見ていく必要があるのかなあ。
理論の知識も充実していく必要がありそう。

K-means Clusteringのセクションへ入った。
K-means Clustring(K平均法)はクラスタリングのアルゴリズムだ。与えられたK個にクラスタへ分類を行う。
処理の流れは

1、featureの取り出し
2、シード設定
3、クラスタリング実行
4、コスト計算、中心計算

といった流れだ。
教師なしのアルゴリズムであるため、クラスタリング実行の際は、元データを学習データ、テストデータへ振り分ける処理は必要がない。
この部分が今まで習った機械学習と大きく異なる点だ。
また、距離の概念が入るため、扱うのは数値になるので、StringIndexerとかは必要なさそうだ。
その分、コードもシンプルになるので、簡単に感じる。



このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

タグ: 機械学習

2019年09月18日

【6日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析




進捗65%(+7%)

Logistic Regressionの学習を終えてDecision とRandomForestsのセクションに突入。

Logistic Regressionの学習ではPipeLineのところで躓いた。
PipleLineに渡すのリストを文字列と勘違いして、しばらく悩んでしまった。
後から考えてみるとエラーメッセージも正しく出ていたし、普通に考えて、関数を1つずつ実行するのだから、リストが文字列になる訳がないのだが。。。
何とかプロジェクト練習問題も終えることができた。

Decision とRandomForestsは、スラスラ進んでいる。
コーディングは特に問題ないが実行結果の評価方法の理解が若干怪しい。
いろいろ評価パラメータが出てくるので何で評価をしているのかを深く理解したい。

機械学習のアルゴリズムだが、

1、データ読み込み
2、データ準備
3、トレーニング
4、テスト
5、評価

の流れで進むので処理がほとんど同じようコーディングの流れになっているので覚えやすい。
普通に考えて、1,2,5はアルゴリズムによらず、だいたい一緒だし、強いて言うなら、入力データの文字列をインデックスに変換する処理が必要になるくらいだ。
また、機械学習の要の3,4も結局は関数に入力データを入れて、計算するだけなので、どれもこれも一緒になってしまうのだろう。

できれば、今週末には受講を完了したい。


このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

タグ: 機械学習

2019年09月17日

【5日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析




進捗58%(+3%)

Logistic Regressionの学習を進めている。
疲れ気味のため、進捗が少ない。
模擬プロジェクト練習問題に入る前の知識の確認中。
Logistic Regressionの学習中に気が付いた点を2点メモしておく。

1、DataFram.head()と head(1)を実行した結果が微妙に違うのに気が付いた。

・df.head() →Rowオブジェクト
・df.head(1) →Rowオブジェクト1個の配列

先頭データの内容を表示する際にforループする際にはそれぞれ

・df.head()の場合
 ・for i in df.head():print(i)

・df.head(1)の場合
 ・for i in df.head(1)[0]:print(i)

とする。

2、Pipelineをインポートする際に"pipeline"(全部小文字)が選択肢に出てくるが、
これは使わず"PipeLine"を使うこと。

×:from pyspark.ml import pipeline

〇:from pyspark.ml import Pipeline

10分くらい時間をロスしてしまった。
うーん、紛らわしい。

このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

2019年09月16日

【4日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析








まあまあ順調。
達成感があり、楽しい。

LinearRegressionの学習。
一通り理論の説明とコードの説明を受講した後、自分で0から機械学習のコードが再現できるように時間をかけて練習を重ねた。
再現をする際にpyspark.mlとpyspark.mllibの2つが出てきてmllibを選択するとRDD用のAPIのため、現在勉強しているDataFrameの場合はその後必要なAPIが出てこなくなり、うまくコード化ができない罠に引っかかってしまった。
自動補完に頼りきりになったり、大体感覚で覚えているのではだめで、実際に自分で0からコードを書いて練習することが良いことを再認識した。

この章の最後は模擬プロジェクトでの練習問題だ。
この部分はリアル感があり、非常に面白い。背景説明から入り、データを与えられて、機械学習のモデルを作るのだ。
0からのLinearRegressionの機械学習のコードをかけるようにしてから臨んだため、スラスラ解くことができ、非常に達成感がある。

Logistic Regressionの学習。
LinearRegressionと違い、分類をするための機械学習だ。
ただし、LinearRegressionのコードと似ている所もあるので、とっつきやすい。タイタニックを題材とした問題をスタートするところで本日の学習は終わりとした。

このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

タグ: SPARK 機械学習

2019年09月15日

【3日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析





進捗47%(+13%)

順調ではあるが苦労した。

知識の定着が十分でなかったため、DataFrameの章の最後の練習問題に非常に時間がかかった。
原因を考えるといろいろ思い当たることがある。
・進捗を優先したために理解が不十分
・英語講義を理解せずに聞き流していた
・コマンド自体は簡単なので使うときに調ればいいや、と思い覚えなかった
・多数のコマンドを短時間にあてもなく説明されるのでストーリー立てて思い出すのが難しい
・勉強するにあたり目的意識が低い(仕事に直結するわけではない)

結局、問題の半分くらいで自力で解くことは中断し、DataFrameの章の復習をして自分なりにまとめてみた。そして、練習問題をやり直したがそれでもちょこちょこ確認が必要になった。
自分で重要と思って覚えているところと実際に手を動かして解く際に引っかかる場所が違っている感じだ。
まだ自分の頭の中でpysparkの勘所と整理ができていないのだろう。
時間がたったら、練習問題をやり直すことにして、次の機械学習の章に突入した。
これから1つの講義が終わったら、自分なりに何を学んだかメモをするようにする。
(ただし、概要のみ。これをトリガーに詳細を思い出せるようなメモ程度)

●DataFrameの章で学んだことのメモ
・pysparkの初期化/修了
・データのロード
 ・read.csv, read.json
 ・オプション指定
・データの基本情報
 ・describe,printSchema
・データの表示
 ・show, head
・データタイプの確認、設定
 ・type
・データ操作
 ・列選択、表示
  ["列名"], Select(["列名"])
 ・列追加
  withColumn
  withColumnRenamed
 ・sqlコマンド使用
  ・createOrReplaceTempView("名前")
  ・spark.sql("コマンド")
 ・行選択、表示
  ・filter
  ・グループ化
   ・groupBy
 ・行の辞書変換
  ・asDict()
・計算
 ・max,min,count,mean,sum(列),selectと組み合わせて使う。
 ・agg({列:上の関数})

・関数
 ・準備
  functions,
 ・関数
  countDistinct,avg,stddev
  alias
 ・数値フォーマット
  ・準備
   ・format_number
 ・ソート
  ・orderBy
   ・desc()

・日付処理
 ・関数
  dayofmonth,hour,dayofyear,month,year,weekofyear,data_format

・データなしの処理
 ・カラムで、個数で、どれか、すべて
  ・na.drop(how=any|all,thresh=None,subset=None)
 ・データ補完
  ・na.fill()
  ・中央値で補完mean




このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

タグ: Python SPARK

2019年09月14日

【2日目成果] 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析




進捗34%(+7%)

思った通りに進められてない。+10%くらいは進みたいのだが...

講座自体は難しくないのだが、いくつか問題?課題?に遭遇し、解決をしながら進めている。

まず、VirtualBoxをインストールした際に画面の解像度が低いままでスタートしていた。いい加減、受講しにくいため、調査、設定を行い、Guest Additions CDのインストールを行い、解像度を上げることができ、事なきを得た。

次に、sparkが思うように動作しない現象が起きた。
所定のコマンドを実行するとエラーが表示されてしまう現象だ。調べてみるとsparkはjdk8の環境で開発されているようであり、使用しているUbuntu18.04の環境はJDK11であった。このため、javaのバージョンの不整合が起こりエラーになっているようだ。講座のQAを調べると同様の現象の書き込みがあった。open-jdk8をダウンロードして使用すればよいとのことで、環境構築をやり直して正常に結果が表示されるようになった。

受講者が多く、QAが盛んであると困ったときの解決の情報が充実しており、非常に助かる。


このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

検索
<< 2021年12月 >>
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
最新記事
タグクラウド
カテゴリーアーカイブ
月別アーカイブ
プロフィール
peter3qさんの画像
peter3q
エンジニアとして働いている40代の会社員です。 仕事でメインに使用している言語はC/C++です。 プライベートでは、大学生の息子と中学生の娘がいて、 週末、料理をし、毎年、梅シロップを付けています。
×

この広告は30日以上新しい記事の更新がないブログに表示されております。

Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: