データサイエンスのおすすめウェブサイト(1/13)

データサイエンス職が東大生の人気職種に」という記事が昨日掲載された。この記事で特に注目されるのは、安定した大手企業ではなくフリーランス的な働き方を志向する学生が多くなっているということである。いよいよ日本的雇用からの本格的転換が加速している。本日も最近気になったデータサイエンスの英文記事を紹介したい。

AIは人間がより人間らしくなるようにさせるか?
コンピュータにできる仕事から解放されて、デザインや共同作業などのスキルがより重要になる、という盛んに言われている話だが、基本的なところから解説している。

「ビジネス・インテリジェンス」対「ビジネス・アナリティクス」
「ビジネス・インテリジェンス」は日々の業務の意思決定のために過去から現在のパターンやトレンドを明らかにする。一方「ビジネス・アナリティクス」はデータマイニング、統計解析、予測モデリングを用いて将来のパターンを予測する。

データサイエンススキル項目の調査結果:コアなスキルと今後重要になるスキル
データサイエンスのスキル項目に関するアンケート調査結果。コアなスキルは高い順に、1)Python, 2)データ可視化, 3)クリティカル思考, 4)エクセル, 5)コミュニケーションスキル、と続く。今後重要になるスキルは高い順に、1)Pytorch(Pythonの機械学習ライブラリ), 2)Scala(オブジェクト指向言語と関数型言語の特徴を統合したプログラミング言語), 3)その他ビッグデータツール, 4)TensorFlow, 5)Apache Spark、と続く。

データサイエンスのおすすめウェブサイト(1/4)

いよいよ東京オリンピックが開催される2020年が幕を開けた。区切りの節目の年ということでデータサイエンスの記事にも今年の(主にAIに関する)トレンド予測をテーマにしたものが目立つ。そのような記事をいくつか紹介したい。

2020年のデジタル変革の主要な5つのドレンド
(1)デジタル技術成長エンジンとしてのIoT, (2)競争に勝ち抜くためにスピードがより重要に, (3)仮想通貨(ブロックチェーン)がさらに躍進, (4)AIが企業のボトムライン成長により貢献, (5)インテリジェントなデータ管理によりITOpsからNoOPSへ

マーケターが注目すべき2020年のAIの10のトレンド
「顧客のチャネル間のリアルタイム相互作用の管理」「新たなインサイトで顧客ロイヤリティ維持の改善」など、マーケティングにおけるAI活用のトレンドを簡潔に解説。

2020年の人工知能の予測
「GPUがAIの加速を支配する」などの予測(記事を読むには無料会員登録が必要)

なぜ2020年のビジネスに人工知能は重要なのか
今後AIを活用していこうとする企業への基礎的アドバイス。データの揃え方、AIシステムの入手方法(自前で構築/製品の購入/クラウドAPIを通したパブリックソリューションの利用)

2020年に注目する8つの人工知能のトレンド
「データとAIの境界線がぼやけてくる」「より簡便なツール,インフラ,ハードウェアが開発される」「新たなモデルや手法が出現してくる」「データが固有のバイアスを持つという前提が(多様性の経済社会で)重要に」など

データサイエンスのおすすめウェブサイト(12/25)

2019年も押し詰まってきた。豪雨災害などが目立った年だったが、少子化に伴う人手不足もじわじわと進んでいる。城繁幸氏などのキャリア専門家がかねがね言っていることだが、既得権やポジションにしがみつくのではなく、プロフェッショナルとして自身のスキルでいつでも勝負できるようにすることがますます大事になるだろう。前回の紹介記事から時間があいてしまったが、この間に興味深いと思った記事を紹介する。

よりよいビジネス意思決定のための5つのヒント
猛スピードで進化し変化するビジネス環境でよりよい意思決定をするためには、(1)ビッグデータのポテンシャルを利用する、(2)次世代技術を喜んで取り入れる、(3)異なった見方を取り入れる、(4)顧客のニーズを分析する、(5)従業員のトレンドを評価する、ことが重要であるとしている。

機械学習のGoogleチュートリアル
Googleのエンジニアが作成した、機械学習入門の96枚のスライド(英語)

機械学習の数学
機械学習を学ぶ基礎となる数学。線形代数や確率など(英語)

現代世界のビッグデータ適用事例トップ20
飲食・銀行・ヘルスケア等の業界でのビッグデータの適用事例

Pythonの異常検知ライブラリPyOD(その3)

前回のプログラム事例の発展型として、PyODライブラリ付属のデモ描画システムを利用することができる。まず以下の2つのライブラリのインポートを追加する。

from pyod.utils.data import evaluate_print
from pyod.utils.example import visualize

そして異常検知手法のループの部分を以下に置き換える。

# Loop for outlier detection tools
for i, (clf_name, clf) in enumerate(classifiers.items()):
    # train kNN detector
    clf.fit(X_train)

    # get the prediction labels and outlier scores of the training data
    Y_train_pred = clf.labels_  # binary labels (0: inliers, 1: outliers)
    Y_train_scores = clf.decision_scores_  # raw outlier scores

    # get the prediction on the test data
    Y_test_pred = clf.predict(X_test)  # outlier labels (0 or 1)
    Y_test_scores = clf.decision_function(X_test)  # outlier scores

    # evaluate and print the results
    print("\nOn Training Data:")
    evaluate_print(clf_name, Y_train, Y_train_scores)
    print("\nOn Test Data:")
    evaluate_print(clf_name, Y_test, Y_test_scores)

    # visualize the results
    visualize(clf_name, X_train, Y_train, X_test, Y_test, Y_train_pred,
              Y_test_pred, show_figure=True, save_figure=True)

そうすると以下のようなデモバージョンのグラフが描かれる。

Pythonの異常検知ライブラリPyOD(その2)

前回の補足。以下はテストデータのグラフである。

次は主成分分析、ヒストグラムベース異常検知、k-近傍法の図である。

以下、各手法について簡単に解説する。
主成分分析:変数間の連関性をもとに多変数を少数の主成分に縮約する。
k-近傍法:任意のデータ点について、そのk番目に近い近傍との距離を異常度として用いる。
Isolation Forest: この手法では、木の集合を用いてデータの区分けが行われる。Isolation Forestは、その点が構造の中でいかに孤立しているかを示す異常度スコアを与える。それゆえ異常度スコアは正常なデータ点から外れた点を識別するために用いられる。Isolation Forestは多次元データで高い性能を発揮する。
ヒストグラムに基づく異常検知法:効率的な教師なし学習手法である。特徴間の独立を仮定し、ヒストグラムを構築することにより異常スコアを計算する。多変量アプローチよりも高速であるが、精度は落ちる。
Feature Bagging: データセットのさまざまなサブサンプル上でいくつかのベース検出モデルをあてはめる。予測精度を向上させるために平均化や他の組み合わせ手法を用いる。Feature Baggingでは最初にランダムに選ばれた特性変数の部分集合によりn個のサブサンプルが構成される。これはベース尺度の多様性をもたらす。最後に全てのベース尺度の平均または最大をとることにより予測スコアが生成される。
クラスタリングに基づく局所外れ値因子法:データを大きなクラスターと小さなクラスターに分類する。異常度スコアはその点が属するクラスターのサイズと、最も近い大型クラスターとの距離で計算される。

Pythonの異常検知ライブラリPyOD(その1)

昨年より仕事のデータ解析のためにPythonプログラムを書いている。昨年はデータ前処理と作図が殆どだったが、今年から統計手法のライブラリを使い始めた。最近、異常検知のためのPythonライブラリを探していたら、PyODというライブラリを見つけた。PyODは、多変量の観測データの異常検知が行えるライブラリで、提供されている手法は、統計モデルや機械学習など20に及ぶ。多様な異常検知手法を統一したインタフェースで適用して結果を相互比較できるという優れものである。リリースされてから日が浅く、日本語の解説記事はまだ殆どないようである。

今回は、英語のチュートリアル記事を参考に、PyODのデータ生成機能で作った人工データを用いて、教師なし学習の8つの手法を適用してみた。尚、PyODライブラリ利用のためにはインストールが必要です。

【ライブラリのインポート】PyODライブラリは、各手法毎にインポートする。

import numpy as np
import pandas as pd
import matplotlib. pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'MS Gothic'
from pyod.utils.data import generate_data, get_outliers_inliers
# import PyOD library models
from pyod.models.abod import ABOD
from pyod.models.cblof import CBLOF
from pyod.models.feature_bagging import FeatureBagging
from pyod.models.hbos import HBOS
from pyod.models.iforest import IForest
from pyod.models.knn import KNN
from pyod.models.lof import LOF
from pyod.models.pca import PCA

【人工データの生成】変数の数、異常データの出現割合(ここではデフォルト0.1)を指定して、分析用の人工データ(観測データ、正常/異常データ)を生成することができる。

# generate random data with two features
X_train, Y_train, X_test, Y_test = generate_data(n_train=200, n_test=100, n_features=2)

# plot training data
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(X_train[:,0], label='Col 1')
ax1.plot(X_train[:,1], label='Col 2')
ax1.set_title('PyOD Training Data')
ax1.legend()
plt. show()

【手法の記述】分析に用いる手法を辞書型変数として記述する。

# Define eight outlier detection tools to be compared
random_state = np.random.RandomState(42)
outliers_fraction = 0.05
classifiers = {
    'Angle-based Outlier Detector (ABOD)': ABOD(contamination=outliers_fraction),
    'Principal Component Analysis (PCA)': PCA(contamination=outliers_fraction),
    'Cluster-based Local Outlier Factor(CBLOF)': CBLOF(contamination=outliers_fraction,check_estimator=False,random_state=random_state),
    'Feature Bagging': FeatureBagging(LOF(n_neighbors=35), contamination=outliers_fraction,check_estimator=False,random_state=random_state),
    'Histogram-base Outlier Detection (HBOS)': HBOS(contamination=outliers_fraction),
    'Isolation Forest': IForest(contamination=outliers_fraction,random_state=random_state),
    'K Nearest Neighbors (KNN)': KNN(contamination=outliers_fraction),
}

【各手法のデータへの当てはめと異常判定】ここでは辞書リストの要素についてのループを組んでいる。

# Loop for outlier detection tools
for i, (clf_name, clf) in enumerate(classifiers.items()):
    # fit the dataset to the model
    clf.fit(X_train)
    # predict raw anomaly score
    scores_pred = clf.decision_function(X_test)
    # prediction of a datapoint category outlier or inlier
    y_pred = clf.predict(X_test)
    # prediciton error rate
    y_ErrRate = (y_pred != Y_test).sum() / len(Y_test)
    # plot scores_pred
    x = np.arange(100)
    y1 = scores_pred
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    ax1.plot(x,y1, 'k-', label='Anomaly Score')
    ax1.plot(x[y_pred==1], y1[y_pred==1],'ro', label='Outlier')
    ax1.set_title('PyOD Result: ' +clf_name + ' Error Rate: '+str(round(y_ErrRate,3)))
    ax1.legend()
    plt.show()

データサイエンスのおすすめウェブサイト(9/27)

某大臣が「地球環境問題をセクシーに解決しよう」と演説して物議を醸したが、これで思い出したのが、「 データサイエンティストは21世紀の最もセクシーな職業」という記事で、これは2012年に発表され、数多く引用されている。

セクシーかどうかは別として、データサイエンティストに脚光があたってきたことは確かである。強固なSTEMの基盤が必要ではあるが、より多くの若者に志してもらいたいものである。

Local Outlier Factorによる異常検出
密度の違いに注目した異常検知法

データサイエンスの経済はいかに新たな価値の源泉を生み出しているか
Data Lake(センサー、気象、売上などのデータ源)は原油のように価値の源泉ではあるが、原油が精製して価値が出るのと同様にデータに価値を出すのがデータサイエンスの役割である。

デザイン思考:床のワックスがけかデザートのトッピングか
デザイン思考はビジネスにおいて有用だが誤解されている点も多い。どのような結果を出すためにデザイン思考を使うのかを明確にすべき。

データサイエンスおすすめサイト紹介再び

前回投稿から1年近く経過してしまった。この間小生はより実データを多く扱う職場に転職して、日々Pythonプログラムを書いて分析をしている。データサイエンスはこの間さらに広く市民権を得てきた感がある。そこで、まずデータサイエンスおすすめサイトの紹介を再開する。なお、紹介するサイトは全て英語サイトである。

無料電子書籍:データサイエンスの基礎(マイクロソフト研究所発行)
現代データサイエンスを理解する上で必要になる基礎理論が記述されている。

ベイジアン機械学習(その1)
ベイジアン機械学習(その2)
ベイジアン機械学習(その3)
ベイジアン機械学習(その4)
ベイズの定理の解説から始まり、ベイズ線形回帰、確率的クラスタリングなどが解説されている。

データサイエンスの5つの基礎的考え方
Kirk Borne氏の古い記事だが、データサイエンスの本質的なことを語っている。(1)帰結を頭において始める、(2)貴方のデータをよく知る、(3)これは「科学である」ことを忘れないこと、(4)データは決して完全ではないが、とにかく貴方のデータを好きになりなさい、(5)当てはめすぎ(overfitting)はデータサイエンスへの「罪」である。

探索的データ解析の初心者向けガイド
データの様子を探ることから出発する「探索的データ解析」の入門ガイド

データサイエンスのおすすめウェブサイト(10/15)

かなり久々の投稿となった。今回紹介するサイトは、データサイエンスの専門的内容でなく周辺の話題に関する記事である。なかなか興味深い記事が揃っている。

いかにAI、機械学習の最新技術に遅れずについていくか
著者自身がAIと機械学習の最新技術をキャッチアップするために参照しているサイトやフォローしている人物について。

統計分析アドバイザーチャート
図の中央の「統計解析で何がしたいか」から始めて順に辿っていくと適切な手法にたどり着く。

データサイエンスtwitterインフルエンサー50人
おなじみのデータサイエンスでフォローすべき人々のリストだが、これはよくまとまっている。

データサイエンティスト専門職であるベネフィット
必ずしもデータサイエンスのバックグラウンドを持っていなくても、これからデータサイエンティストを目指す人へのアドバイス。

データサイエンティストは何をしている(35人のデータサイエンティストより)
Harvard Business Reviewの記事。何人かのデータサイエンティストへのインタビューからなる。

データサイエンスのおすすめウェブサイト(9/4)

前回投稿からかなり空いてしまった。興味あるツイートでまだ紹介していないものが見つかる頻度は少なくなったが、まだまだ興味深い記事はある。可能な限り紹介したい。

データサイエンスと真理の探求
Bob Hayes氏のエッセイ。意見と事実を区別する。大量データでもバイアスから逃れられない。

ニューラルネットワーク、多様体、トポロジー
多ノードのニューラルネットワークを直感的に理解する。

11の古典的時系列予測の手法(Pythonコード付き)
ARMAモデルなど統計学でお馴染みの時系列予測手法のレビュー。

「データ・ドリブン」か、もう一度よく考えてみる
データ利用意思決定の心理学的考察。

エクセルを超えたビジネス・インテリジェンス戦略
スプレッドシート(Excel)は直感的に操作しづらい、データが多岐にわたりで意思決定に十分な分析ができない、アップデートが基本で履歴が残らない、などの理由でビジネス向きとは言えない。社内外のビジネス・インテリジェンス専門家に協力を求める。