python学習note #2
とりあえず研究室から借りてきたpython本が普通に初心者殺しで、難易度高めだったのですが、とりあえず一周のんびり読み終えたのでちょっとだけ深掘りできるようにnoteにまとめていきます。
参考書籍
選んだ理由は研究室にpythonの本がこれしかなかったからです。
python初心者にはかなり難しい本
ちゃんと本にも書いてあるのですが、多少はpython触ってたりする人じゃないと、読み進めていくのが、というか初手で詰みます。
自分はpython初心者なので詰みかけました(プログラムの達人に教えてもらってなんとか耐えた感じです)
最初の難所は、「pythonは何でやれば良いのか?」という普通に壁にぶち当たります。自分はvscodeで始めました。(本当に悩んだ)
とりあえず検索して下のサイトを見て脱出(拡張機能は入れておくと便利だから最初は黙って入れておくと後で幸せを感じることができる)
最初の話題はスクレイピング
スクレイピングって何?っていうところだったので、そこら辺から検索して調べていきました。
スクレイピングをするためには、そのサイトのどの部分が欲しいのかも調べていかないといけないので、Google chromeの検証モードがすごく便利なのを感じる
Macの人のショートカットキー↓
特に本の中でもよく使ったライブラリの説明
Requests...HTTPライブラリでWebページを取得するためのもの
Selenium...ブラウザ操作をするためのもの
Beautiful Soup...取得したHTMLから情報を抽出するためのもの
このへんは比較的分かりやすいというか順序が決まっているので、頭に入れやすい
この後2章、3章もあったんですが、ログインのセッションをするところで断念して4章の機械学習に飛びました。
もう一つの話題 機械学習
機械学習の用語も調べてみる
人工知能、機械学習、深層学習の関係
人工知能(AI)には2種類あって、「記号処理的人工知能」、「非記号処理的人工知能」とあり機械学習はこの「非記号処理的人工知能」に含まれます。
特に機械学習には種類があり
・教師あり学習
「教師あり学習」は、事前に与えられたデータから、その「入力と出力の関係」を学習するアルゴリズムです。入力されるデータには、入力値とともに、あらかじめそのデータの正解が付与されています。まさしく正解が分かっているデータですから「教師ありデータ」と呼びます。
大量のデータを人間(教師)が用意し、それをプログラムに与えることで、プログラムは入力と出力の関係を学習します。一般的には、分類や予測は、教師あり学習を使うとよいと言われています。
・教師なし学習
「教師なし学習」は、人間(教師)から正解となる出力データを与えられることなく、入力データから、そのデータの構造、特性、新たな知見を学習するアルゴリズムです。学習する元となるデータには、正解がついていないにも関わらず、そのデータから特徴を見つけ出すことが可能となる様々な手法があります。
適切な手法を使うことにより、例え正解を教えられなくても、コンピュータが学習することができるようになりました。なお、この学習のために利用されるデータは、教師ありデータに対して「教師なしデータ」と呼ばれます。
・半教師あり学習
読んだ方が早そう
・強化学習
「強化学習」とは、 教師あり学習、教師なし学習のような固定的で明確なデータを元にした学習ではなく、プログラム自体が与えられた環境(=現在の状態)を観測し、各行動の、評価、を自ら更新していき、連続した一連の行動の結果、価値が最大化する(=報酬が最も多く得られる)行動を方法を自ら学習していきます。
機械学習の応用分野
クラス分類...迷惑メールの分類、手書き文字の認識、クレジットカードの不正検知
グループ分け クラスタリング...ユーザーの嗜好にあったダイレクトメール送信
推薦(Recommendation)...ネットショッピングのお勧め
回帰...販売予測、株価の変動、機器の異常検知
次元削除...割愛
ライブラリが多くてどれをやれば良いかわからない
下の質問を見る限り、考えることはみんな同じのようで、とりあえずsklearnから機械学習を感じると良いようだ
sklearnを使ったアヤメの機械学習の例があるので、気になる方は是非
sklearnは最後に近い行に、識別器の設定があるのでそこに注目すると
clf = svm.SVC()
svmとSVCというのがあります。これは、機械学習の手法の設定をしている箇所のようで、svmは”サポートベクターマシン”という機械学習の一手法のようです。
SVCは分類問題の際に使われるSVMのことで、SVCの他にもNuSVCやLinerSVCといったように色々な種類がある。
機械学習に使うアルゴリズムにも色々あって、SVM(サポートベクターマシン)とランダムフォレストがあるようだ。
何が違うのかと多分よく思うのだが、手軽に使えるのがランダムフォレスト、サンプル数が少ない時にも安定した精度に期待ができるのがSVMのようだ。
機械学習における成功とは?
ここで気になるが、「機械学習」における成功のような指標はどうやって決めて考えるのかという問題、その妥当性を決めるのによく使われるのが「クロスバリテーション」用は、決められたデータ集合を分割して学習データとテストデータに分けて、それの組み合わせを変えることを繰り返すことで、どのくらい機械学習の精度が良いかを考える指標とすることができるよう
また悪かったとしても、手法に対してたくさんのパラメータをいじることで、精度をあげることができそのパラメータさえも自動で調べてくれるのが「グリッドサーチ」というもの
今回はpythonで機械学習をするための下準備のような、回になりましたが結構頭の整理になりました。次に行きましょー
この記事が気に入ったらサポートをしてみませんか?