学生の備忘録なブログ

日々のことを忘れないためのブログです。一日一成果物も目標。技術系はQiitaにあげるように変更しました。

C言語の復習。*argv[]

cat kata.c
#include <stdio.h>
int main(int argc, char *argv[]){//argcはコマンドラインの数つまりls -a なら2,
                                 //argvは文字配列へのポインタ変数
  int ary1[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};//
  char ary2[] ="helloworld";
  for (int i=0; i<10; i++){
    printf("%d\n", ary1[i]);
    printf("%c\n", ary2[i]);
  }
  getchar();//実行待ちになり、適当なキーで終わる。
  return 0;
}

引数をとって、そのコマンドがなんなのか、引数がなにかを認識したりするときにも使える。

char aryC2[] ="helloworld"; このように書くことで、いちいち文字数を配列にひとつずつ入れずとも、配列に一文字ずつ持たせられる。[]とかくことで、文字数を指定せずとも勝手に入る。

./a.out 
0
h
1
e
2
l
3
l
4
o
5
w
6
o
7
r
8
l
9
d

mecabのインストール

分かち書きまでの手順

  1. mecabの公式サイトからダウンロードしてビルド
  2. mecabの公式サイトから辞書をダウンロードしてビルド
  3. 拡張版辞書をダウンロード
  4. ビルド
  5. bash(シェル)にパスを書く

その他. neologdでエラーを吐いたら。

1.mecabの公式サイトからダウンロード

こちらから http://taku910.github.io/mecab/#download

ビルド方法

cd mecab-*
./configure
make
make check
sudo make install

make checkをするとどうやらチェックができるらしい。

これができれば、mecabは動く。しかし辞書がないと使い物にならない。

2.mecabの公式サイトから辞書をダウンロードしてビルド

ipadicは辞書。拡張版辞書(neologd)もある。

上記公式サイトダウンロードしてきて、mecabと同一ディレクトリに配置して、同じコマンドでビルドできる。

3. 拡張版辞書をダウンロード

neologdとは、ipadicより更新頻度が高い辞書。新語などがある。

https://github.com/neologd/mecab-ipadic-neologd

これをいれるには、上記の方法ではできない。githubにインストール方法はある。

git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
./bin/install-mecab-ipadic-neologd -n

この後、インストールするかをy/nで答え、権限を付与すれば終わり。

エラーを吐いたら

param.cpp(69) [ifs] no such file or directory: /usr/local/lib/mecab/dic/mecab-ipadic-neologd/dicrc
‘''

このようなエラーを吐くことがあるかもしれません。


これはおそらくはanacondaのpyenvのpathをよしなにしてくれるライブラリと干渉しているのかもしれません。よくわかってはいません。

‘'’
pyenv local system
‘''

これで解決しました。




## 4. bash(シェル)にパスを書く
bash,zshなどシェルにパスを追加する。

mecab

export PATH=/usr/local/bin/mecab:$PATH




source .zshrc

# 参考,引用元
https://www.udemy.com/tensorflow_rnn/learn/v4/t/lecture/7895510?start=15
http://taku910.github.io/mecab/#download
https://qiita.com/n-fujimoto/items/dd1ea3a781b59c6b5979

Kaggle挑戦の下調べ

Kaggleに挑戦

Kaggleに挑戦したくなったので下調べ. 大学院受験があるので2018/8/26あたりから始めたい.

解説サイト

動画での解説

Kaggle入門動画をつくった - tkm2261's blog

Kaggle メルカリコンペの優勝コードを眺める - YouTube

10%に入った人のブログ

Kaggleのtitanic問題で上位10%に入るまでのデータ解析と所感 - mirandora.commirandora.com

CNNの理解の一区切り

CNNの勉強は一区切りついた.

シンプルなCNNの勉強はここで一区切りつけたい.

参考になった文献,サイト,書籍

ニューラルネットワークと深層学習

ニューラルネットワークと深層学習

ここではニューロンの一つ一つの集まりがなぜ線形な関数を表現できるかなどを解決できるかを動かしながら理解できる.

ゼロから作るDeepLearning

言わずもがなである.

Python機械学習プログラミング

Amazon CAPTCHA

thinkit.co.jp

数式では理解できるが,コードに落とし込む際に省略される計算過程などが丁寧に書かれている.

難しいが,ところどころ堅苦しく書いてくれていて辞書的に使うと助かる.(最近はネットでも書かれているのかもだが)

ゼロから作るDeep Learning ~L2正規化~

L2正規化

L2正規化について,あまり詳しく書かれていなかったので

6.4.2 Weight decay

Weight decay 荷重減衰とは 学習の過程において、大きな重みを持つことに対してペ ナルティを課すことで、過学習を抑制すること.


L2正則化,L1正規化とは

機械学習でよく用いられる正則化には、L1正則化とL2正則化がある

ノルムとは

n 次元ベクトル x→=(x1,x2,⋯,xn) および 1≤p<∞ なる p に対して $\sqrt[p]{|x_1|^p+|x_2|^p+\cdots +|x_n|^p}$ を x→ の Lp ノルムと言い,||x||p と書く.

定義

$\lambda$は正則化パラメータ(regularization parameter)

$L2=\lambda ||w||^{2}{2}=\lambda \sum ^{n}{j=1}w^{2}_{j}$ 各成分の自乗の和, 2乗ノルム     

  $L1=\lambda \left| w\right| ^{1}{1}=\lambda \sum ^{n}{j=1}\left| w_{j}\right|$ 各成分の絶対値の和

以上をペナルティ項として加える.


改めてL2正則化,L1正規化正規化とは

正規化したい対象E(w)にペナルティ項λE_1(w)を加えて, E(w)+λE_1(w)を最小化するように最適化問題を解く問題に置き換えることで,過学習を避けること.


グラフで見る

L2ノルム L2 =$\sqrt[2]{|x_1|^2+|x_2|^2+\cdots +|x_n|^2}$ normf:id:forhighlow:20180611231329j:plain


f:id:forhighlow:20180611231326p:plain 六本木で働くデータサイエンティストのブログより

ペナルティ項を付けておくことでw1,w2の定まり方が変わるというお話です。左側のL1ノルム正則化であれば尖った形の領域に接するようにしなければならないため自ずとw2の軸上に最適点が定まってw1=0となり、右側のL2ノルム正則化であれば円状の領域に接するようにしなければならないためw1,w2ともにnon-zeroな値が入る、という感じになるわけです。


グラフから分かること

重みwは正規化により円状の領域にのみ制限される. よってwを項に含む関数E(D)はある程度制限される. wの値に制約を付け加えることで,意図しない域までパラメータが行くことを防ぐことができる.


制度の比較

図より,学習済みデータとテストデータとの差が狭まっている.つまり過学習が抑制されている.

正規化のないグラフ

正規化したグラフf:id:forhighlow:20180611231443p:plain


正規化したグラフ

正規化したグラフf:id:forhighlow:20180611231321p:plain


参考

六本木で働くデータサイエンティストのブログ(https://tjo.hatenablog.com/entry/2015/03/03/190000)

過学習を防ぐ正則化 (https://www.techcrowd.jp/machinelearning/regularization/)

ゼロから作るDeepLearning

pdf埋め込み

ターミナルのコマンドで消す方法

ターミナルのコマンドで消す方法

Macの起動音を消す方法にコマンド実行による方法があります。Finderからアプリケーションを選択し、ユーティリティを開き、ターミナルを開きます。ターミナルを開いたら「sudo nvram SystemAudioVolume=%80」と入力します。

そしてパスワードを入力し実行すれば完了です。これでMacの起動音が消音になります。もし、Macの起動音を通常通りに戻したい場合は、同じようにターミナルを開いて「sudo nvram-d SystemAudioVolume」を入力します。

sudo nvram SystemAudioVolume=%80

戻すときは

sudo nvram-d SystemAudioVolume

http://minto.tech/mac-kidouon-kesu/

統計学全体の目次

本を買った

研究室仮配属したので,興味をそそられて買った.生協10%offで.

書籍詳細 - なぜあなたの研究は進まないのか? | メディカルレビュー社

重要だと感じたこと

本の中で(全部は読めていないが)重要だと感じたのは,分野全体についての知識だ.

研究分野の全体像を知ること,これを怠れば車輪を二度発明する(すでにあるものを生み出すことに労力を使う)ことになりかねない.

統計学

以下はwikipediaを参照した.

機械学習 - Wikipedia

統計学
標本調査 標本,母集団,無作為抽出,層化抽出法 |
要約統計学 連続データ | 位置 | \multicolumn{1}{c|}{平均(算術,幾何,調和),中央値,最頻値,階級値}
| 分散 | 範囲,標準偏差,変動係数,百分率
| モーメント | 分散,歪度,尖度
カテゴリーデータ | 頻度,分割表 | 頻度,分割表
統計的推測 仮説検定 | 帰無仮説 対立仮説 有意 棄却 ノンパラメトリック手法 スチューデントのt検定 ウェルチのt検定 カイ二乗検定 イェイツのカイ二乗検定 累積カイ二乗検定 F検定 G検定 マン・ホイットニーのU検定 Z検定 フィッシャーの正確確率検定 二項検定 尤度比検定 マンテル検定 コクラン・マンテル・ヘンツェルの統計量 ウィルコクソンの符号順位検定 アンダーソン–ダーリング検定 カイパー検定 ジャック–ベラ検定 シャピロ–ウィルク検定 コルモゴロフ–スミルノフ検定 分散分析 共分散分析
区間推定 | 信頼区間,予測区間
その他 | 最尤推定 最大事後確率 ベイズ推定 尤度関数カーネル密度推定 最小距離推定 メタアナリシス
生存時間分析 生存時間関数 カプラン=マイヤー推定量 ログランク検定故障率 比例ハザードモデル |
相関 相関交絡変数 ピアソンの積率相関係数 順位相関(スピアマンの順位相関係, ケンドールの順位相関係数) |
モデル 一般線形モデル 一般化線形モデル 混合モデル一般化線形混合モデル |
回帰 線形 | 線形回帰 リッジ回帰 Lasso エラスティックネット
非線形 | k近傍法 回帰木 ランダムフォレスト ニューラルネットワーク サポートベクター回帰 射影追跡回帰
分類 線形 | 線形判別分析 ロジスティック回帰単純ベイズ分類器 単純パーセプトロン 線形サポートベクターマシン |
二次 | 二次判別分析
非線形 | 非線形k近傍法 決定木 ランダムフォレスト ニューラルネットワーク サポートベクターマシン ベイジアンネットワーク 隠れマルコフモデル
その他 | 二項分類 多クラス分類 第一種過誤と第二種過誤
教師なし学習 クラスタリング | k平均法 (k-means++法)
その他 | 主成分分析 独立成分分析 自己組織化写像(SOM)

このように思った理由

これを読んで, qiita.com ここへ飛んで Deep Learning Monitor - Find new Arxiv papers, tweets and Reddit posts for you あまりにも分野が多岐にわたっていて応用事例だけ追うことも難しいと感じた. (そりゃキュレーション全部英語だよね,,,ともなりました)

これに肉付けして頭を整理していきたい.

MindMapを書くほうが良いかと思ったけれど,先に手を動かしてみた.