線形回帰手法まとめ

概要 最近学んだ線形回帰手法の特徴についてまとめる. 具体的には,特定のデータセットに対して,重回帰(Ordinary Least Squares: OLS),リッジ回帰(Ridge Regression: RR),部分最小自乗回帰(Partial Least Squares: PLS)の3つの線形回帰手法を適用し,結果を考察する. 重回帰 説明変数$ X$および目的変数$ y$が与えられているとき, $ y = X b + e$ のように,目的変数が説明変数と回帰係数$ b$との線形結合によって表されているとするのが,線形回帰の考え方である. ここで,重回帰においては,残差$ e$の二乗和 $Q = e^T e$ が最小となるように回帰係数を決定する. 残差二乗和が最小となるときの回帰係数は $ b = ( X^T X)^{-1} X^T y$ として与えられることが知られている. リッジ回帰 重回帰では,$ X^T X$が逆行列を持たない場合,残差二乗和を最小化できない. これは,説明変数が線形従属である場合や,サンプル数が入力変数の数より少ない場合に対応する. また,説明変数が厳密に線形従属でなくても,変数間に強い相関がある場合には,回帰係数の分散が大きくなり,推定結果の信頼性が低下してしまう問題が起きる. これを,多重共線性の問題という. 回帰係数を小さく抑えるためのひとつの手法として,リッジ回帰が挙げられる. リッジ回帰においては,残差の二乗和に加えて,回帰係数の二乗和を加えた $Q’ = e^T e + \lambda b^T b$ が最小となるよう,回帰係数を決定する.ここで,$\lambda\ge0$を複雑度パラメータと呼ぶ. 残差二乗和が最小となるときの回帰係数は $ b = ( X^T X + \lambda I)^{-1} X^T y$ ...

January 30, 2015

モンテカルロ法で次元の呪い

概要 モンテカルロ法で次元の呪いを体験するを読んで,自分も最近似たような体験をしたことを思い出したので,メモしておく. 問題 $N$行$N$列の行列の各要素に$1$から$N$までの数字が入っているものとする. 各列,各行に数字の重複を許さない行列は全部で何通りあるかを推定せよ. はじめ,ランダムに$1$から$N$までの数字を格納した2次元配列を用意して,各行と列に重複がないかチェックし,重複がない試行の確率を求める方法をとった.以下,作成したPythonのコード(クソコードなのはご愛嬌). #! /usr/bin/env python # -*- coding: utf-8 -*- from numpy.random import * def check_overlap(args): for i in range(len(args)): if len(set(args[:,i])) < len(args[:,i]) or len(set(args[i,:])) < len(args[ i,:]): return False return True if __name__ == '__main__': N=4 #size of matrix M=100000000 #number of trial randarray = randint(1,N+1,(N,N,M)) count=0 for i in range(M): if check_overlap(randarray[:,:,i])==True: count = count+1 if i%100000==0: print(M-i,count) print( N**(N*N) * count / M ) この方法では,$N=4$あたりで現実的な解が得られなくなってしまった. より計算時間を減らすために,$1$から$N$までが格納された1次元配列の要素をランダムにシャッフルし,それを$N$個積み重ねることで,重複をチェックする方向を一方向だけにする方法をとった. ...

January 20, 2015

三菱重工のインターンシップに参加しました

概要 本格的就活シーズンの到来に先駆け,少し古い話になるが,今年の夏に三菱重工のインターンに参加したことについて備忘録を残す. おそらく社外秘につき触れてはいけない点が多々あるため,特に技術的な点については触れないことにする. なぜ三菱重工なのか 僕は制御工学を研究している. 制御工学は,対象が特定の形式でモデル化されていれば,(そのスケールに関わらず)それが制御可能であるか,可能であればどうすれば制御できるか,などをある程度体系的に取り扱う事ができる. 僕はこの分野横断的な要素に惹かれており,制御工学がどの程度大きな対象に対象にまで応用されているかに興味をもっていた. 重工系の企業を選んだのはこれが理由. そのなかで,三菱重工を選んだのは,単に自分のなかでもっとも有名な企業だったためと言ってしまってよい. あとはざっくりと社会人ってどういう感じなのか知りたかった. 研修内容 2週間,原子力発電所の運転訓練用シミュレータの保守作業にかかわらせてもらった. 原子力プラントの運転には高度な技術が必要であり,実際の発電所の近くには,訓練のための実機そっくりのプラントシミュレータが設置されている. シミュレータは,(制御的視点からみれば)プラント部とコントローラ部からなっている. プラントの動特性はある程度数理的にモデル化されており,また,コントローラは実際に用いられているロジックを移植することで構成されていた. 僕が携わったのは,制御器のなかの一部のロジックの変更作業. 所感 #社会にでることについて まず感じたことは,「社会人思ったより大変」ということ. 具体的には,毎日早起きして,満員電車に乗って,一日同じ机の上で作業し,夜に帰宅し,つぎの日を迎えるというサイクルははじめ地獄のように思えた. 天下に名を轟かせる大企業ですら,毎日朝から晩まで仕事しなくちゃいけないんだという考えてみたら当たり前の事実が,当時の僕を驚かせた. 裏を返せば,もっと待遇の悪い(残業漬け,土日出社など)会社なんてごまんとあるはずで,この辺は自分が順応していくしかないと思った. また,自分を苦しめた要因の一つが「サイクルの単調さ」にあったように思うので,就職するうえではある程度刺激的で流動的な仕事ができたらいいと感じた. 一方で安定を求めているのも確かで,バランスを考えていく必要を感じた. #学校で学んだこととの関わりについて 原子力にはさほど興味がなかったが,巨大さの象徴でもある発電プラントのなかで,制御工学がどの程度関わっているかということを知ることができた. 「じゃあどの程度か」と訊かれたら「ほんの一部」という答えになる. この辺をあまり詳しく書くと怒られるかもしれないが,大学院で学ぶ高度な制御理論は殆ど登場せず,はじめ少しがっかりした. しかしながら,配属先の部長さんの話を聞くうちに,目から鱗が落ちていくような気がした. というのも,彼は学生のとき僕と同じく理論ベースの制御を研究し,就職時に学問と実際とのギャップに落胆したとのこと. けれども,業務を通じて,「自分の専門」への固執が,ある意味で世界を狭めていたことに気づき,以後より広い目線を獲得していくことにつながった,という趣旨の話をしてくださった. このエピソード以外にも,貴重な時間を割いてたくさん含蓄ある話を聞かせてもらい,少し大袈裟かもしれないが「この人の下でなら仕事をしたい」と思えるくらい,魅力を感じた. 12月現在,自分の研究に対しての素養が十分でないとわかりつつある今,就職は人で決めたいと思う理由のひとつになっている. 今後どうするか インターンで得る情報がかなり有益であることに気づいたので,できれば別の会社を訪問し,比較検討したいと考えている.

December 4, 2014

ヴルカヌス・イン・ヨーロッパに採択された

概要 理系の大学生,大学院生を対象にした,1年間の奨学金付きインターンプログラム. 日欧産業協力センター(以下センター)によって実施されている.詳しくはこちらを参照. ヴルカヌス・イン・ヨーロッパ 採択されたのはベルギーのSiemens Industry Software NVという企業. 今回は応募の経緯と,採択に至る過程を簡単に紹介しようと思う. 経緯 4月に他大学院に進学.環境が変わることで,刺激的な出会いがたくさんあった. そのなかでも修士2年から留学に行くという研究室の友人に触発され,海外経験の必要を感じていたこともあり,応募するだけならタダ,という気楽な考えで応募した. 友人や,その友人の留学生に英文の書類作成や面接練習を手伝ってもらったおかげで,選考を生き残ることができて,徐々に覚悟を決めていった,という次第. 過程 採用は1次選考,2次選考,3次選考と進んでいく. 1次は書類選考.志望動機書と推薦書をそれぞれ和文,英文で作成して,センターに郵送する. 2次は面接.東京の会場にてグループディスカッションと個人面接を行う. 3次は企業の人事の方と直接電話面接.研修内容の確認などを行う. 一番驚いたのは,2次の面接に合格したこと.というのも,僕は特に英語が得意というわけでもなく,本番でも面接官の質問にほとんど答えられなかったから. 後から考察するに,おそらく研究分野が候補となる企業の業務内容とマッチしていたことが大きかったんじゃないかと思う. あとはわからない質問には沈黙するんじゃなくて,単語のつぎはぎでもいいからとにかく喋ること. 語学力というより,話そうとする意思を見せたことがよかったのかもしれない. ちなみに,グループディスカッションのテーマは「たこ焼きをヨーロッパで得るための企業戦略を考えよ」みたいな感じだった. 個別面接では好きな漫画を尋ねられたので,即座に『HUNTER×HUNTER』と返答したが,誰もご存知なかったようで焦った. 1次,3次についても,参考までに,ぼく(もといぼくの友人とその友人の留学生)が作成した書類の一部を公開したいと思う. 1次選考志望動機(和文) プログラム参加志望理由 私の目標は世界を舞台に活躍するエンジニアになることです. より具体的には,日本の重工業またはプラントエンジニアリング企業の研究開発部門などに所属し,海外の大きなプロジェクトに携わるなかで,技術面から業界に一定の貢献をしていくことです. 後述する制御工学を専攻する中で,私は巨大なシステムをどのように設計し,動作させるかに興味をもち,このようなキャリア設計をするに至りました. 貴プログラムを通じて得るものは「外国語でのコミュニケーション」「未知の環境での研究開発」など目標達成のために不可欠な経験であるばかりでなく,欧州での文化的生活を体験することは,私の価値観を広げてくれると予感します. また,欧州諸国には,ドイツのシーメンス社やフランスのシュナイダー社,スイスのABB社など,規模・技術の両面で日本に先行する企業が数多くあるため,私は将来そうした企業の人たちと積極的に関わり,協力・競争したいと考えています. そのため,私の目標と,貴プログラムの目的である「将来の日欧関係を担う若者育成」はマッチするといえます. 大学,大学院での専門分野 現在私はシステム科学を専攻し,その中でも制御工学を研究対象にしています. 制御工学とは,制御対象への入力を工夫することにより,その出力を自由に操作することを目指す学問です. ここでの制御対象とは,機械系,電気系,化学プロセス系,生物系など,産業上重要なあらゆるシステムを含みます. また本学問では,対象を数式でモデル化したうえで,制御手法を統一的な枠組みで議論することができます. このような応用の可能性と,理論の簡明性が,本学問の魅力だと考えます. 現在私は,制御信号に離散値しか用いることができない場合に対する,制御手法の研究をおこなっています. このような制約は産業上よくある要請であり,意義のある研究だといえます. 私が提案する制御手法では,信号に確率的な雑音を意図的に付加することで,制御性能を改善することができます. これは,制御器に乱数生成器を取り付けるだけで実装できる,コストパフォーマンスに優れた手法です. 自分はどのように受入企業へ貢献できるか はじめに,私は研究者としての素質を備えています. 私は前述の研究内容に関して一定の成果を上げており,これまで学会発表を国内で2件,国外で1件おこなったほか,国内でもっとも権威ある学会に論文が採択されました. これらは勉学に関する地道な下積みなしには達成できない成果です. また,私は技術者として一定のスキルを備えています. 具体的にはシミュレーション,実機実験,データ分析などをはじめとする,研究活動に必要なひと通りの作業を経験しています. また,C, Python, Matlabなどのプログラミング言語を扱うことができます. 1次選考志望動機(英文) Motivation to take part in this program. My life goal is to be the engineer leading the world. Specifically, I will belong to the department of research and development in the heavy industry or plant engineering company and execute the big project that have a big effect on all over the world. I studied on control engineering in Osaka University and Kyoto University profoundly, and also got interested in designing and controling a huge system. This is why I have decided to apply for this program. ...

November 25, 2014