新規記事の投稿を行うことで、非表示にすることが可能です。
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
全般ランキング
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解析
進捗55%(+8%)
まあまあ順調。
達成感があり、楽しい。
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
全般ランキング
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
全般ランキング
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
全般ランキング
2019年09月13日
【1日目成果] 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗27%
順調に進んでいる。
といっても、ほとんどは環境のセットアップとPythonの基礎の復習だ。
演習環境解いてVirtualbox、AWS EC2、DataBricksの3つを用意している。
今回は、最も簡単なVirtualboxで環境を構築して、いったん講座を完了しようと思っている。
Pythonはデータ操作の復習でPandasやNumpyをやるわけではない。本当の巨大なビックデータではこれらのライブラリは使えないのだそうだ。だからPythonの基礎の部分のみのおさらいのため、あっという間に終わる。
英語に関しても前回と同様の講師はJoseさんなので、特に難しいことはない。このように英語のでの講座選択をする場合は、一人良い講師を見つけたら、その人の講座を集中的に受講すると効率が良いのでおすすめだ。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
タグ:Python
2019年09月12日
英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
はじめに
ビックデータの解析や活用が盛んな昨今、データ処理のスピードも求められるようになってきている。
そんな時に有望なのが今回勉強するApache Sparkである。Apache Sparkは Google, Facebook, Netflix, Airbnb, Amazon, NASAでビックデータの課題を解決に使用されており、 Hadoop MapReduceの約100倍で処理を行うことができる。
解析対象のデータが爆発的に増大していく中、最も注目される技術の1つである。
この講座ではクラウドプラットフォームであるAWSやDataBricks上でプログラミング言語としてpythonを用いて学習を進めることができる最先端の講座である。
講座名:
・Spark and Python for Big Data with PySpark
このコースの受講動機:
・最新のビックデータ解析ライブラリの知識習得
・スケーラブルなクラウド解析環境の構築の機械学習
・実践的なビックデータ解析演習による経験値積み上げ
このコース完了の際のゴールイメージ
・環境設定が一通り操作ができる
・Spark, PySparkを用いた解析ロジックを説明できる
・Spark, PySparkを用いて解析を行える
・Spark, PySpark, MLibを用いて機械学習のプログラムを作成できる
・Sparkでの自然言語処理を説明できる
コース詳細の紹介
・レクチャー数と時間
・66レクチャー、10.5時間のビデオ
・言語
・英語(英語字幕あり)
・内容要約
・最新のSpark2.0とpythonを使ったBigData解析
・AWSサービス(EC2,Elastic Map Reduce)、DataBrickを用いた環境構築
・模擬プロジェクトを使った演習
・MLibを用いた機械学習
・Sparkと自然言語処理を用いたスパムフィルタの作成
・Spark Streamを用いたツィートのリアルタイム解析
・受講に際しての前提条件
・プログラミング言語の知識、好ましくはpythonの知識
受講計画:
・10日程度で完了するつもりで受講をする。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
2019年09月11日
【まとめ】英語版Udemy講座で学ぶ!SQL
英語版のUdemy講座、"The Complete SQL Bootcamp"の受講を完了したので最初に立てた目標の達成具合、自己評価や、コースをやり終えての感想をまとめる。
目次
1、受講前のゴールイメージとスケジュールの確認
2、講義に関して
3、その他所感
受講前のゴールイメージとスケジュールの確認
〇このコース完了の際のゴールイメージ
- SQLで一通りの操作が簡単にできるイメージ ◎
- SQLのコマンドの裏で何が起こっているかの説明が完璧にできる 〇
- SQLのデータベースを構築する ×
SQLコマンドに関して基本的な部分はかなり知識が付いたと思う。
SQLコマンドの裏の説明というとたいそうだが、SQLのコマンドの結果を予測できると理解して評価し、基本的なところはできていてjoinがかかわってきて、複雑な式になった場合はもう少し修行が必要ということで〇としておく。
最後に、SQLデータベースの構築だが、データベースの構築を行うシチュエーションがまだないので、とりあえず×としておく。
〇スケジュール
- 10日程度で完了するつもりで受講をする。→6日で完了
週末や有休をとったので、その分早く終わったと言ったところだ。
朝型勉強も成果を出すのに一役買っている。
講義に関して
- 英語に関して
当初、最も心配したのは「英語を聴きながら最後までやり切れるか?」というところだったが、実際は特に難しいことはなかった。初めのほうで日本語字幕を出したがすぐに英語に集中したほうが理解が進むと思い、日本語字幕は非表示にして進めた。
英語の発音が聞き取りやすいのと単語も難しい単語はほとんど出てこないため、難なく理解を進めることができた。
英語の相性はUdemy講座を選ぶ際に重要性を改めて感じた。
- 講義の進め方に関して
SQLの講座の内容としては基礎的なところを丁寧に理論とハンズオンを6:4くらいの割合で入れながら進むため、飽きが来ない構成になっていた。前半の理論に続き、後半のハンズオンがすぐに始まるので、習ったコマンドをするに使ってチェックできるため知識の定着度が非常に高く効率が良いと感じた。
講座の受講中に質問はしなかったが、講師やTAがまめに質問に答えていて、その情報でつまずきを早期に解消できた。
章の区切りで行われるAssessmentTestの難易度はちょうどよい感じの問題でサクサク解けるので達成感を味わえてよい。直近で習った事以外のその前で習ったことも出たりするので、復習にちょうどよい。
- 受講中のノートに関して
いつも勉強を始めるとどうするか迷う受講中のノートやメモの作成だが、"The Complete SQL Bootcamp"の講座ではダウンロードできる補助教材が充実しているため、必要なときに補助教材を見ればよく、特に必要なかった。
補助教材はSQLコマンドのCheatSheetやSQLコマンドの説明資料、joinコマンドの説明資料や講義のスライドなど非常に充実しており、非常に生徒にとって助かる。
- つまづいたところ
joinのところはjoinコマンドの種類がたくさんあるので理解するのに手こずった。特にjoinコマンドを実際にどのようなユースケースで使用してているかをGoogleで調べて補完し、理解の助けにした。
pythonの設定部分でうまくいかず、QAのコメントを見て解決をすることができた。
その他所感
- "The Complete SQL Bootcamp"は非常に良かったので、同じ講師の他のコースも受講したい(早速、次にBigデータの講義を後で受講予定だが)
- 英語版の講座を最後まで完了できて達成感がある。
- 反省点として、途中、WinPC->MacPCにPCを変更したので少し手こずってしまった。
このコースへのリンク
The Complete SQL Bootcamp
全般ランキング