Comments

You must log in or register to comment.

mkzoucha t1_iy6jjjc wrote

Not necessarily depending on how much you want to tweak the algorithms. There are many no- or low-code tools available with basic algorithms available, such as Alteryx.

−1

dmart89 t1_iy6k204 wrote

No need to reinvent the wheel. Code is a tool to get to an outcome. if you can do it with packages, great.

54

ResponsibilityNo7189 t1_iy6ksf8 wrote

It might be good to code one thing completely from scratch. Why? because it might help you improve other's code, and give you the resilisence and skill to open up other's code and tinker with it. I have seen too many students only wanting to download code from github, and i feel that it is severely hampering their creativity, and thus their research impact. At one point you will have to produce some genuine code, and the coding from scratch will be helpful then.

2

underdog_scientist t1_iy6shuf wrote

Every paper is based on previous work. A paper is worthy of publishing when the new knowledge it presents is a significant contribution. If you can produce new knowledge faster by using existing code, why not do it?

38

KingsmanVince t1_iy6thin wrote

Nobody can do anything from scratch. Just look at repos of Microsoft on GitHub, they can't implement model without PyTorch (which is from Meta AI).

5

davidrodord92 t1_iy6u51d wrote

I'm in ML research too.

As some suggested don't reinvent the wheel if it is something already done, as academic researcher you will never compete with industrial researchers. They have tons of programmers focusing on optimizing algorithms and libraries.

But if your research is a suggestion of new equations or schemas you should probably try in order to publish it, but if you will use a technique in some part of the work or it's an application of technique in a forgotten area usea what works and add something than differentiates your work.

For example I'm working in time series forecasting, my suggestion so far is to use MODWT + stochastic + GRU instead of EEMD + LSTM, who knows if it will work I will not implement DWT or GRU from scratch

5

[deleted] OP t1_iy6v17f wrote

That’s true. I shouldn’t need to reinvent the wheel unless I feel as thought I need to develop something new. As of now, it doesn’t feel like I need to. I should continue with what I’m doing

3

davidrodord92 t1_iy6vi4u wrote

You can try to experiment with different techniques and libraries until you find an interesting solution maybe in that part you need to code something new.

But focus on what's the product of your research, with low inspection form advisor as in my case, it is very easy to start flying and working in many and none things at the time

1

impossiblefork t1_iy73ueq wrote

Everyone can do most stuff from scratch, they don't, because it's pointless to spend time implementing things like ADAM and making sure that it works precisely as it's supposed to when that's not what your research is about or optimizing matrix operations on the GPU, but it's perfectly doable.

People wrote ML stuff in C++ and CUDA as late as 2014. It's still reasonable to make people do things like that as exercises.

11

impossiblefork t1_iy747dz wrote

Yes, for research in time series analysis. For research in experimental psychology-- no.

It's unfortunate that the answer is no, because obviously fiddling with algorithms and the like is fun. It might not be harmful to implement some algorithms just to have done it either, if it makes sense time-wise, but then it'd be for learning.

1

chunzilla t1_iy75m1z wrote

There’s a saying that we “stand on the shoulders of giants”; if using a package enables you to make a new insight or discover something different, then use the darn package and be proud. People made those packages for other people to use, so that those people could discover something new that another person could then build upon later.

10

yuenz2 t1_iy7b8lj wrote

To complete the project: No, while you are playing with packages you should already been studying what it is capable of. Read the documentation of the packages and check the parameters, that is equivalent to coding experience since you are using it. Most importantly, the package you are using should align with your research goal and outcome.

Code from scratch is when you cant find resources from the internet to finish your work.

3

MootVerick t1_iy7dpg4 wrote

What now you are gonna use assembly to code now? May as well make your own processor? And chop your own wood? Farm your own food?

12

The_Real_RM t1_iy7guug wrote

Are you trying to develop new ml Algo or nn architectures that aren't supported? Are you trying to optimize performance? Doesn't sound like it. Your research is the insights you generate, the stuff you use is just tools, no need to get into the business of tool-making

PS: if you study CS then it would be worth it to be able to code things from scratch, and understand some of the patterns used in the ml field (as opposed to other CS ones)

1

kardanada t1_iy7itxz wrote

you certainly don't need to reinvent the wheel for this particular project. However I strongly advise you to code some algorithms from scratch while you are still undergrad. It will make you more confident in the future when you need to write something from scratch. Also I feel like I don't fully understand an algorithm unless I code it from scratch.

as a sidenote, I coded my own version of DTW for my grad thesis because I had to tweak it a little. It gave me a better idea for assessing its capabilities

1

IWantAGrapeInMyMouth t1_iy7nq8q wrote

OpenAI produces SOTA models somewhat regularly in a multitude of domains and they’ve been using PyTorch since 2020. One of the best reasons to use libraries is the sheer amount of people who work on those libraries. You get all efficiency improvements, quality of life implementations, etc…

3

ThunderTsuman t1_iy7qdl0 wrote

Implementing from scratch helps when your research needs something different. Not a bad skill. Plus all the debugging skills.

1

tripple13 t1_iy7s3vx wrote

Not at all.

There are in fact plenty of people who hack together something, a Frankenstein of OS-code in combination with other work found in githubs.

Its just hard to innovate if you're bound by the limits of your own understanding of whats going on. Not impossible, just immensely harder.

1

Firehead1971 t1_iy7udyg wrote

Nope. I mean you can do if you can. But I just used some Python packages and mixed them basically. So nothing from scratch. And also noone will ask you about your code. The result is the object of discussion not your source code.

1

Third-Engineer t1_iy7vetg wrote

No, not in experimental psychology on an undergrad level. Plug and chug my friend.

1

Ataru074 t1_iy7xav8 wrote

That isn’t how science works.

Is it useful to learn how to program these? Well, yes if you truly want to understand the mechanics of something and it’s limitations. In a way to understand that you should use a language as close to the bare metal as possible, such as C or Assembly.

In the same way it’s important to be able to work the math is you truly want to understand it.

But, at certain point you have to either become a researcher in “that” field, or trust the work of other researchers and move on.

I’m not saying you should blindly apply mathematical models to your data, you should at least know enough to know if the model is correct for your application, if you are covering the bases in terms of assumptions and so on…

Look at R itself, if you are using R for this job. When you install new packages the first thing that R does is check the dependencies and install the dependencies first, which might rely on other dependencies. Because nobody would be a fool enough to reprogram the whole thing from scratch.

1

davidswelt t1_iy83bei wrote

I would be concerned to read you coded many sub-tasks from scratch because without scrutiny, how would I trust that your method is implemented correctly? No statistical analysis in a paper ever is done from scratch... for good reasons...

1

[deleted] OP t1_iy86jmh wrote

So what I’m doing is trying to at least understand the backbone of the some of the algorithms and methods I’m using, so I know what the package is doing etc. if asked and be able to parse the result of the package

2

[deleted] OP t1_iy86oai wrote

Gotcha makes sense, I’m just at least trying to understand what the package does and a bit of theory for my understanding of the result of the package outputs as well

1

yuenz2 t1_iy89264 wrote

You could try challenging yourself to code the algo and see if its working the same, no one is stopping you.

Bonus: You can do 2 versions of your project, one is your own code and one is full of packages. Submit them together and state the comparisons in your research report, I guarantee you your grades will be different.

Since youre doubting yourself or still not feeling confident, why not just try it?

1

[deleted] OP t1_iy89kve wrote

That’s true. I should try it. A whole other problem for me is I’m trying to get better at “math to code” skills. I study mathematics and statistics and I can read and write proofs but translating things to code can sometimes be a bit of a hurdle for me at first. But this can help develop those skills I guess

1

yuenz2 t1_iy8aem6 wrote

I see, during my college days I had to convert mathematical formulas from papers into code myself too. I was doing algorithm benchmark and all sorts of benchmark functions were in mathematical form and theres no Python version of them on the internet.

What coding language are u using?

1

SleekEagle t1_iy8baee wrote

Never do work that someone else has already done unless they can't do it as well as you and that discrepancy matters

1

[deleted] OP t1_iy8kbxq wrote

Gotcha. Are their built in functions to do things like updating weights and calculating matrix differentiation? I’m really a newb when it comes to scientific programming.

1