データサイエンティスト(仮)

元素粒子論博士。今はデータサイエンティスト(仮)。

Python

PytorchでDeep Learning : CPU onlyでインストールする際のメモ

Deep Learningのフレームワークの一つにPytorchがあります。Facebookを始めとして、様々な企業や大学が開発に携わっているようです。 PytorchはPython上でDeep Learningを行うためのフレームワークです。Preferred Networksが開発しているChainerからforkさ…

Pythonでデータ分析:Auto-sklearnについてのメモ

導入 最近、Meta Learningという考えに少し興味を持ちました。もともとは認知科学発祥の考えですが、機械学習の文脈だと ある決まったバイアス,すなわち仮説空間の中から,事例に応じて,適切な仮説を獲得する普通の学習器をベース学習器という.その上位で…

Pythonでデータ分析:imbalanced-learnで不均衡データのサンプリングを行う

導入 クラス分類、例えば0:負例と1:正例の二値分類を行う際に、データが不均衡である場合がたびたびあります。例えば、クレジットカードの取引データで、一つの取引に対して不正利用かどうか(不正利用なら1、それ以外は0)といった値が付与されているカラ…

Pythonでデータ分析:Prophetを使ってビットコインの予測(笑)をやってみる

導入 直近、これといって緊急の業務がなく、「自分の時間だ何勉強しようかなー」とPyStanとかをいじっていた矢先、「暇なら技術調査やってよ、Deep Learning的な何かとか」というお達しがきました。あいにく私は天邪鬼なので、2つ返事をして気になっていた…

Pythonでデータ分析:主成分分析(PCA)による異常検知

導入 データ分析の種類の一つとして、教師なし学習による異常検知というものがあります。ほとんどが正常なデータでまれに異常なデータが混じっている、その異常発生のパターンや異常と他の要因との紐付きがいまいちつかみきれていないというような場合、教師…

Pythonでデータ分析:PyStanで線形回帰モデル

導入 ベイズ推定を行うための道具として、マルコフ連鎖モンテカルロ(MCMC)があります。その派生系であるハミルトニアンモンテカルロ(HMC)をベースにしたソフトウェアとして、Stanというものがよく知られています。 Stan - Stan StanはC++ベースのソフト…

Pythonでデータ分析:Catboost

導入 2017年7月に、ロシアのGoogleと言われている(らしい)Yandex社から、Catboostと呼ばれるGradient Boostingの機械学習ライブラリが公開されています。catboost.yandexここ何ヶ月か調整さんになっていて分析から遠ざかりがちになりやすくなっていたので…

Memo:MacOS SierraでXGboostをpipで入れる

XGboostを自宅のMacに入れようとしても入らなかったので、調べてみたことを備忘録として残しておきます。 以前との差分を考えてみたら、MacOSをSierraにアップデートしてたことに気が付き、調べると以下の記事がヒットしました。qiita.com上の記事では、clan…

KerasでDeep Learning:LSTMで日経平均株価を予測してみる

導入 前回までで、画像データに関してDeep Learningを試してきました。画像データは、各データが独立と期待されるようなタイプのデータです。しかしながら、Deep Learningはこのような各データが独立であるような場合だけでしかできないというわけではありま…

ヒアリチェッカーを作ってみた:とにかく出してみる

(注)中身はまだ非公開 導入 最近、日本に危機が迫っています。 そう、ヒアリです。ヒアリは在来種と違った繁殖方法を持ち、毒性もあるので、あれよあれよという間に我々の周りに広がっていく可能性もあります。その場合、ヒアリをきちんと見分けられないと…

KerasでDeep Learning:KerasでMNISTデータを扱ってみる

導入 前回は人工データを用いたネットワーク構築について紹介しました。 tekenuko.hatenablog.com 今回は、異なるデータ(MNIST)に対してモデルを作成してみます。 MNIST MNISTとは、「Mixed National Institute of Standards and Technology database」の…

KerasでDeep Learning:とりあえずネットワークを組んでみる

導入 前回はKerasを導入しました。 tekenuko.hatenablog.com今回は、実際にネットワークを組んで学習をさせてみようと思います。簡単すぎるような気がしますが一歩ずつ…。 データセット 人工的に乱数を振って作成したものを用います。 import numpy as np # …

KerasでDeep Learning:導入

導入 年齢を重ねるにつれて、能力が落ちてきて危機感を感じています。こまめに努力しようと思います。最近、Deep Learningを使うふりをしていて、申し訳程度にChainerを使っています。Chainerも書きやすいのですが、日本人ユーザがメインなので、Tensorflow…

Pythonでデータ分析:機械学習の自動化

導入 何か問題を解決するにあたって機械学習を活用する場合、膨大なアルゴリズム、そのアルゴリズムに付随する多くのハイパーパラメータが存在します。分析の要件が「とにかく精度、中身は問わない」だった場合、何とかして効率的にモデルとパラメータを知り…

複数の棒グラフを表示させるのはpandasが便利

経緯 ある対象に対して、複数のアプローチの結果を可視化したいとき、棒グラフで並べて比較する方法があります。これをmatplotlib.pyplot.bar()で描いていましたが、棒の太さやら目盛の調整が大変でした。matplotlibは柔軟な可視化ができる反面、匠の技が要…

FastBDTの計算時間が速いかを確認してみる

はじめに 最近、ブースティング系のアルゴリズムでXGboostより速いものが実装されているようです。 github.com 論文は以下になります。 [1609.06119] FastBDT: A speed-optimized and cache-friendly implementation of stochastic gradient-boosted decisio…

Pythonでデータ分析:XGboost

導入 前回、アンサンブル学習の方法の一つであるランダムフォレストについて紹介しました。 tekenuko.hatenablog.com 今回は、XGboostと呼ばれる、別の方法がベースになっているモデルを紹介します。 XGboostとは XGboostは、アンサンブル学習がベースになっ…

Pythonでデータ分析:ランダムフォレスト

導入 前回、非線形的な効果を表現することの一例として、決定木回帰を紹介しました。 tekenuko.hatenablog.com決定木は、ざっくりとしたデータの特徴を捉えるのに優れています*1。しかしながら、条件がデータに依存しがちなため、過学習しやすいという欠点も…

Pythonでデータ分析:決定木

導入 前回、線形回帰からの拡張の一つとして、非線形項をモデルに加えることを紹介しました。 tekenuko.hatenablog.com 非線形性を表現する方法は他にも幾つかあり、その一つに、決定木という手法があります。今回は、回帰に決定木を用いた方法を紹介します…

Pythonでデータ分析:非線形効果を導入

導入 前回、ボストン近郊の住宅情報のデータを用いて線形回帰モデルを作りました。 tekenuko.hatenablog.com今回は、モデルの性能を上げる可能性の一つとして、多項式や指数・対数などの非線形効果をモデルに投入した場合の振る舞いを見ようと思います。 参…

Pythonでデータ分析:線形回帰モデル

導入 データ分析にて、最も基本的な回帰分析から始めていきます*1。回帰分析とは、説明したい変数(目的変数)とそれを説明するための変数(説明変数)の間の関係を求める手法です。機械学習の手法の区分としては、教師あり学習(解答に相当する教師データを…

Pythonでデータ分析:導入

背景 最近、業務でPythonを使っているのですが、不慣れな部分もありRレベルで自在に使いこなせていないと感じています*1。そのため、基本的な部分からおさらいをしていこうと考えました。 目標 試してみたいデータがあった場合に、簡単な分析に関してはとっ…