murohi@AIチャンネル

一流のAIエンジニア目指して奮闘中

「素人が、AIエンジニアになるまでに実施したこと」

初めまして。
私は、元々ハード開発のエンジニアでしたが、自身でAIを勉強し、AIエンジニア
になりました。そこで今回は私の経歴含めAIエンジニアになるまで実際に何をしたかについて紹介したいと思います。

目次
①経歴
②実際に行ったこと。
 2_1:情報収集:コミュニティに参加
 2_2:学習:勉強したサイト/オンラインコースに関して
 2_3:業務での適用
 2_4:転職エージェント利用
③実際になって感じたこと。やっといたほうがよいと感じたこと
 3_1:SQL
 3_2:AI以外の専門分野
 3_3:副業
 
------------------------------------------------------------------------------------
①経歴
私は、東京の機械系の某国立大学・大学院を出たのち、某大手企業に就職しました。そこで携帯の基地局の構造設計を6年間いたしました。具体的な業務としては、3D-CADや熱解析をもとに、小型軽量のハードウェアを作ることが業務でした。ただこの業界はPC業界と似ていて、安い海外ベンダーと凌ぎを削らないといけなく、現状のままだと将来性がないなと思い、一念発起しまして、まったく違うAI業界にいくことを決意しました。その後、約半年間自身でAIに関して勉強し、転職に成功。現在は某大手IT企業にてAIエンジニアとして業務を行っています。

②実際に行ったこと
AIエンジニアになると決めてから実際に内定するまでに具体的に何を実施したかについて手順を追って述べたいと思います。

 2_1:情報収集:コミュニティに参加・参考図書読破
AIエンジニアになるうえで一番最初に行ったことは、情報収集です。私の場合、周りにAIエンジニアの友人が近くにいませんでしたのでAIエンジニアに実際になったときにどのような仕事になるか・どういった技術が必要かがわかりませんでした。そこでまずAIコミュニティに参加し、実際のエンジニアjはどういった技術が必要で、何を勉強しなければいいか理解するところから始めました。
具体的に利用したコミュニティは下記になります。

  【Team AI】参考URL:https://www.team-ai.com/
   Team AIは、AI教育イベントを通算500回実施したことがある日本最大級のAIコミュニティです。このコミュニティでは渋谷にあるオフィスにて週1回程度無料で、「AIエンジニアになりたい方向けのキャリアセミナー」、「Python/Kaggleを使ったデータ分析ハッカソン」、「AIの論文の輪読会」、「データ分析の前処理ディスカッション」等実施しています。参加者は開催される内容にもよりますが、初心者から上級者の方までいらっしゃいます。また主催者がもともと商社で勤務していたこともあり、海外の優秀なデータサイエンティストも多数参加していたりもします。ですのでどのうようなレベルの方にも満足いただけるようなコミュニティで非常に重宝していました。このコミュニティに週に1回参加することで、AIの知識等学んだり、AIに強い企業等様々な情報を得ることができました。
  【AIエンジニアになりたい人の為の本】
   上記のようなコミュニティは基本首都圏で19時等からスタートするので、地方の方や、就業が19時に終わらない人は参加できない方も多いかと思います。そのような方は、「AIエンジニアになりたい人の為の本」という本がおすすめです。この本はTeam AIの
開催者がこのコミュニティを通じてどういうふうにすればAIエンジニアになれるかについてことこまかに書いてある内容になっています。Amazonにおいても星3.9ありすでに1万冊以上売れている本になります。

 2_2:学習:実際に勉強したサイト/オンラインコースについて
上記の本やコミュニティを通じて何を勉強すればいいかについてアドバイスをもらえるかと思います。そのなかでも自分自身が行った内容を紹介します。

  【オンラインコースの利用】
   ・Udemy 参考URL: https://www.udemy.com/
Udemyは世界最大級のオンラインコースサイトです。この中では機械学習に関するコースもかなりあります。値段も時期によっては9割オフで受講できる時期もあるので、そういった時期に下記コースを購入し、勉強してました。

    【世界で5万人が受講】実践 Python データサイエンス(※有料 時期によっては1500円程度)
     データサイエンスの分野をpythonを使って一通り学べるコースとなっています。基本的な機械学習のやり方を学ぶには最適なコースになります。
     
    【キカガク流】人工知能機械学習ブラックボックス講座 - 中級編 -(※有料 時期によっては1500円程度)
     実際にお試しで機械学習を前コースで学んだ後、機械学習を原理的に数学から理解するための講座です。講師の方が非常に教えるのがうまく、頭の中にすんなり入ってくるような内容でした。
   
   ・Cousera
Courseraとは、スタンフォード大学が始めた、無料のオンライン教育サービス(MOOC: Massive Open Online Course)です。ハーバード大学などが運営するedXに対抗する形で創設されました。Courseraのよいところは、なんといっても授業を無料で視聴できるところです(一部有料の授業もあります)。また、コースに合格すると、修了証(有料)をもらうことができます。

    【Machine learning】参考URL: https://ja.coursera.org/learn/machine-learning(※無料)
    その中でもおすすめのコースは、スタンフォード大学のアンドリュー教授が作成したコースです。初心者向けに基礎を解説するだけでなく、コーディングの演習問題もあるため、非常に勉強としてためになりますし、なんと無料で受講することができます。久しぶりに大学に通ったかのような錯覚に陥るくらい素晴らしい授業でした。ただし、すべて英語での授業になります。世界中で受講者がかなり多いため、様々な言語に翻訳等されていますが、すべて訳されているわけではないので、英語が多少なりとも理解できないとかなり厳しいかと思います。筆者はTOEIC800点程度ですが、専門用語がわからないのでかなり苦戦しました。。。。ただこの分野は英語ができたほうが特ですのでよい勉強になったかなと思います。
    
    
  【Kaggleでコンペティションに参加】参考URL: https://www.kaggle.com/
   kaggleは、企業や政府などの組織とデータ分析のプロであるデータサイエンティスト/機械学習エンジニアを繋げるプラットフォームとなっています。単純なマッチングではなく、「Competetion(コンペ)」がKaggleの特徴の一つです。Competition(コンペ)は、企業や政府がコンペ形式(競争形式)で課題を提示し、賞金と引き換えに最も制度の高い分析モデルを買い取るという、最近でいう一種のクラウドファンディングに近いような仕組みとなります。ここでよい成績を収めると就職にも有利になるということで成績上位になれるよう何度も投稿し、上位を狙いました。

このサイトのすごいところは初心者でも臆することなく参加しやすいよう初心者向けの一つの機能として「Kernels(カーネル)」があるということです。このカーネルでは、各データセットに対して他のユーザーが構築した予測モデルのコードや説明が公開されています。  

 2_3:業務での適用
 実際に中途として転職するには、実績が必要になります。最低限kaggleや自身で株のAIを作成し実績を作り、どういったところを工夫したか述べられるようにする必要がありますが、仕事で実績を作る事が最も効率的な結果の出し方になります。

私は自身の業務の中でAIを利用し、今まで人間が感覚的にやっていたことをAIに実装することで装置の小型軽量化を実現し、会社で賞をいただきました。

 2-4:転職エージェント利用
   私は二つ利用しました。
【Team AI】参考URL:https://www.team-ai.com/
Team AIで人材紹介会社ですのでAI企業を紹介してくれます。AI専門なこともありかなり多くの企業情報を持っています。ただし、日本のAIベンチャー企業が中心になりますので大手企業に行きたい人にとってはミスマッチになる可能性があります。

【AMBI】参考URL: https://en-ambi.com/html/pr/ad/pc/basic/001/?utm_source=yahoo&utm_medium=cpc&utm_term=yahoo_pc_cpc&utm_campaign=yahoo_pc_cpc_brand_lp001_190814a&RefID=yahoo_pc_cpc_brand_lp001_190814a&yclid=YSS.1000384989.EAIaIQobChMI1LKi49H45wIVRqqWCh0gdw4sEAAYASAAEgKvE_D_BwE
若手優秀層に特化したダイレクトリクルーティングサービスになります。ここでは大手企業で年収がかなり高い企業を中心に紹介してくれます。

私は二つのリクルート業者を利用し、履歴書や面接の練習を実施し、内定をいただくことができました。

③実際になって感じたこと。やっといたほうがよいと感じたこと
実際になって感じたことは下記になります。

【AI以外も知識が必要】
私はAIだけを勉強し、AIエンジニアになりました。ただし、実際データ分析をすることは業務の2割にも満たないのが現実かと思います。それ以外に下記のような知識が必要になると思いますので転職後も含め勉強しましょう。

 3_1:SQL
データベースからデータを取得するにはSQLを書く必要があります。私はSQLの存在すらしらずに仕事を開始しました。
仕事開始後、下記を勉強しました。
   ・Udemy 参考URL: https://www.udemy.com/:「 はじめての SQL ・データ分析入門 -データベースのデータをビジネスパーソンが現場で活用するためのSQL初心者向コース」

 3_2:AI以外の専門分野
AIはビジネスの中では目的ではなく手段として使われるものになります。なのでAIの知識だけではなく、ある特定の分野の知識も必要になります。私のおすすめは職場としては転職前と同じ領域の分野に行き、そこでAIエンジニアという職種で働くのがベストかなと思います。

 3_3:副業
実際にAIエンジニアに新しい職場として入っても、当然最初は一番下っ端からのスタートとなります。私は、入社7年目で転職した身だったので、かなりつらい立場からスタートしました。本気で早く成長し、活躍したい場合は副業で実績を積んだりすることが重要かなと思います。

以上ここまで記載しましたが、この分野で活躍するには日々の勉強は欠かせない分野になります。
素人からあこがれてAIエンジニアになりたい方も多いかもしれませんがかなり大変であることは肝に銘じて自分のキャリアを作ってくださいね!

 

将来に関して

ジョージです。

本日は自分の整理も兼ねて身の上話と今後について書こう

 

年齢:31歳

職業:大手IT会社勤務

家族:妻(27歳) 娘(1歳)

 

悩み:

・仕事:会社での立ち振る舞い/独立に向けて(まず小さな収入から)/転職

・家族:家の購入/家族サービス

・娘:教育指針。どういうふうに育ってほしいか

 

31歳にもなると色々と責任も出てくる。基本的なマインドとしては

・どうお金を稼ぐか(なるべく短時間若しくは家族に合わせたスケジュールで)

・どうお金・時間を使うか

 -自分:お金を自由に稼げるようになるための活動

 ‐家族:

 

PG公開最終スコア(0.78468)

# 関数の読み込み
import numpy as np
import pandas as pd
from pandas import DataFrame


# trainingデータの読み込み
train= pd.read_csv("./train.csv").replace("S",0).replace("C",1).replace("Q",2)
# 出港:データを見た90%以上がSであったので欠損値もSだと仮定し代入
train["Embarked"] = train["Embarked"].fillna(0)
# 名前からの分類
combine = [train]
for train in combine:
train['Salutation'] = train.Name.str.extract(' ([A-Za-z]+)\.', expand=False)
for train in combine:
train['Salutation'] = train['Salutation'].replace(['Lady', 'Countess','Capt', 'Col',\
'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')

train['Salutation'] = train['Salutation'].replace('Mlle', 'Miss')
train['Salutation'] = train['Salutation'].replace('Ms', 'Miss')
train['Salutation'] = train['Salutation'].replace('Mme', 'Mrs')
del train['Name']

Salutation_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5}
for train in combine:
train['Salutation'] = train['Salutation'].map(Salutation_mapping)
train['Salutation'] = train['Salutation'].fillna(0)


#年齢:敬称に合わせ平均年齢を代入(敬称がmasterであれば0‐8歳にする。 それ以外はいったん29歳とする。
#欠損値補完
train["Age"] = train["Age"].fillna(train["Age"].median())


def male_feamale_child_old (passenger):
age , sex =passenger
if age <9:
return 'child'
elif age >65:
return 'elder'
else :
return sex

train['person']=train'Age','Sex'.apply( male_feamale_child_old,axis=1)

#家族の人数
train["FamilySize"] = train["SibSp"] + train["Parch"] + 1

deck1=train['Cabin'].fillna("N")
levels =
for level in deck1:
levels.append(level[0])

cabin_df =DataFrame(levels)
cabin_df.columns =['Cabin']
train['Cabin']=cabin_df

#個人かの確認列
for train in combine:
train['IsAlone'] = 0
train.loc[train['FamilySize'] == 1, 'IsAlone'] = 1

#個人かの確認列
for train in combine:
train['More5'] = 0
train.loc[train['FamilySize'] > 5, 'More5'] = 1

train=train.drop('Ticket', axis=1)
train=pd.get_dummies(train)
#train.head(100)


# testデータの読み込み
test= pd.read_csv("./test.csv").replace("S",0).replace("C",1).replace("Q",2)
test["Age"] = test["Age"].fillna(test["Age"].median())
test['person']=test[['Age','Sex']].apply( male_feamale_child_old,axis=1)
test["FamilySize"] = test["SibSp"] + test["Parch"] + 1
combine = [test]
for test in combine:
test['Salutation'] = test.Name.str.extract(' ([A-Za-z]+)\.', expand=False)
for test in combine:
test['Salutation'] = test['Salutation'].replace(['Lady', 'Countess','Capt', 'Col',\
'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')

test['Salutation'] = test['Salutation'].replace('Mlle', 'Miss')
test['Salutation'] = test['Salutation'].replace('Ms', 'Miss')
test['Salutation'] = test['Salutation'].replace('Mme', 'Mrs')
del test['Name']

Salutation_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5}
for test in combine:
test['Salutation'] = test['Salutation'].map(Salutation_mapping)
test['Salutation'] = test['Salutation'].fillna(0)


deck2=test['Cabin'].fillna("N")
levels =
for level in deck2:
levels.append(level[0])

cabin_df2 =DataFrame(levels)
cabin_df2.columns =['Cabin']
test['Cabin']=cabin_df2

test["Fare"] = test["Fare"].fillna(test["Fare"].median())

test=test.drop('Ticket', axis=1)
test = pd.get_dummies(test,columns=["FamilySize"])
test.describe()


test['person']=test[['Age','Sex']].apply( male_feamale_child_old,axis=1)

#家族の人数
test["FamilySize"] = test["SibSp"] + test["Parch"] + 1


#個人かの確認列
for test in combine:
test['IsAlone'] = 0
train.loc[train['FamilySize'] == 1, 'IsAlone'] = 1

#個人かの確認列
for test in combine:
test['More5'] = 0
test.loc[test['FamilySize'] > 5, 'More5'] = 1

test=test.drop('Ticket', axis=1)
test=pd.get_dummies(test)
test.head(100)


# scikit-learnのインポートをします
from sklearn.ensemble import RandomForestClassifier

# 「train」の目的変数と説明変数の値を取得(分割)
target = train["Survived"].values
features_one = train[["Pclass","SibSp", "Fare","Embarked","Salutation","Age","Parch","FamilySize","Cabin_A","Cabin_B","Cabin_C","Cabin_D","Cabin_E","Cabin_G","Cabin_N","person_child","person_elder","person_female","person_male","IsAlone","More5"]].values
# 決定木の作成(モデルの宣言)
random_forest=RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=25, max_features='auto', max_leaf_nodes=None,
min_samples_leaf=1, min_samples_split=15,
min_weight_fraction_leaf=0.0, n_estimators=51, n_jobs=4,
oob_score=False, random_state=0, verbose=0, warm_start=False)


random_forest=random_forest.fit(features_one, target)

# 「test」の説明変数の値を取得
test_features = test[["Pclass","SibSp", "Fare","Embarked","Salutation","Age","Parch","FamilySize","Cabin_A","Cabin_B","Cabin_C","Cabin_D","Cabin_E","Cabin_G","Cabin_N","person_child","person_elder","person_female","person_male","IsAlone","More5"]].values
# 「test」の説明変数を使って「my_tree_one」のモデルで予測
my_prediction = random_forest.predict(test_features)

# PassengerIdを取得
PassengerId = np.array(test["PassengerId"]).astype(int)
# my_prediction(予測データ)とPassengerIdをデータフレームへ落とし込む
my_solution = pd.DataFrame(my_prediction, PassengerId, columns = ["Survived"])
# my_tree_one.csvとして書き出し
my_solution.to_csv("submissionrandom.csv", index_label = ["PassengerId"])

【Kaggle初心者】タイタニック号で生き残るのは誰?(4日目):score:0.76076

 どーも。ジョージです。それでは本日も精度を上げるべく取り掛かりましょう。

 データ分析しながら方針決めができたらと思います。

 

4日目にで初めてデータを見るのかよ!と思う方もいらっしゃるかと思います。確かに遅いです。

 

でもデータ分析しなくても 精度76%出るんです!ランキングとしても平均くらいまで来てます!ですのでこういうのをパッケージにして、だれでも簡単にAIと呼ばれるものをつくるというのは、そこまで精度を求めない領域でたくさんでてくるのではと思います。

 

1:データ読み込み

2:前処理

★性別:男を0、女を0とする*男女差には生死の差がある。

★出港:Sを0、Cを1、Qを2 9割近くがSからの出港なので欠損値はSで補完

*出港先は町の豊かさを示すものなので使用する価値がある。

★名前:名前の中から下記情報を取得し、下記6個に分ける

     "Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5 空白は0

★年齢:欠損値は名前で6個に振り分けたのでそこの区分の中央値を年齢として代入する。

*子供やお年寄りは救われる傾向がある。

→年齢も単純に年よりも世代(区分で区切ったほうが精度が出そうなのでグラフを作成し分け方を決める)

★Family_size:家族の大きさを定義:SibSp + Parch + 1を家族の人数とする。

*家族のサイズによって逃げれた逃げれないはありそう

※一人!当特融の結果がでるかもしれないので確認

★Cabin:先頭のアルファベットのみ抽出。空白はUと定義

*おそらく階級や逃げやすさによって変化があるはず。

先頭以外の文字の使い方は

 

■分析

2:前処理

★性別:結論→男女差は明らかに生存率にかかわる。

 f:id:hiromushoji:20190815131708p:plain

★出港:Sを0、Cを1、Qを2 9割近くがSからの出港なので欠損値はSで補完

結論:出港先は町の豊かさを示すものなので使用する価値がある。

f:id:hiromushoji:20190815135202p:plain

★名前:名前の中から下記情報を取得し、下記5個に分ける

     "Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5 空白は0

 →敬称だけ抜き出す。これだと大体平均年齢の欠損値を埋めるのに利用できそうなのでそれに利用する。

f:id:hiromushoji:20190815150359p:plain

 

★年齢:欠損値は名前で6個に振り分けたのでそこの区分の中央値を年齢として代入する。結論:若ければ助けてもらえる(*ただし8歳より若いに限る)

 

f:id:hiromushoji:20190815150548p:plain

 

★Family_size:家族の大きさを定義:SibSp + Parch + 1を家族の人数とする。

結論:家族が誰もいない場合や多すぎる場合は助からないことが多い。

f:id:hiromushoji:20190815151349p:plain

★Cabin:先頭のアルファベットのみ抽出。空白はNと定義

 

 

ここまでが結果のグラフ化でした。次回は結果を出します。

 

 

 

 

【Kaggle初心者】タイタニック号で生き残るのは誰?(3日目):score:0.76076

どーも。3日目になります。今回から前回単純に結果をだしたものですがどうしたら精度があがるかを考えていきましょう。

■今回のプラン

前回は結果を出すことにのみ注力した結果精度が54%とほぼ予想できていないレベルでしたのでちょびっとタイタニックで起きた事件のことを想像しながら、前回使用しなかった文字データも活用していきたいなと思います。

1:データ読み込み

2:前処理

★性別:男を0、女を0とする*男女差には生死の差がある。

★出港:Sを0、Cを1、Qを2 9割近くがSからの出港なので欠損値はSで補完

*出港先は町の豊かさを示すものなので使用する価値がある。

★年齢:とりあえずそのままの値を利用。欠損値は中央値を入れる

*子供やお年寄りは救われる傾向がある。

★Family_size:家族の大きさを定義:SibSp + Parch + 1を家族の人数とする。

*家族のサイズによって逃げれた逃げれないはありそう

3:予測アルゴリズム

→今回は決定木からランダムフォレストを利用

4:予測し結果提出

→結果を提出する。

 

1~2まで(データ読み込み&前処理)

f:id:hiromushoji:20190715234400p:plain

 

(確認)

f:id:hiromushoji:20190715234619p:plain

3:予測アルゴリズム

f:id:hiromushoji:20190715235441p:plain

4:予測し結果提出

f:id:hiromushoji:20190715235638p:plain

 

f:id:hiromushoji:20190715235908p:plain

結果は76%!急に精度が上がってきましたね!

まだ下記の情報を使っていないし欠損値の補完手法、

 

 

 

(次回以降)

まあ考えるといっても人のカーネルやサイト見ながらやりましょう!

*名前についている敬称から年齢が推測できそうなのでそれを利用するのは次回

★名前:名前の中から下記情報を取得し、下記6個に分ける

     "Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5 空白は0

 

欠損値は(mr master miss misc mrsごとに中央値を代入する)

 

★Cabin:先頭のアルファベットのみ抽出。空白はUと定義

 

 

 

 

 

 

 

【Kaggle初心者】タイタニック号で生き残るのは誰?(2日目):score:0.54545

2日目です。今回は実際にPG書いてみます。今回のプランは結果を提出することのみに注力しましょう。

 

■プラン

1:データ読み込み

2:前処理

前回も述べましたが解析を実行するうえでの最低条件は

・すべてが数値になっていること

・欠損値がないこと

ですので使用する変数の対象を数値のみに絞る。文字列データは一切使いません。

そして欠損処理は、すべて中央値を入れます。

 

3:予測アルゴリズム

→今回は決定木を利用。

4:予測し結果提出

→結果を提出する。

 

1:データ読み込み

①jupyter notebookと同じフォルダにtrain.csvとtest.csvを格納します。

→データを読み込むには格納しているパスを指定し、アクセスする必要があります。

②必要なライブラリを格納します。(pandas とnumpy)

→pandas:Pythonにおいて、データ解析を支援する機能を提供するライブラリである。特に、数表および時系列データを操作するためのデータ構造と演算を提供します。

qiita.com

→numpy:Python数値計算のためのライブラリです。

 

qiita.com

③データの読み込みをreadcsv関数を使用し実行します。

④きちんと読めているかhead関数を使用し確認します。

f:id:hiromushoji:20190714164229p:plain

 

 2:前処理

今回は欠損処理を実施。すべて中央値を入れます。文字列データは一切使いません。

①describe関数で欠損値/数値データのみの列を確認します。

②欠損値補完

③欠損値補完できているかの確認を実施。

 

f:id:hiromushoji:20190714192947p:plain

 

欠損値の補完と確認は下記の通り。

f:id:hiromushoji:20190714221708p:plain

 3:予測アルゴリズム

①予測するアルゴリズムに合わせてsckit learnからインポートする

②目的変数と説明変数を振り分ける。(ここで説明変数を定義)

 (Pclass,Age,SibSP,Parch,Fare)

③学習を行い、そして予測。

f:id:hiromushoji:20190714221842p:plain

4:予測し結果提出

予測アルゴリズムは学習時に使ったモデルを利用して実施(すみません。予測は上の画像を参考にしてください。

最後に解析結果を出力するためにCSVファイルを作成して提出!

f:id:hiromushoji:20190714222247p:plain

結果を確認すると正答率54.5%!二択でこれは全然予測できていないとしかいいようがない!

f:id:hiromushoji:20190714222406p:plain

ただ今回の目標はあくまで機械学習を実施して解答すること!ですので出せたことを喜んでください。

 

次回はどうしたら精度があがるかを人のカーネル読みながら順位を上げていきます。

 お楽しみに!

 

<ココナラから授業も承っております>

coconala.com

 

【Kaggle初心者】タイタニック号で生き残るのは誰?(初日)

今回のブログでは前回予告した通り、kaggle のタイタニック号で生き残るのは誰?についてやってみたいと思います。 

 

機械学習初心者にとって重要なのはとにかくkaggle 等利用し実践して手を動かすこと。ただプログラムも書けないし機械学習なんてやり方わからないよというかたは動かし方わからないですよね。

 

なので最初は手初めに人の書いたカーネルやブログを最低5個読むことが重要です。

教科書的なPythonやったり統計勉強したりすると途中でわからなくなりつまづいてしまい、そのあと続かなくなりますのであまりオススメ出来ません。まず一個結果をだすことを目指してください。

 

5個の選び方のポイントは 

■環境構築

機械学習の手順がわかる

■各フェーズでの考え方

アルゴリズムの書き方

かなと思います。ここからポイントを記載します。

 

■環境構築

基本的にはプログラムはRかpythonを使用してください。両方ともデータ解析に役立つ多くのライブラリを持っているので非常に使い勝手がよいです。

データの解析環境はjupyter Notebookがよいかなと思います。 

何?プログラミング環境だけじゃだめなん?とか思う方もいらっしゃるかと思いますが素晴らしい点は下記かと。。

・python/Rが実行できる(表を作成/グラフ作成)

・メモがとれる(markdown機能)

・いろいろ書いたのが一つのファイルになる。

・細かくPGを実行していける。

ということで機械学習のような解析を進めながら少しずつ解析実行していくものに対しては非常に親和性が高いかなと思っています。

インストール手順から使い方まで一通り記載されています。

codezine.jp

 

機械学習の手順

機械学習の手順はほぼみんな同じやり方で進めますのでどれを参考にしてもよいと思います。簡単に書くとこんなかんじ 

1:データ読み込み

2:データ分析と前処理

  ・仮説を立て確認/相関分析 /欠損値確認し補完する。

  ・カテゴリ変数の置換

  ・非構造データの処理

3:予測モデル構築(アルゴリズム選定) 

  ・アルゴリズムの選定 

  ・パラメータチューニング

  ・クロスバリデーション

4:予測

 

精度の差は基本2データ分析と前処理と3の予測モデルの構築で差がでます。

 ただ最初に解析結果出すためであれば2、3を凝りすぎないほうがいいでしょう。

まず結果を出すことを最初に考えて2、3は色々なブログを確認し勉強しましょう。

 

機械学習を実行する最低条件としては

ー予測モデルに欠損値が存在しないこと

ー全てが数値化されていること

ですのでまず動くことを目指しましょう。非常に簡単に書いてあるサイトは下記でしたので下記を見るのは勉強になると思いますにで読んでいただけたらと思います。

www.codexa.net

 

次回は実際にプログラムを書いていこうと思います。